如何只运行Ansible剧本的一个角色?

MBu*_*eld 10 ansible ansible-2.x ansible-role

我有一个site.yml,它导入了几个剧本.

- import_playbook: webservers.yml
- ....
Run Code Online (Sandbox Code Playgroud)

每个剧本都"称呼"了几个角色:

- name: apply the webserver configuration 
  hosts: webservers

  roles:
  - javajdk
  - tomcat
  - apache
Run Code Online (Sandbox Code Playgroud)

我怎样才能只运行javajdk角色?

这将运行所有角色...... ansible-playbook -i inventory webservers.yml

我知道有标签,但我如何将它们分配给一般角色呢?

tec*_*raf 9

标签是自然的方式.以下三种为角色指定它们的方法:

- name: apply the webserver configuration 
  hosts: webservers

  roles:
    - role: javajdk
      tags: java_tag
    - { role: tomcat,  tags: tomcat_tag }

  tasks:
    - include_role:
        name: apache
      tags: apache_tag
Run Code Online (Sandbox Code Playgroud)

参考文档

  • 一个有关如何使用标签运行“ ansible-playbook”的示例将使这成为一个更好的答案。 (3认同)