item是循環變量,參考node
變量名僅能由字母、數字和下劃線組成且只能以字母開頭。 linux
facts是由正在通訊的遠程目標主機發回的信息這些信息被保存在ansible變量中。要獲取指定的遠程主機所支持的全部facts可以使用以下命令進行
ansible hostname -m setup 這個命令能夠得到被監控端主機的各類信息將這些信息獲得後保存到變量中。 shell
自定義變量
在 yaml 中能夠使用vars關鍵字來定義變量
vars:
var_name: value bash
變量的引用
{{ var_name }} ide
特殊的變量迭代
當有須要重複性執行的任務時能夠使用迭代機制。其使用格式爲將須要迭代的內容定義爲item變量引用並經過with_items語句來指明迭代的元素列表便可。 code
示例
例如在被控端添加 2 個用戶 rem
方式1通常作法 it
方式2使用變量方式 class
方式3使用迭代方式 test
建立兩個用戶
[root@linux-node1 create_user]# cat c_u.yml - hosts: db remote_user: root tasks: - name: add several users user: name={{ item }} state=present groups=wheel with_items: - testuser1 - testuser2 - name: add several users user: name={{ item.name }} state=present groups={{ item.groups }} with_items: - { name: 'testuser1', groups: 'wheel' } - { name: 'testuser2', groups: 'root' }
執行
[root@linux-node1 create_user]# ansible-playbook c_u.yml PLAY [db] ****************************************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************************** ok: [192.168.182.129] TASK [add several users] *************************************************************************************************************************** changed: [192.168.182.129] => (item=testuser1) changed: [192.168.182.129] => (item=testuser2) TASK [add several users] *************************************************************************************************************************** ok: [192.168.182.129] => (item={u'name': u'testuser1', u'groups': u'wheel'}) changed: [192.168.182.129] => (item={u'name': u'testuser2', u'groups': u'root'}) PLAY RECAP ***************************************************************************************************************************************** 192.168.182.129 : ok=3 changed=2 unreachable=0 failed=0
[root@linux-node1 create_user]# ansible db -m shell -a 'grep test* /etc/passwd' 192.168.182.129 | SUCCESS | rc=0 >> testuser1:x:3308:3308::/home/testuser1:/bin/bash testuser2:x:3309:3309::/home/testuser2:/bin/bash