ansible-playbook變量的使用

ansible-playbook中使用變量的方式有以下幾種。

1、在/etc/ansible/hosts中定義,如下:
[testhost]
192.168.217.120 package=httpd # 普通變量
192.168.217.121 package=git
[testhost:vars] 
package=httpd # 組變量

在這種方式中,普通變量的優先級高於組變量的優先級。組變量主要用於在主機組內的主機都使用相同的變量的情況下。
驗證這個變量是否生效:

[root@localhost playbook]# ansible testhost -a "echo {{ package }}"
192.168.217.121 | SUCCESS | rc=0 >>
git

192.168.217.120 | SUCCESS | rc=0 >>
httpd

在play-book中引用變量安裝相應的包:

[root@localhost playbook]# cat var_hosts.yml 
---
- hosts: testhost
  remote_user: root

  tasks:
    - name: install  package
      yum: name={{ package }} state=present

執行ansible-playbook

[root@localhost playbook]# ansible-playbook var_hosts.yml 

PLAY [testhost] ************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************
ok: [192.168.217.121]
ok: [192.168.217.120]

TASK [install  package] ****************************************************************************************************************************
ok: [192.168.217.121]
changed: [192.168.217.120]

PLAY RECAP *****************************************************************************************************************************************
192.168.217.120            : ok=2    changed=1    unreachable=0    failed=0   
192.168.217.121            : ok=2    changed=0    unreachable=0    failed=0   
2、在play-book中定義
[root@localhost playbook]# cat var.yml 
---
- hosts: dbservers
  vars:
    package: git

  tasks:
    - name: install package
      yum: name=git state=present

執行ansible-playbook便可得到 驗證:

[root@localhost playbook]# ansible-playbook -C var.yml 

PLAY [dbservers] ***********************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************
ok: [192.168.217.121]

TASK [install package] *****************************************************************************************************************************
ok: [192.168.217.121]

PLAY RECAP *****************************************************************************************************************************************
192.168.217.121            : ok=2    changed=0    unreachable=0    failed=0  
3、將變量寫入文件文件中:

此時對目錄結構有要求

[root@localhost playbook]# cd /etc/ansible/
[root@localhost ansible]# tree
.
├── ansible.cfg
├── group_vars
│   └── testhost.yaml
├── hosts
├── host_vars
│   └── 192.168.217.120.yaml
└── roles

3 directories, 4 files

[root@localhost ansible]# cat group_vars/testhost.yaml 
mysql_port: 3307

[root@localhost ansible]# cat host_vars/192.168.217.120.yaml 
mysql_port: 3306

[root@localhost ansible]# ansible testhost -a "echo {{ mysql_port }}"
192.168.217.121 | SUCCESS | rc=0 >>
3307

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