ansible角色作为命令行arg

时间:2015-10-04 18:53:04

标签: ansible

有没有办法将角色传递给ansible-playbook cli作为命​​令行arg?

这有效:

 roles:
    - common
    - web

我跑的时候:

ansible-playbook -i hosts site.yml

我试过了:

roles:
      - $role1
      - $role2

然后跑了:

ansible-playbook -i hosts site.yml --extra-vars="roles=common"

ansible-playbook -i hosts site.yml --extra-vars "roles=common"

但没有成功

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用tags执行此操作。您可以单独标记每个角色,或使用相同的标记标记角色组,然后在命令行上指定一个或多个标记以指示您要运行的那些。

以下是标记角色的方式:

roles:
  - { role: webserver, tags: [ 'web', 'apache' ] }
  - { role: webapp, tags: [ 'web', 'app' ] }

在此示例中,如果在运行此playbook时指定--tags = web,则将运行这两个角色中的所有任务。如果仅指定了标记apacheapp,则仅运行相应角色中的任务。当然,如果没有指定标签,那么一切都会运行。