如何在AnsiblePlaybook中使用变量
来自菜鸟教程
Ansible 支持使用变量来更好地自定义任务和剧本的执行。 通过这种方式,可以将相同的剧本用于不同的目标和环境。
变量可以来自不同的来源,例如剧本文件本身或剧本中导入的外部变量文件。 特殊优先规则 将适用于定义同名变量的多个变量源。
为了了解变量在实践中是如何工作的,我们将创建一个新的测试手册,它将打印两个变量的值,username
和 home_dir
。 在 ansible-practice
目录中创建一个名为 playbook-02.yml
的新文件:
nano ~/ansible-practice/playbook-02.yml
然后将以下行添加到新的剧本文件中:
~/ansible-practice/playbook-02.yml
--- - hosts: all vars: - username: sammy - home: /home/sammy tasks: - name: print variables debug: msg: "Username: {{ username }}, Home dir: {{ home }}"
完成编辑后保存并关闭文件。
playbook 的 vars
部分定义了将在该 play 范围内注入的变量列表。 所有任务以及可能包含在 playbook 中的任何文件或模板都可以访问这些变量。
要从您的清单文件中在服务器上尝试此 playbook,请使用您之前在运行我们的第一个示例时使用的相同连接参数运行 ansible-playbook
。 同样,我们将使用名为 inventory
的清单文件和 sammy 用户连接到远程服务器:
ansible-playbook -i inventory playbook-02.yml -u sammy
你会看到这样的输出:
Output PLAY [all] *********************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************** ok: [203.0.113.10] TASK [print variables] *********************************************************************************************************************************************************************** ok: [203.0.113.10] => { "msg": "Username: sammy, Home dir: /home/sammy" } PLAY RECAP *********************************************************************************************************************************************************************************** 203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
print variables
任务将使用 debug
模块打印我们在 playbook 的 vars
部分中定义的两个变量的值。