【发布时间】:2016-05-04 07:56:26
【问题描述】:
我正在编写一个包含剧本的大师级 Ansible 剧本。现在,我想设置其中指定的所有剧本使用的变量。如何在此剧本中指定变量? 我知道其中一个选项是包含 vars_files 并将其与每个剧本一起使用。示例:- 包括:abc.yml vars_files: vars.yml
我正在使用 Ansible 1.9.3。
【问题讨论】:
我正在编写一个包含剧本的大师级 Ansible 剧本。现在,我想设置其中指定的所有剧本使用的变量。如何在此剧本中指定变量? 我知道其中一个选项是包含 vars_files 并将其与每个剧本一起使用。示例:- 包括:abc.yml vars_files: vars.yml
我正在使用 Ansible 1.9.3。
【问题讨论】:
首先,我真的会推荐你 update 你的 Ansible 到最新版本。这样做很容易,没有理由落后。
话虽如此,有很多方法可以在您的主剧本中指定变量。所有这些都或多或少与任何其他剧本相同。简单提一下:
一个。 Define他们在你的剧本中
- hosts: webservers
vars:
http_port: 80
b. Separating 到一个变量文件中,正如你已经说过的:
- hosts: all
remote_user: root
vars:
favcolor: blue
vars_files:
- /vars/external_vars.yml
vars/external_vars.yml
somevar: somevalue
password: magic
其他可能性包括:
c。 Using facts
d。 Registering output into variables
另外,这对您的情况可能很重要:
d。你可以pass variables into includes:
tasks:
- include: wordpress.yml wp_user=timmy
- include: wordpress.yml wp_user=alice
- include: wordpress.yml wp_user=bob
e。路过variables in command line:
ansible-playbook release.yml -k "version=1.23.45 other_variable=foo"
-k 是--exra-vars 的简写。
目前我可能还缺少其他方法。
【讨论】: