Tar*_*riq 46 yaml ansible-playbook
如何将yaml数组传递给--extra-varsAnsible playbook.Ansible文档没有声明它的语法,也没有在任何互联网资源上找到它.
我的意思是如果我有一本剧本:
---
- hosts: {{hostName}}
- remote_user: admin
...
Run Code Online (Sandbox Code Playgroud)
然后我应该把我的剧本称为
ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"
但我想运行这个剧本在两台服务器上说tomcat-webApp和tomcat-all,我想从出方控制它即使用--extra-vars.我试图做的是:
ansible-playbook DeployWar.yml --extra-vars="hostName=[tomcat-webApp, tomcat-all]"
ansible-playbook DeployWar.yml --extra-vars="hostName={tomcat-webApp, tomcat-all}"
ansible-playbook DeployWar.yml --extra-vars="[{hostName: tomcat-webApp}, {hostName: tomcat-all}]"
Run Code Online (Sandbox Code Playgroud)
但在所有情况下,playbook都无法在我的调用中声明语法错误.任何帮助赞赏.
jar*_*arv 39
回答你的第一个问题"如何将yaml数组传递给Ansible playbook中的--extra-vars".你可以将json格式的字符串传递给extra-vars.
这是一个例子:
- hosts: all
gather_facts: no
tasks:
- debug: var=test_list
Run Code Online (Sandbox Code Playgroud)
以及如何将test_list传递给ansible-playbook:
ansible-playbook -c local -i localhost, test.yml --extra-vars='{"test_list": [1,2,3]}'
Run Code Online (Sandbox Code Playgroud)
虽然您可以将变量用于主机,但我建议您查看Ansible的主机管理机制,该机制与该选项一起是库存--limit.
Iva*_*gai 11
从Ansible 1.3开始,额外的变量可以在命令行或文件中格式化为YAML.请参阅标题为在命令行上传递变量的Ansible文档.
来自链接: - extra-vars"@ some_file.json"
也许,不要尝试通过命令行传递复杂类型并在剧本中从 json 文件或字符串处理它们的创建。
所以,@NelonG 的方法有效,但它如何在所有执行上下文中工作?我的剧本往往由 Jenkins 作业通过 ansiblePlaybook 和打包器执行。让以下所有这些(即使命令行看起来正确)都不起作用,并且可能导致逃避噩梦。
ansible -i localhost, all -m debug -a "var=test_list" \
--extra-vars='{"test_list": [1,2,3]}'
Run Code Online (Sandbox Code Playgroud)
如何作为字符串传入然后通过 set_fact 拆分(注意:这仅适用于您的元素没有有问题的字符。我有 URL,因此它们相当安全
ansible .... -e "test_list_csv=1,2,3,http://foo.bar/file.txt"
Run Code Online (Sandbox Code Playgroud)
在剧本中
name: generate list from string
set_fact:
test_list: "{{ test_list_csv.split(',') | list }}"
Run Code Online (Sandbox Code Playgroud)
我决定逃避逃避,这似乎奏效了。
除了jarv的回答之外,这是我的救世主注释:
如果有人想传递一个整数数组,这可以工作:
--extra-vars '{"my_params":[40,50,10,20,30]}'
Run Code Online (Sandbox Code Playgroud)
注意:您传递的数组中的数字之间不应有空格!删除空间解决了我的问题!
| 归档时间: |
|
| 查看次数: |
63605 次 |
| 最近记录: |