playbook的編寫應遵循yaml格式的語法web
列表 - 字典 k:v 後綴名爲 .yaml 或 .yml # 簡單示例 - hosts: web # 主機ip/分組名 remote_user: root # 用戶身份 tasks: - name: installlxml # 任務名 pip: name=lxml # 使用的模塊: 參數 # 注: 執行時使用ansible-playbook xx.yml
# 1. 直接給playbook傳參 - hosts: web remote_user: root tasks: - name: installl{{ module_name }} pip: name={{ module_name }} # 2. 在playbook中以vars方式傳參 - hosts: web remote_user: root vars: - module_name: requests tasks: - name: installl{{ module_name }} pip: name={{ module_name }} # 注: 執行時使用ansible-playbook -e module_name xx.yml # 3. 在/etc/ansible/hosts 文件中傳參 [web] 192.168.80.128 module_name=requests 192.168.80.129 module_name=flask # 注: 執行時使用ansible-playbook xx.yml # 4. 在/etc/ansible/hosts 文件中以[分組名:vars]方式傳參 [web] 192.168.80.128 192.168.80.129 [web:vars] module_name=requests # 5. 利用上次任務的結果傳值 - hosts: web remote_user: root tasks: - name: sum shell: echo 2+2|bc register: user - name: create{{ user }} user: name=nihao{{ user.stdout }} # 注: 執行時使用ansible-playbook xx.yml # 須要先進行 yum -y install bc 操做 # 五種傳參方式的優先級 -e > vars > hosts
# 只執行playbook中部份內容 - hosts: web # 主機ip/分組名 remote_user: root # 用戶身份 tasks: tasks: - name: installlxml # 任務名 pip: name=lxml # 使用的模塊: 參數 tags: 標籤名 # 注: 執行時使用ansible-playbook -t 標籤名 xx.yml
- hosts: web remote_user: root tasks: - name: install yum: name=reids tags: install - name: copyfile template: src=redis.conf.j2 dest=/etc/redis.conf tags: copyfile - name: startredis service: name=redis state=started tags: start # 注:redis.conf.j2文件是一個包含jinja2語法的redis.conf文件,經過配合template完成根據主機ip, 動態設置redis.conf中bind ip # redis.conf.j2 bind {{ ansible_default_ipv4.address }}
- hosts: web # 主機ip/分組名 remote_user: root # 用戶身份 tasks: tasks: - name: installlxml # 任務名 pip: name=lxml # 使用的模塊: 參數 when: num==1 # 條件判斷,由於when語法緣由不須要寫成{{ num }} == 1 # 注: 執行時使用ansible-playbook xx.yml
# 循環建立nihao, hello, hah三個用戶 - hosts: web # 主機ip/分組名 remote_user: root # 用戶身份 tasks: tasks: - name: createUser # 任務名 user: name={{ item }} with_items: - nihao - hello - hah # 注: 執行時使用ansible-playbook xx.yml # 建立用戶並指定組 - hosts: web # 主機ip/分組名 remote_user: root # 用戶身份 tasks: tasks: - name: creategroup group: name={{ item.group }} - name: createUser # 任務名 user: name={{ item.name }} group={{ item.group }} with_items: - { name: nihao, group: niao} - { name: hello, group: hello} - { name: hah, group: hah}
- hosts: cache remote_user: root tasks: - name: install yum: name=redis tags: install - name: copyfile template: dest=/etc/redis.conf src=redis.conf.j2 tags: copyfile notify: restart redis # 此任務執行完後,執行handler - name: startredis service: name=redis state=started tags: start handlers: - name: restart redis service: name=redis state=restarted