如何将变量组合成新变量?

时间:2015-10-14 22:17:00

标签: ansible

我在自定义角色中定义了Ansible任务:

- name: Connect to db
  script: "shell.sh --url={{ db_conn }}"

在playbook中定义的变量 db_conn

 vars : 
  db_host: "localhost"
  db_port: 5432
  db_conn: "http://{{ db_host }}:{{ db_port }}"

Ansible以错误终止:

  

变量将新参数插入模块args。如果变量包含相同的符号,请务必引用变量(例如:" {{var}}")。

1 个答案:

答案 0 :(得分:2)

这是variable precedence的问题。我猜你在角色的db_conn文件中定义了vars/main.yaml变量? 如果是,则db_conn被视为角色变量,并且优先于 playbook vars (不会被 playbook vars )。

使用您想要覆盖的变量创建角色时,请确保将它们定义为defaults,以确保它们不仅会被覆盖,而且可以清楚地与其他您想要覆盖它们的人通信。

以防万一文档不够,here is the source code which defines variable precedence from github