主機與組
/etc/ansible/hosts 檔案的格式與windows的in配置檔案類似:
node2:/root/.ssh#cat /etc/ansible/hosts
[webservers]
192.168.137.2
115.236.19.4:9998
node2:/root#ansible all -m ping
192.168.137.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
115.236.19.4 | SUCCESS => {
"changed": false,
"ping": "pong"
}
方括号[]中是組名,用于對系統進行分類,便于對不同系統進行個别的管理。
一個系統可以屬于不同的組,比如一台伺服器可以同時屬于webserver組合dbserver組。
這時屬于兩個組的變量都可以為這台主機所用
如果有主機的SSH端口不是标準22端口,可在主機名之後加上端口号,用冒号分隔.SSH配置檔案中列出的端口号
不會在paramiko連接配接中使用,會在openssh連接配接中使用
端口号不是預設設定時,可明确的表示為:
badwolf.example.com:5309
假設你有一些靜态IP位址,希望設定一些别名,但不是在系統的host檔案中設定,
又或者你是通過隧道在連接配接,那麼可以設定如下:
對于每一個host,你還可以選擇連接配接類型和連接配接使用者名:
node2:/root#cat /etc/ansible/hosts
[webservers]
192.168.137.2
115.236.19.4:9998
[app01]
120.26.224.164 ansible_connection=ssh ansible_ssh_user=oracle
node2:/root#ansible -i /etc/ansible/hosts app01 -m shell -a "hostname"
120.26.224.164 | FAILED | rc=-1 >>
using -c ssh on certain older ssh versions may not support ControlPersist, set ANSIBLE_SSH_ARGS="" (or ssh_args in [ssh_connection] section of the config file) before running again
You have mail in /var/spool/mail/root
node2:/root#ansible -i /etc/ansible/hosts app01 -m shell -a "hostname"
120.26.224.164 | SUCCESS | rc=0 >>
oadb
所有以上的對于inventory檔案的設定一種速記法,後面我們會讨論如何将這些設定儲存為
'host_vars' 目錄中的獨立檔案
主機變量
分檔案定義Host和Group 變量
在inventory主檔案中儲存所有的變量并不是最佳的方式。 還可以儲存在獨立的檔案中,這些獨立檔案與
inventory檔案保持關聯。
假設inventory 檔案的路徑為:
/etc/ansible/hosts
假設有一個主機名為'foosball',主機同時屬于兩個組,一個是'raleigh';另一個是'webservers'.
那麼以下配置檔案(YAML格式)中的變量可以為'fooball'主機所用,依次為'raleigh'的組變量;
webservers的組變量,'foosball'的主機變量: