根据 yaml 文件使用 ansible 在主机上部署

根据 yaml 文件使用 ansible 在主机上部署

开发人员将提供一个 yaml 文件,其中主机按特定顺序排列(每个部署可能有所不同,具体取决于需求),并且 yaml 文件中的每个字段都将包含说明,例如安装 yum 包。我将获取此信息并针对 yaml 文件中给出的特定标志的每个主机运行 ansible。遍历 yaml 文件的最佳实践是什么?我应该针对每个字段执行 ansible-playbook 还是应该使用 ansible 中的查找功能?

答案1

Ansible 的常用模式是让玩家循环遍历清单中的主机模式并在其上运行角色。使用可能特定于组的变量。

首先,确定主机和其他数据的真实来源。静态文件很好,但通过存货和查找插件,你可以参考一些系统。例如,NetBox。

您更喜欢 YAML,这很好,因为 Ansible 使用了很多 YAML。用户可以直接提供这些。静态库存来自文档中的示例:

all:
  hosts:
    mail.example.com:
  children:
    webservers:
      hosts:
        foo.example.com:
        bar.example.com:
    dbservers:
      hosts:
        one.example.com:
        two.example.com:
        three.example.com:

创建角色来包含要执行的任务。将大多数任务变为变量,以便可以轻松更改或覆盖它们。

---
- name: Web server software
  package:
    name: "{{ httpd_packages }}"

剧本是主持人模式到角色的映射。

---
- name: Web server deploy
  hosts: webservers

  roles:
  - www

肯定目录布局提供一种逻辑的方式来组织事物,并允许某些事物自动加载。

inventory/deployA.yml
inventory/deployB.yml
inventory/group_vars/vars.yml
roles/www/defaults/main.yml
roles/www/tasks/main.yml
web.yml

这样的游戏可以在环境 A 和 B 上运行,ansible-playbook -i inventory/ web.yml

注意将要做什么与适用于哪些主机分开,从而实现角色和库存的重用。

也许开发人员会帮助编写角色和剧本。也许不会,开发人员只需要通过将主机标记为特定组来使用它们。或者完全自动化,并通过 CI/CD 管道在版本控制中提交时进行部署。取决于谁在您的组织中运行操作。

还有很多其他的方式,这些包含短剧的静态文件只是最基本的。

相关内容