在 --extra-vars 中传递数组 - Ansible [英] Pass array in --extra-vars - Ansible
问题描述
如何将 yaml 数组传递给 Ansible playbook 中的 --extra-vars
.Ansible 文档没有声明其语法,我也无法在任何互联网资源上找到它.
How can I pass yaml array to --extra-vars
in Ansible playbook. Ansible documentation does not declares its syntax nor I can find that on any internet resource.
我的意思是如果我有剧本:
I mean if I have a playbook:
---
- hosts: {{hostName}}
- remote_user: admin
...
那么我应该像这样称呼我的剧本
Then I should call my playbook like
ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"
但我想在两台服务器上运行这个剧本,比如 tomcat-webApp
和 tomcat-all
,我想从外面控制它,即使用 --extra-vars
.我试图做的是:
But I want to run this playbook on two servers say tomcat-webApp
and tomcat-all
, and I want to control it from out side i.e. using --extra-vars
. What I have tried to do is:
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}]"
但在所有情况下,剧本都无法在我的调用中声明语法错误.任何帮助表示赞赏.
But in all cases playbook fails declaring a syntax error in my call. Any help appreciated.
推荐答案
回答您的第一个问题如何将 yaml 数组传递给 Ansible playbook 中的 --extra-vars."您可以将 json 格式的字符串传递给 extra-vars.
To answer your first question "How can I pass yaml array to --extra-vars in Ansible playbook." you can pass in a json formatted string to extra-vars.
这是一个例子:
- hosts: all
gather_facts: no
tasks:
- debug: var=test_list
以及如何将 test_list 传递给 ansible-playbook:
And how to pass in test_list to ansible-playbook:
ansible-playbook -c local -i localhost, test.yml --extra-vars='{"test_list": [1,2,3]}'
虽然您可以为主机使用变量,但我建议您查看 Ansible 的主机管理机制,即 inventory 与--limit
选项.
Though you can use a variable for hosts I recommend checking out Ansible's mechanism for host management which is inventory in conjunction with the --limit
option.
这篇关于在 --extra-vars 中传递数组 - Ansible的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!