【Ansible】管理变量和事实知识点
1.Ansible变量名由什么组成?
答:变量名必须以字母开头,且只能含有字母、数字和下划线。
2.定义变量的方法及变量的优先级?
答:按优先级从低到高排列: 在清单中定义的组变量 <
在清单或playbook所在目录的group_vars子目录中定义的组变量 <
在清单中定义的主机变量 <
在清单或playbook所在目录的host_vars子目录中定义的主机变量 <
在运行时中发现的主机事实 <
(vars和vars_files)playbook中的play变量 <
任务变量 <
在命令行中使用--extra-vars或-e选项定义的定义的额外变量
3.如何在Playbook中定义并使用变量?
答:定义变量:一种方式是将变量放在play开头的vars块中,也可以在外部文件中定义playbook变量。此时不使用playbook的play中的vars块,可以改为使用vars_f1les指令,后面跟上相对于playbook位置的外部变量文件名称。
使用变量:将变量名放在双括号且用双引号括住,如”{{变量名}}”
4.什么是Ansible Vault,如何使用?
答:Ansible Vault用来加密任何由Ansible使用的数据文件。这可能包括清单变量、playbook中含有的变量文件、在执行playbook 时作为参数传递的变量文件,或者Ansible角色中定义的变量。若要使用Ansible Vault,可通过一个名为ansible-vauLt的命令行工具创建、编辑、加密、解密和查看文件。
5. Ansible Vault中的常用操作?
答:创建加密的文件:使用ansible-vault create f1lename 命令,可以使用Vault密码文件来存储Vault密码,而不是通过标准输入途径输入Vault密码。您需要使用文件权限和其他方式来严密保护该文件。如ansible-vault create-vault-password-file=vault-pass secret.yml
查看加密的文件:使用ansible-vault view f1lename命令
编辑现有的加密文件:使用ansible-vault edit filename命令
加密现有的文件:使用ansible-vauLt encrypt filename命令
解密现有的文件:使用ansible-vault decrypt filename命令永久解密。在解密单个文件时,可使用--output选项以其他名称保存解密的文件。
更改加密文件的密码:使用ansible-vauLt rekey filename命令更改,需要输入原始密码。
6.什么是Ansible事实?
答:Ansible自动收集的受管主机信息(如 IP 地址、操作系统、硬件配置等),存储在ansible_facts变量中。事实中含有与主机相关的信息,可以像play中的常规变量、条件、循环或依赖于从受管主机收集的值的任何其他语句那样使用。也可以创建自定义事实,借助事实,可以方便地检索受管主机的状态,并根据该状态确定要执行的操作。
7.如何引用和控制事实收集?
答:引用事实:通过{{ ansible_facts['事实名'] }}或之前版本形式{{ ansible_事实名 }},如{{ ansible_hostname }}获取主机名
控制事实收集:若想禁用收集,在 play 中设置gather_facts: no(提升执行效率)。
手动更新事实:使用setup模块(ansible 主机 -m setup)。
8.有哪些常见的魔法变量?
答:魔法变量是用于获取与特定受管主机相关的信息的特殊变量,常见如下
-hostvars:包含受管主机的变量,可以用于获取另一台受管主机的变量的值。如果还没有为受管主机收集事实,则它不会包含该主机的事实。
-group_names:列出当前受管主机所属的所有组。
-groups:列出清单中的所有组和主机。
-inventory_hostname:包含清单中配置的当前受管主机主机名称。这可能因为各种原因而与事实报告的主机名称不同。