Ansible:将variables设置为文件内容
我正在使用ec2模块与ansible-playbook
我想设置一个variables的文件的内容。 以下是我目前正在做的事情。
- Var与文件名
- shell任务来
cat
该文件 - 使用
cat
的结果传递给ec2模块。
我的剧本的例子内容。
vars: amazon_linux_ami: "ami-fb8e9292" user_data_file: "base-ami-userdata.sh" tasks: - name: user_data_contents shell: cat {{ user_data_file }} register: user_data_action - name: launch ec2-instance local_action: ... user_data: "{{ user_data_action.stdout }}"
我认为有一个更简单的方法来做到这一点,但我找不到它searchAnsible文档。
您可以在Ansible中使用查找来获取文件的内容,例如
user_data: "{{ lookup('file', user_data_file) }}"
以下是文档中的一个完整示例 :
- hosts: all vars: contents: "{{ lookup('file', '/etc/foo.txt') }}" tasks: - debug: msg="the value of foo.txt is {{ contents }}"
您可以使用获取模块将文件从远程主机复制到本地, 查找模块读取获取文件的内容。
查找只适用于本地主机。 如果要从远程使用include_vars的variables文件中检索variables: {{ varfile }}
。 {{ varfile }}
应该是{"key":"value"}
forms的字典,如果在冒号后面包含空格,会发现ansible会给您带来麻烦。