Ansible 支持使用变量来更好地定制任务和玩本的执行,从而可以使用相同的玩本与不同的目标和环境。
变量可以来自不同的来源,例如播放簿文件本身或被导入播放簿的外部变量文件。
要看看变量在实践中是如何工作的,我们将创建一个新的测试图书,它将打印两个变量的值,‘用户名’和‘home_dir’。
1nano ~/ansible-practice/playbook-02.yml
然后将以下行添加到新播放簿文件中:
1[label ~/ansible-practice/playbook-02.yml]
2---
3- hosts: all
4 vars:
5 - username: sammy
6 - home: /home/sammy
7 tasks:
8 - name: print variables
9 debug:
10 msg: "Username: {{ username }}, Home dir: {{ home }}"
保存并关闭文件,当你完成编辑。
游戏簿的vars
部分定义了将被注入到该游戏的范围内的变量列表.所有任务,以及可能包含在游戏簿中的任何文件或模板,都将可以访问这些变量。
要在您的库存文件的服务器上尝试此播放本,请运行ansible-playbook
,使用您在运行我们的第一个示例时之前使用的相同连接参数。
1ansible-playbook -i inventory playbook-02.yml -u sammy
你会看到这样的输出:
1[secondary_label Output]
2
3PLAY [all] ***********************************************************************************************************************************************************************************
4
5TASK [Gathering Facts] ***********************************************************************************************************************************************************************
6ok: [203.0.113.10]
7
8TASK [print variables] ***********************************************************************************************************************************************************************
9ok: [203.0.113.10] => {
10 "msg": "Username: sammy, Home dir: /home/sammy"
11}
12
13PLAY RECAP ***********************************************************************************************************************************************************************************
14203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
打印变量
任务将使用调试
模块来打印我们在游戏簿的vars
部分中定义的两个变量的值。