Ansible 剧本快速入门指南

网友投稿 667 2023-04-17

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Ansible 剧本快速入门指南

我们已经写了两篇关于 Ansible 的文章,这是第三篇。

如果你是 Ansible 新手,我建议你阅读下面这两篇文章,它会教你一些 Ansible 的基础以及它是什么。

第一篇: Ansible 自动化工具安装、配置和快速入门指南第二篇: Ansible 点对点命令快速入门指南示例

如果你已经阅读过了,那么在阅读本文时你才不会感到突兀。

什么是 Ansible 剧本?

剧本playbook比点对点命令模式更强大,而且完全不同。

它使用了 /usr/bin/ansible-playbook 二进制文件,并且提供丰富的特性使得复杂的任务变得更容易。

如果你想经常运行一个任务,剧本是非常有用的。此外,如果你想在服务器组上执行多个任务,它也是非常有用的。

剧本是由 YAML 语言编写。YAML 代表一种标记语言,它比其它常见的数据格式(如 XML 或 JSON)更容易读写。

下面这张 Ansible 剧本流程图将告诉你它的详细结构。

理解 Ansible 剧本的术语

控制节点Control node:Ansible 安装的机器,它负责管理客户端节点。受控节点Managed node:控制节点管理的主机列表。剧本playbook:一个剧本文件包含一组自动化任务。主机清单Inventory:这个文件包含有关管理的服务器的信息。任务Task:每个剧本都有大量的任务。任务在指定机器上依次执行(一个主机或多个主机)。模块Module: 模块是一个代码单元,用于从客户端节点收集信息。角色Role:角色是根据已知文件结构自动加载一些变量文件、任务和处理程序的方法。动作Play:每个剧本含有大量的动作,一个动作从头到尾执行一个特定的自动化。处理程序Handler: 它可以帮助你减少在剧本中的重启任务。处理程序任务列表实际上与常规任务没有什么不同,更改由通知程序通知。如果处理程序没有收到任何通知,它将不起作用。

基本的剧本是怎样的?

下面是一个剧本的模板:

如何理解 Ansible 的输出

Ansible 剧本的输出有四种颜色,下面是具体含义:

绿色:ok 代表成功,关联的任务数据已经存在,并且已经根据需要进行了配置。黄色:changed 指定的数据已经根据任务的需要更新或修改。红色:FAILED 如果在执行任务时出现任何问题,它将返回一个失败消息,它可能是任何东西,你需要相应地修复它。白色:表示有多个参数。

为此,创建一个剧本目录,将它们都放在同一个地方。

$ sudo mkdir /etc/ansible/playbooks

剧本-1:在 RHEL 系统上安装 Apache Web 服务器

这个示例剧本允许你在指定的目标机器上安装 Apache Web 服务器:

$ ansible-playbook apache1.yml

如何理解 Ansible 中剧本的执行

使用以下命令来查看语法错误。如果没有发现错误,它只显示剧本文件名。如果它检测到任何错误,你将得到一个如下所示的错误,但内容可能根据你的输入文件而有所不同。

$ ansible-playbook apache1.yml --syntax-check ERROR! Syntax Error while loading YAML. found a tab character that violate indentationThe error appears to be in '/etc/ansible/playbooks/apache1.yml': line 10, column 1, but maybe elsewhere in the file depending on the exact syntax problem.The offending line appears to be: state: latest^ hereThere appears to be a tab character at the start of the line. YAML does not use tabs for formatting. Tabs should be replaced with spaces.For example: - name: update tooling vars: version: 1.2.3# ^--- there is a tab there.Should be written as: - name: update tooling vars: version: 1.2.3# ^--- all spaces here.

或者,你可以使用这个 URL YAML Lint 在线检查 Ansible 剧本内容。

执行以下命令进行“演练”。当你运行带有 --check 选项的剧本时,它不会对远程机器进行任何修改。相反,它会告诉你它将要做什么改变但不是真的执行。

$ ansible-playbook apache.yml --check PLAY [Install and Configure Apache Webserver] ******************************************************************** TASK [Gathering Facts] *******************************************************************************************ok: [node2.2g.lab]ok: [node1.2g.lab] TASK [Install Apache Web Server] *********************************************************************************changed: [node2.2g.lab]changed: [node1.2g.lab] TASK [Ensure Apache Web Server is Running] ***********************************************************************changed: [node1.2g.lab]changed: [node2.2g.lab] PLAY RECAP *******************************************************************************************************node1.2g.lab : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0node2.2g.lab : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

如果你想要知道 ansible 剧本实现的详细信息,使用 -vv 选项,它会展示如何收集这些信息。

剧本-2:在 Ubuntu 系统上安装 Apache Web 服务器

这个示例剧本允许你在指定的目标节点上安装 Apache Web 服务器。

剧本-3:在 Red Hat 系统上安装软件包列表

这个示例剧本允许你在指定的目标节点上安装软件包。

方法-1:

方法-2:

方法-3:使用数组变量

剧本-4:在 Linux 系统上安装更新

这个示例剧本允许你在基于 Red Hat 或 Debian 的 Linux 系统上安装更新。

上一篇:报告:DevOps 采用率在五年内几乎翻倍,达有史最高
下一篇:基础设施代码化(IaC)的自动化配置与编排
相关文章

 发表评论

暂时没有评论,来抢沙发吧~