0

我将变量 ACTION 传递给 site.yml,如下所示。

ansible-playbook -v -i  sslhost.txt -e "APP_NAME=ssl-perf ACTION=renewal, gen_cert"  site.yml

我的 site.yml 具有称为“经理”的 ansible 角色,我将 ACTION 变量作为标签传递给该角色。见下文。

more site.yml
- hosts: "{{APP_NAME}}"
  user: "{{USER}}"
  roles:
   - { role: manager, APPLICATION_NAME: "{{ APP_NAME }}", tags: [ '{{ ACTION }}' ]  }

manager 角色的 tasks/main.yml 看起来像这样

more manager/tasks/main.yml
---
# tasks file for manager

- include: manager_pull.yml
  tags: renewal
- include: manager_gen.yml
  tags: gen_request
- include: manager_gencert.yml
  tags: gen_cert
- include: manager_push.yml
  tags: install

我期望只有 manager_pull.yml 和 manager_gencert.yml 包含在角色中,但输出显示经理角色中的所有包含都被包含/调用。

我的ansible版本是:2.1.0.0

你能解释一下为什么我不能将 ACTION 变量作为标签传递给 ansible 角色吗?

或者,任何人都可以告诉我是否以及如何将标签而不是 ACTION 变量传递给 site.yml 并让它工作?

4

1 回答 1

0

您不能将标签作为参数传递给剧本中的角色。您在这里有效地做的是为您的经理角色添加另一个标签 ( renewal, gen_cert)。

不要使用变量定义标签,而是使用--tags标志。

ansible-playbook -v -i sslhost.txt -e "APP_NAME=ssl-perf" --tags=renewal,gen_cert site.yml

于 2017-07-24T20:21:01.237 回答