该系列的一部分:
如何编写 Ansible Playbooks
Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。
Ansible 支持使用变量来更好地自定义任务和剧本的执行。这样,就可以对不同的目标和环境使用相同的剧本。
变量可以来自不同的来源,例如剧本文件本身或剧本中导入的外部变量文件。当使用定义同名变量的多个变量源时,将应用特殊的优先规则。
为了了解变量在实践中是如何工作的,我们将创建一个新的测试手册,该手册将打印两个变量的值,username以及home_dir. playbook-02.yml在您的ansible-practice目录中创建一个名为的新文件:
- 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 }}"
完成编辑后保存并关闭文件。
vars剧本的部分定义了将在该剧本的范围内注入的变量列表。所有任务,以及可能包含在剧本中的任何文件或模板,都可以访问这些变量。
要在您的清单文件中的服务器上尝试此剧本,ansible-playbook请使用您之前在运行我们的第一个示例时使用的相同连接参数运行。同样,我们将使用名为清单文件inventory与萨米用户连接到远程服务器:
- 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模块打印我们在vars剧本部分定义的两个变量的值。