将变量作为标记传递给ansible角色不起作用

时间:2017-07-24 19:52:59

标签: ansible ansible-2.x ansible-role

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

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

我的site.yml有一个名为" manager"的ansible角色。我将ACTION变量作为标签传递给它。见下文。

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

经理角色的任务/ 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,并将其用于工作?

1 个答案:

答案 0 :(得分:0)

您无法将标签作为参数传递到Playbook中的角色。您在这里有效做的是为您的经理角色添加另一个标记(renewal, gen_cert)。

不使用变量定义标记,而是使用--tags标记。

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