2015-10-14 41 views
1

我Ansible任务自定义角色定义:如何将变量组合到新变量中?

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

可变db_conn在剧本中定义:

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

Ansible终止与错误:

A variable inserted a new parameter into the module args. Be sure to quote variables if they contain equal signs (for example: "{{var}}").

+0

我似乎无法使用您所展示的内容重现此操作。你是如何设置你的剧本和角色的?你使用什么版本的Ansible? – ydaetskcoR

+0

@ydaetskcoR同样也有同样的问题:) –

+0

1.9.3在mac os,node - CentOS 7 – Vyacheslav

回答

2

这是一个问题variable precedence。我猜你在你的角色的vars/main.yaml文件中定义了db_conn变量? 如果是,则db_conn被认为是一个作用可变,并且具有更高的优先级比剧本瓦尔(不会被剧本被覆盖瓦尔)。

当您想要覆盖的变量创建角色时,请确保它们被定义为defaults,以确保它们不仅被覆盖,而且与其他人清楚地沟通,意图让他们被覆盖。

为防万一你的文档不够用,here is the source code which defines variable precedence from github