如果我在ansible配置中指定标记,Vagrant将忽略这些标记

如果我在ansible配置中指定标记,Vagrant将忽略这些标记,vagrant,ansible,Vagrant,Ansible,我有一个非常简单的ansible配置: - name: Prepare and intsall RethinkDB on available machines hosts: all roles: - { role: rethinkdb, tags: ["install"] } 以及相应的流浪者配置: universe.vm.provision "ansible" do |a| a.playbook = "configuration.yml" a.groups = {

我有一个非常简单的ansible配置:

- name: Prepare and intsall RethinkDB on available machines
  hosts: all
  roles:
    - { role: rethinkdb, tags: ["install"] }
以及相应的流浪者配置:

universe.vm.provision "ansible" do |a|
  a.playbook  = "configuration.yml"
  a.groups = {
    "primary"   => ["rmaster"],
    "secondary" => ["rsecondary"]
  }
end

问题是,如果我调用
vagrant provision
ansible runs
referencedb
角色忽略
configuration.yml
file
install
tag中指定的。虽然如果我将其作为
a.tags=“install”
放入vagrant中,它可以工作,但是如果我有一系列ansible任务要使用不同的标记运行,它将不起作用,因此我想从ansible playbook中指定它们。

据我所知,playbook不可能定义角色将运行的角色标记。
标记:[“安装”]
所做的是将
install
标记分配给
db
角色(“”)中的任务

如果您的安装、配置、启动等标记按顺序运行,那么您应该能够将它们分派到不同的(可能的)角色。如果不是,那么您唯一的其他解决方案是使用变量值而不是标记来运行单个任务

例如:

角色/db/tasks/main.yml
中:

  - name: my_task
    when: run_rethinkdb_install
- name: Prepare and intsall RethinkDB on available machines
  hosts: all
  vars:
    run_rethinkdb_install: True 
  roles:
    - { role: rethinkdb, tags: ["install"] }
playbook.yml
中:

  - name: my_task
    when: run_rethinkdb_install
- name: Prepare and intsall RethinkDB on available machines
  hosts: all
  vars:
    run_rethinkdb_install: True 
  roles:
    - { role: rethinkdb, tags: ["install"] }

你能更准确地描述你期望的行为吗?您是只运行带有
install
标记的任务,还是只运行某些角色?@RégisB。是的,我有一个角色<;代码>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;&。。。我想让流浪汉单独管理你找到问题的答案了吗?