如何在 Ansible Playbooks 中使用变量


该系列的一部分:
如何编写 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剧本部分定义的两个变量的值

觉得文章有用?

点个广告表达一下你的爱意吧 !😁