如何只运行Ansible剧本中的一个角色?
我有一个site.yml,它导入了几个剧本如何只运行Ansible剧本中的一个角色?,ansible,ansible-2.x,ansible-role,Ansible,Ansible 2.x,Ansible Role,我有一个site.yml,它导入了几个剧本 - import_playbook: webservers.yml - .... 每个剧本“调用”几个角色: - name: apply the webserver configuration hosts: webservers roles: - javajdk - tomcat - apache 如何仅运行javajdk角色? 这将运行所有角色。。。 ansible playbook-i目录Web服务器.yml 我知道有标
- import_playbook: webservers.yml
- ....
每个剧本“调用”几个角色:
- name: apply the webserver configuration
hosts: webservers
roles:
- javajdk
- tomcat
- apache
如何仅运行javajdk角色?
这将运行所有角色。。。
ansible playbook-i目录Web服务器.yml
我知道有标签,但通常我如何将它们分配给某个角色?标签是自然的选择。为以下角色指定它们的三种方式:
- 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
您可以明确指定要运行的标记:
ansible-playbook example.yml --tags "java_tag"
这将在任务级别定义标记、细化内容或在使用角色的位置定义标记,但通常不会将标记分配给角色。如果该角色在其他剧本中使用,则该角色将不具有标签。当然,这是两种不同的方法,只是希望genearl方法也有可能。坦率地说,我不知道你想在评论中说什么。很抱歉我不清楚,坦白地说,我会再试一次。当我看上面的例子时,你的答案很好。现在后退一步,想象第二个剧本也使用了-role:javajdk(无标记),因为第二个剧本在逻辑上不会使用标记过滤器现在的问题是,是否可以将标记分配给角色(仅一次,一个位置),以便对标记进行筛选。唯一的好处是避免每次使用角色时都给它分配标签。我现在明白你的意思了。幸运的是(!)你不容易做到。举个例子,说明如何使用标签运行
ansible playbook
,这将是一个更好的答案。