带有角色标签的 ansible import_playbook

标签 ansible tags roles

我有具有多个角色的 setup.yml:

setup.yml:

- hosts: localhost
  roles:
    - { role: file-download, tags: files }
    - { role: setup-nginx, tags: nginx}
    - { role: restart-vm, tags: restartvm }
    - { role: file-upload, tags: upload}
    - { role: intall-vm, tags: installvm}
    - { role: create-backup, tags: backup}
    

从命令行我可以运行:

ansible-playbook -i inventory setup.yml --tags=nginx 
ansible-playbook -i inventory setup.yml --tags=restartvm 

如何将_playbooks导入到new.yml playbook并仅运行具有标签nginxrestartvm的角色?

new.yml:

- import_playbook: setup.yml --tags=nginx
- import_playbook:setup.yml --tags=restartvm 

我收到以下错误:

ERROR! Invalid variable name in vars specified for PlaybookInclude: '--tags' is not a valid variable name

感谢帮助

最佳答案

这行不通。您只能使用包含 playbook 的 yaml 文件名来提供 import_playbook

来自the doc :

The name of the imported playbook is specified directly without any other option.

但是,如果在您的 new.yml 中,您只需具有 import_playbook: setup.yml ,然后将标记指定为 ansible-playbook选项,它将完成工作:

ansible-playbook -i inventory new.yml --tags=my_tag

关于带有角色标签的 ansible import_playbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63939537/

相关文章:

memory - 使用 ansible 添加交换内存

debugging - 如何检查注册变量在ansible中是否具有特定模式?

ansible - 如何从文件中读取环境

html - 单击时如何使缩略图 <image> 显示全尺寸图像?

SVN - 当您标记工作副本时,它仍然是廉价副本吗?

c# - 'User.IsInRole' 中的多个角色

asp.net-mvc - 避免在 MVC 中硬编码角色?

Ansible "when statement should not include jinja2 templating"

java - 如何在另一个 JSP 自定义标记内获取 JSP 自定义值

mysql - 如何检查用户是否有权限?