ansible 變數,群組,主機三者綜合實例演練
以下範例真不好理解,我用白話先說明再看較容易懂,個人小建議是先想想,好的程式都得分類模組化,依此思路才會容易學:
1.首先我想將有帳/密,port基本資料先放在 all.yml 的檔,因是統一設定故放在一個叫group_vars的目錄較好管理
2.主機為了好管理我們亦建一個目錄叫host_vars,主機可一台一個檔亦可多台一個檔,都叫 host1.yml,host2.yml...依此類推
3.資產清單 建inventory目錄下檔案 hosts,每次都必需指定,結構是第一行是[群組]中括號以下各主機名
4.main.yml 透過 hosts 及 inventory 連結各檔案的變數,群組,主機,將 user,password,http帶出
綜合實例演練
建一個群組group_vars檔案叫 all.yml
ansible_user: xxxx #不是四叉貓哦
ansible_password: xxxx
ansible_connection: ssh
http_port: 80
建一個主機群 host_vars
一個叫 host1.yml
ip_addr: 192.168.0.69
一個叫 host2.yml
http_port: 443
ip_addr: 192.168.0.70
建一個資產清單 inventory/hosts,抓以上二個 hosts yml,群組是抓 all.yml
[all]
host1
host2
建一個主程式 main.yml 如下:
- name: Hello World
hosts: all
gather_facts: no
tasks:
- name: test vars
debug:
msg: "ansible_user= {{ ansible_user }}, ansible_password= {{ ansible_password }} http_port= {{ http_port }}"
執行以下指令:
ansible-playbook -i inventory/hosts main.yml
成功便會產出以下畫面:由各個功能檔案成功帶出變數
TASK [test vars] *********************************************************************************************************************************************************************************************
ok: [host1] => {
"msg": "ansible_user= xxxx, ansible_password= xxxx http_port= 80"
}
ok: [host2] => {
"msg": "ansible_user= xxxx, ansible_password= xxxx http_port= 443"
}
PLAY RECAP ***************************************************************************************************************************************************************************************************
host1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
host2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0