參考至官方文件,官方文件包含了清單檔案的 yaml 寫法在通過 ansible 操作目標主機之前,你需要先在 inventory(主機清單)中配置目標主機資訊。
預設情況下主機清單儲存在系統的 /etc/ansible/hosts 檔案中,你也可以通過命令列選項指定其它的清單檔案 -i
。
主機清單配置預設格式為 ini,下面是乙個主機清單配置例子:
[web]
web1
web2
192.168
.199
.165
上述配置中方括號為組名,web1 和 192.168.199.165 為被監控主機的網域名稱或 ip。也可以是主機名,但此時需要指定主機 ip 環境變數
[web]
node ansible_host=
192.168
.199
.172
預設採用金鑰認證,如果沒有金鑰認證,那麼你需要配置主機密碼環境變數
[web]
www.abc.com1 ansible_user=root ansible_password=
123456
你也可以對指定組下的主機進行統一的環境變數配置:
6379如果主機名或 ip 是有序有規則的,你還可以採用數字或字元範圍格式,而不是列出每個主機名:
[webservers]
www[
01:50
].example.com
[databases
]db-
[a:f]
.example.com
組還支援繼承(巢狀),其格式為 組名+":children" 組成,如下:
[shenzhen]
host1
host2
[guangzhou]
host3
host4
[guangdong:children]
shenzhen
guangzhou
[guangdong:vars]
tomcat=
192.168
.8.8
nginx=
192.168
.8.66
apache=
192.168
.8.77
zabbix=
192.168
.8.88
[china:children]
guangdong
beijing
shanghai
上面我指定了深圳組有 host1、host2,廣州組有host3、host4。廣東組包含深圳和廣州,同時為該組內的所有主機指定了四個環境變數。後又設定了乙個中國組,包含廣東、北京、上海。
所有主機都屬於兩個隱式的組:
環境變數除了寫在主機清單檔案中,還可以單獨儲存在單個檔案中。
我們可以在主機清單檔案的同級目錄中建立兩個目錄 「group_vars」 和 「host_vars」,分別儲存組變數與主機變數檔案。
如我們在主機清單檔案中宣告了組 test,此時在 group_vars 目錄下建立乙個名為 test 的檔案(該檔案為 yaml 格式),其內容如下:
tomcat: 192.168
.8.8
此時 test 組中的主機將會包含 tomcat 這個環境變數。
當 「group_vars」 或 「host_vars」 外部環境變數檔案與主機清單檔案中的環境變數衝突時,前者優先順序更高。
ansible 定義了一些固定的環境變數名,這些環境變數將會影響 ansible 的行為。
ansible_connection #主機連線型別,這可以是任何 ansible 連線外掛程式的名稱,如 smart、ssh、paramiko、local
ansible_ssh_host # 將要連線的遠端主機名.與你想要設定的主機的別名不同的話,可通過此變數設定.
ansible_ssh_port # 連線埠號(預設22)
ansible_ssh_user # 連線主機時的使用者名稱
ansible_ssh_pass # 用於驗證主機的密碼
ansible_ssh_private_key_file # ssh 使用的私鑰檔案.適用於有多個金鑰,而你不想使用 ssh **的情況.
ansible_ssh_common_args # 此設定附加到 sftp,scp 和 ssh 的預設命令列
ansible_sftp_extra_args # 此設定附加到預設 sftp 命令列
ansible_scp_extra_args # 此設定附加到預設 scp 命令列
ansible_ssh_extra_args # 此設定附加到預設 ssh 命令列
ansible_ssh_pipelining # 確定是否使用 ssh 管道。 這可以覆蓋 ansible.cfg 中得設定
ansible_shell_type # 目標系統的 shell 型別,預設情況下命令的執行使用 'sh' 語法,可設定為 'csh' 或 'fish'
ansible_python_interpreter # 目標主機的 python 路徑,適用於的情況: 系統中有多個 python, 或者命令路徑不是"/usr/bin/python",比如 *bsd, 或者 /usr/bin/python
ansible_interpreter # 這裡的""可以是 ruby、perl 或其他語言的直譯器,作用和ansible_python_interpreter 類似
ansible_shell_executable # 這將設定 ansible 控制器將在目標機器上使用的 shell,覆蓋 ansible.cfg 中的配置,預設為 /bin/sh
ansible指定其他主機清單配置檔案
預設情況下主機清單儲存在系統的 etc ansible hosts 檔案中 當主機分組不同時可以指定其他的主機清單檔案,避免配置檔案很臃腫 你也可以通過命令列選項指定其它的清單檔案 i root zabbix server 10 29 ansible vim centos c75 192.168.7...
主機清單,ansible模組
1 基於密碼的方式 root localhost vim etc ansible hosts web01 192.168.13.20 ansible ssh user root ansible ssh port 22 ansible ssh pass 1 web02 192.168.15.100 a...
Ansible2 主機清單
ansible 通過讀取預設的主機清單配置 etc ansible hosts,可以同時連線到多個遠端主機上執行任務,預設路徑可以通過修改 ansible.cfg 的 hostfile 引數指定路徑。對於 etc ansible hosts最簡單的定義格式像下面 1 簡單的主機和組 mail yan...