1. 管理機密
- 目標:使用ansible vault加密敏感變量,並運行vault加密變量文件的playbook
- ansible vault :ansible可能需要訪問密碼或者api密鑰等敏感數據,以便配置主機。
- 加密解密工具:ansible-vault命令
注:ansible vault不實施自有的加密函數,而使用外部python工具集
1.1 創建加密文件
方法:
ansible-vault create filename
需要輸入密碼
創建加密文件同時將密碼保存,密碼文件中必須先寫入密碼
1.2 查看加密文件
方法:
ansible-vault view filename
1.3 編輯現有的加密文件
原理:將文件解密爲一個臨時文件,並編輯;保存時,複製內容並刪除臨時文件
注:edit命令始終重寫文件,因此只有在更改文件時使用,查看盡量使用view
1.4 加密現有的文件
方法:
ansible-vault encrypt filename #filename參數可以是多個
可以使用--output=filename將加密文件保存爲新的名稱,使用此參數時輸入文件只能是一個
1.5 解密現有的文件
方法:
ansible-vault decrypt filename
1.6 更改加密文件密碼
方法:
ansible-vault rekey filename
'可以一次更新多個文件密碼'
使用vault密碼文件時,最好使用--net-vault-password-file
playbook和ansible vault
運行加密的playbook,沒有密碼則報錯
交互式提供密碼
注:2.4版本之前的ansible,使用--ask-vault-pass提供交互式密碼
也可以將密碼存在文件中(注意使用文件系統權限對文件進行保護)
2. 管理事實
事實包括:
主機名稱、內核版本、網絡藉口、IP地址等
2.1 描述ansible事實
查看主機信息
ansible-playbook fact.yml
再將事實替換爲動態的值
ansible事實作爲變量注入
使用setup模塊顯示所有事實信息
ansible server1.huayu.com -m setup
關閉事實收集,開提升執行速度
[root@workstation~]#cat user.yml
運行
2.2 創建自定義事實
可以使用INI格式或者JSON格式
INI格式
JSON格式
自定義格式不能使用ymal格式,使用最爲接近的json最好
[root@workstation~]#mkdir /etc/ansible/facts.d
vim custom.fact #必須以.fact結尾
ansible localhost -m setup
注:自定義事實的使用方式和默認事實相同
使用魔法變量
常用的有四個:
- hostvars #包含受管主機的變量,可以用於獲取另一臺受管主機的變量的值
- group_names #列出當前受管主機所屬的所有組
- groups #列出清單中的所有組和主機
- inventory_hostname#包含清單中配置的當前受管主機的主機名稱
用途之一:使用debug模塊報告特定主機的hostvars的值
運行
[root@workstationdata-facts]#ansible-playbook playbook.yml