Ansible之管理機密與事實

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章