Ansible 之旅(十一) Ansible Inclusions

Ansible Inclusions

在我们写代码的时候为了能够使代码能够复用,可以将相关的代码封装成函数,通过调用函数即可重复利用之前的代码,除了函数这种形式,在 Java 和 Python 中通常还会使用 import 来导入相关的 Packages ,来减轻相关的工作量,也更加容易管理。那么在 Ansible 上是否也存在这样的操作呢?答案可定是有的。

当使用很长且复杂的 Playbooks 时,管理员可以将 Tasks 和变量分成更小的部分,以便容易管理和编写。有多种方法在 Playbook 中引入 Tasks 文件和变量:

tasks:
  - name: Include tasks to install web server
    include: tasks/web_server.yml

tasks:
  - name: Include the variables from a YAML or JSON file
    include_vars: vars/variables.yml

Including Tasks

在下面的情况中,将 Playbooks 中的 Tasks 设置成单独的文件是非常合适的:
1、如果新的服务器需要完成配置,管理员可以创建各种各样的 Tasks 来创建用户、安装软件、配置服务、配置权限、设置共享文件系统的访问权限,安装安全更新,并安装代理或监控,关于上面的每一点都可以通过一个独立的 Tasks 文件进行管理。

2、如果服务器是由开发人员、系统管理员、数据库管理员共同去管理的,那么每个部门可以编写自己部门的 Tasks ,然后这些 Tasks 由系统管理员去审核和集成。

3、如果服务器在特定的情况下需要一个特定的 Tasks ,那么可以集成为基于条件的一组任务,当条件得到满足时,引入 Tasks 并且执行。

4、如果是一组服务器需要运行特定的 Tasks ,那么可以在相应的祖中引入 Tasks,这样这个 Tasks 只会在这个组中的主机上执行。

在 Playbook 当中使用了 Include 指令来指定引入哪个 Tasks 文件,如果原先 Tasks 文件中存在变量,如果此时需要更改变量的话,可以使用 var 指令。
var 可以设置引入的 Tasks 中使用的变量,并且会覆盖 Playbook 、inventory 、registered 以及 Tasks 中使用的 Facts 变量。

tasks:
  - name: Include the tasks file and define the variables
    include: environment.yml
    vars:
      package: mairiadb-server
      service: mariadb

Including Variables

在 Playbook 中除了可以引入 Tasks 文件外,同样还可以引入变量,方法有多种:(具体可查看Ansible 变量这一节内容)
1、Inventory 变量定义在 inventory 文件中,或者定义到 host_vars 或 group_vars 目录文件中。

2、通过 Facts 或 registerd 来设置变量。

3、通过 var 或者 var_files 使用外部文件来定义在 Playbook 文件中的 Playbook 变量。

最后修改:2019 年 11 月 12 日 06 : 06 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论