1. ansible-任務控制tags介紹
如果你有一個大型的劇本,那么只能運行它的特定部分而不是在劇本中運行所有內容可能會很有用。因此,Ansible支持“tags:”屬性。
執行playbook時,可以通過兩種方式根據 “tags” 過濾任務
-
- 在命令行上,使用或選項“--tags或 --skip-tags ”
- 在ansible配置設置中,使用和選項“TAGS_RUN 或 TAGS_SKIP”
標簽可以應用於Ansible中的許多結構(參見下面的“標簽繼承”),但最簡單的用途是單獨的任務。以下是使用不同標記標記兩個任務的示例:
1 tasks: 2 - yum: 3 name: "{{ item }}" 4 state: present 5 loop: 6 - httpd 7 - memcached 8 tags: 9 - packages 10 11 - template: 12 src: templates/src.j2 13 dest: /etc/foo.conf 14 tags: 15 - configuration
如果您只想運行一個非常長的劇本的“配置”和“包”部分,您可以在命令行上使用該選項:--tags
1 ansible-playbook example.yml --tags "configuration,packages"
另一方面,如果要在沒有某些標記任務的情況下運行playbook ,可以使用命令行選項:--skip-tags
1 ansible-playbook example.yml --skip-tags "packages"
2. ansible-任務控制實例
1)編寫一個nginx的tags控制版本
1 [root@test-1 bin]# vim /ansible/nginx/bin/nginx_tags.yaml 2 [root@test-1 bin]# cat /ansible/nginx/bin/nginx_tags.yaml 3 - hosts: web1 4 remote_user: root 5 vars: 6 hello: Ansible 7 8 tasks: 9 - name: Add repo 10 yum_repository: 11 name: nginx 12 description: nginx repo 13 baseurl: http://nginx.org/packages/centos/7/$basearch/ 14 gpgcheck: no 15 enabled: 1 16 tags: 17 - yum install 18 19 - name: Install nginx 20 yum: 21 name: nginx 22 state: latest 23 tags: 24 - yum nginx install 25 26 - name: Copy nginx configuration file 27 copy: 28 src: /ansible/nginx/conf/site.conf 29 dest: /etc/nginx/conf.d/site.conf 30 - name: Start nginx 31 service: 32 name: nginx 33 state: started 34 - name: Create wwwroot directory 35 file: 36 dest: /var/www/html 37 state: directory 38 - name: Create test page index.html 39 shell: echo "hello {{hello}}" > /var/www/html/index.html
2) 檢查配置文件是否正確
1 [root@test-1 bin]# ansible-playbook --syntax-check nginx_tags.yaml 2 3 4 playbook: nginx_tags.yaml
3) 執行文件
包括tags 標簽的執行的
1 [root@test-1 bin]# ansible-playbook nginx_tags.yaml --tags "yum nginx install" 2 [WARNING]: log file at /var/log/ansible/ansible.log is not writeable and we cannot create it, aborting 3 4 5 PLAY [web1] ************************************************************************************************************************************ 6 7 TASK [Gathering Facts] ************************************************************************************************************************* 8 ok: [192.168.200.133] 9 ok: [192.168.200.132] 10 11 TASK [Install nginx] *************************************************************************************************************************** 12 ok: [192.168.200.133] 13 ok: [192.168.200.132] 14 15 PLAY RECAP ************************************************************************************************************************************* 16 192.168.200.132 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 17 192.168.200.133 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
不包括tags內的以外的執行
1 [root@test-1 bin]# ansible-playbook nginx_tags.yaml --tags "yum install,yum nginx install" 2 [WARNING]: log file at /var/log/ansible/ansible.log is not writeable and we cannot create it, aborting 3 4 5 PLAY [web1] ************************************************************************************************************************************ 6 7 TASK [Gathering Facts] ************************************************************************************************************************* 8 ok: [192.168.200.133] 9 ok: [192.168.200.132] 10 11 TASK [Add repo] ******************************************************************************************************************************** 12 ok: [192.168.200.133] 13 ok: [192.168.200.132] 14 15 TASK [Install nginx] *************************************************************************************************************************** 16 ok: [192.168.200.133] 17 ok: [192.168.200.132] 18 19 PLAY RECAP ************************************************************************************************************************************* 20 192.168.200.132 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 21 192.168.200.133 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0