1. 常用文件模块有哪些?
答:ansible.builtin中的常用文件模块:
-blockinfile:插入、更新或删除由可自定义标记线包围的多行文本块。
-copy:将文件从本地或远程计算机复制到受管主机上的某个位置。与file模块一样,copy模块还可以设置文件属性,包括SELinux上下文。
-fetch:此模块的作用和copy模块类似,但以相反方式工作。此模块用于从远程计算机获取文件到控制节点,并将它们存储在按主机名组织的文件树中。
-file:设置权限、所有权、SELinux上下文以及常规文件、符号链接、硬链接和目录的时间戳等属性。此模块还可以创建或删除常规文件、符号链接、硬链接和目录。其他多个与文件相关的模块支持与f1ile模块相同的属性设置选项,包括copy模块。
-lineinfile:此模块可以在更改文件中的某一行时使用。
-stat:检索文件的状态信息,类似于Linux stat命令。
ansib le.posix中的常用文件模块:
-patch:通过GNU patch将补丁应用到文件。
-synchronize:围绕rsync命令的打包程序可加快和简化常见任务。
2.模块有哪些用例?
答:ansible.builtin.file模块用于确保受管主机上存在文件,如果不存在则创建一个空文件,如果存在,则更新其修改时间;
ansible.builtin.file模块用于修改文件属性,确保新的或现有的文件具有正确的权限和SELinux类型;
ansible.builtin.copy模块用于将控制节点上Ansible工作目录中的文件复制到选定的受管主机;
ansible.builtin.fetch模块用于从受管主机检索文件;
lineinfile模块用于确保现有文件中存在特定的单行文本;
ansible.buitin.blockinfile模块用于将文本块添加到现有文件;
使用ansible.builtin.file模块和state:absent 参数从受管主机中删除文件;
ansible.builtin.stat模块用于检索受管主机上的文件状态,检索文件的事实,类似于Linux stat命令;
ansible.posix.synchronize模块用于同步控制节点和受管主机之间的文件,包括同步目录。
3.什么是Jinja2模板?
答:Jinja2 模板是动态自定义文件部署,通过动态逻辑(变量、条件、循环)实现文件的个性化生成,以.j2为文件扩展名。
Jinja2模板由多个元素组成有数据、变量和表达式。在呈现Jinja2模板时,这些变量和表达式被替换为对应的值。模板中通过{{变量名}}引用变量,使用的变量可以在playbook的vars部分中指定。可以将受管主机的事实用作模板中的变量。
4.Jinja2 核心语法与用法
答:循环语句:通过{% for 元素 in 列表 %}...{% endfor %}遍历列表生成重复内容(如配置文件中的多个模块、节点)。
条件判断:通过{% if 条件 %}...{% elif 条件 %}...{% else %}...{% endif %}实现基于变量的动态内容生成。
5. .Jinja2过滤器
答:通过 | 使用过滤器对变量进行处理(格式化、转换等),如
to_json:筛选条件使用JSON格式化表达式输出,{{output I to_json 3}}
to_yaml:筛选条件则使用YAML格式化表达式输出,{{output | to_yaml}}。