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:包含清單中配置的當前受管主機主機名稱。這可能因為各種原因而與事實報告的主機名稱不同。