我是新的Ansible以及Ubuntu系统也。我想传递多个变量从.sh文件到. yml。我有计划存储所有的输入变量在一个数组中,然后传递变量一个接一个使用for循环,同时调用文件distributed-setup.yml
。
目前,我正在尝试传递一个变量。为此,我遵循以下步骤。
1.在执行First.sh
文件时,我传递了First.sh Input.yaml
之类的变量
First.sh
文件如下所示
echo $1
ansible-playbook distributed-setup.yml --extra-vars="v:$1" -${1:-v} | tee output.txt
- Distributed-setup.yml
---
- name: Executing slaves
hosts: slave
gather_facts: no
vars:
v: "{{lookup('env','v') }}"
contents: "{{ lookup('file','/home/ubuntu/Ansible-setup/Distributed-Ubuntu-Setup/Input/Input.yaml') | from_yaml }}"
log: "{{ contents['log'][0] }}"
timeout: "{{ contents['ansible-timeout'][0] }}"
行中内容:我需要使用变量'v'而不是Input.yaml。
这怎么办?
2条答案
按热度按时间70gysomp1#
最简单的方法之一是通过环境
然后,在Ansible代码中,您可以引用
ansible_env.someVar
。您也可以使用export
变量,而无需在同一行中定义它。为了使您的用例更加具体:
...并在您的Ansible文件中:
2exbekwf2#
下面是在其他变量中使用变量
v
的方法:v
将获取现有环境varv
的值,然后在稍后的任务中将其用于varb
,以防万一创建了另一个名为contents
的变量,其值为b
,在本例中使用set_fact对于测试,请执行以下操作:
它会将
v
设置为foo
,然后在/tmp/foo
中创建一个包含当前日期的文件(date
命令的输出)