如何在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 部分中定义的两个变量的值。