您应该将 Ansible 用于自动化吗?

如果您只需要按下一个按钮并且您的所有系统都是最新的,所有必要的软件包都已安装并准备就绪,您会有什么感觉? 听起来很棒,对吧?

在现代 IT 世界中,DevOps 工程师正在将这个梦想变为现实。 我们现在拥有 Ansible 等工具,通过几次点击减少错误和人工输入,使 IT 管理流程更易于管理和更快。

继续阅读以了解您需要了解的有关 Ansible 的所有信息,包括如何使用它的简要概述。

什么是 Ansible?

Ansible 是一个强大的开源自动化引擎。 它是跨平台的,允许开发人员管理来自任何操作系统的设备,包括 Windows、macOS 和 Linux。

Ansible 提供了一系列功能:配置管理、应用程序部署云配置、系统更新、安全自动化、持续交付等等。 它是一个轻量级工具,不需要额外的软件或软件包即可运行,因此易于部署。

核心 Ansible 功能

以下是 Ansible 作为自动化工具提供的一些功能。

应用部署

Ansible 允许开发人员在服务器上快速轻松地部署应用程序。 它消除了编写自定义代码或手动执行包管理的需要。 相反,您可以定义应用程序在目标系统上远程运行和执行它们所需的任务,而不是使用 Ansible 剧本。 您可以将单个 Playbook 同时发送到多个设备并在多个服务器上运行该应用程序。

Cloud 供应

Cloud 配置是使用安装、配置和管理云计算资源的方法。

Ansible 允许您自动执行云配置任务,包括设置基础架构、设置主机、管理网络接口、管理防火墙和远程主机上的用户。

配置管理

配置管理是 Ansible 的另一个特性。 使用 Ansible playbook 或 ad-hoc 命令,您可以通过几个命令快速启动并运行您的系统。 由于 Ansible 使用 YAML 作为默认配置语言,因此很容易以人类可读的格式创建任务并在远程机器上执行它们。

为了 example,如果你有一个新配置的服务器,你可以使用 Ansible 来更新系统,安装必要的包并在服务器上启动服务。

安全自动化

Ansible 在安全自动化任务中很有帮助。 为了 example,使用一些 Ansible 命令,您可以设置自定义防火墙规则、检查恶意软件、使用自定义工具清理系统等等。 它还允许您监控系统的运行状况并在发生故障时快速执行系统备份。

它还使用 SSH 对用户进行身份验证并在远程主机上执行命令,使其使用起来非常安全。

Ansible 架构

让我们更多地了解组成 Ansible 引擎的部分。

库存

Ansible 通过使用清单来管理远程主机。 清单是一个简单的文本文件,其中包含远程机器的 IP 地址和主机名。 清单文件中的主机可以组织成各种组,例如网络服务器、数据库、备份等。将主机组织成组有助于用户在特定的机器组上执行命令。

注意:在运行任何任务之前,您必须使用至少一台主机填充 Ansible 清单文件。

剧本

Ansible playbook 是用 YAML(YAML Ain’t Markup Language)编写的简单文本文件。 它们包含在远程主机上执行以执行特定任务的指令或命令。

由于 Ansible 剧本是用 YAML 编写的,因此它们是人类可读的格式。 这使得 Ansible 非常易于使用和理解,因为用户不需要掌握新的语法。 每个剧本包括在所有或特定主机上执行的至少一个或多个任务。

有关的:

模块

Ansible 为用户提供模块。 模块是帮助从控制节点管理远程主机的命令。 这些模块使 Ansible 能够管理用户、安装和卸载软件包、更新系统等。它们在 Playbook 中根据需要执行特定任务。 Ansible 提供了 4600 多个模块。 查看所有 Ansible 模块。

插件

Ansible 架构允许自定义插件。 它们有助于扩展或改进 Ansible 引擎的基本功能。 虽然它默认带有几个插件,但您也可以创建自定义插件以满足您的需求。

API

Ansible 通过为用户提供用于调试、运行命令、回调等的各种 API 端点来扩展功能。

Ansible 入门

Ansible 易于设置和使用。 本节将演示如何在主机上安装 Ansible、配置远程主机以及执行基本的自动化任务。

Ansible 是跨平台的,因此受到主要操作系统的支持。 为简单起见,本指南将讨论 Ansible 在基于 Debian 的 Linux 发行版上的安装。 查看 其他操作系统的 Ansible 安装过程。

从编辑开始 /etc/apt/sources.list 文件

sudo vim /etc/apt/sources.list

在文件中,添加以下条目:

deb https://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

上面的条目会将 Ubuntu PPA 添加到 Debian 存储库中,从而允许您安装 Ansible。

接下来,运行以下命令:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible -y

第一个命令添加所需的键。

以下命令更新软件存储库并最终安装 Ansible。

现在您已经在系统上安装了 Ansible,请继续。

创建库存

执行任何 Ansible 自动化任务之前的第一步是设置主机清单文件。

默认库存文件位于 /etc/ansible/主机. 使用您喜欢的文本编辑器,添加您希望自动化的远程主机的 IP 地址。

$ sudo vim /etc/apt/hosts

Save 文件和 close.

创建一个简单的剧本

Ansible playbook 允许用户通过设置在远程主机上执行的命令来自动执行任务。

您将创建一个简单的 Ansible playbook 来安装 Apache Web 服务器,创建防火墙规则以允许 Apache,并重新启动服务

Ansible 使用 YAML 作为其 playbook 的默认配置语言。

使用 touch 命令创建一个 YAML 文件,如下所示:

$ touch first-playbook.yaml

使用您的文本编辑器,添加条目,如 example 剧本如下:

$ vim first-ansible-playbook.yaml
---
- hosts: all
become: true
tasks:
- name: Update apt packages
apt:
state: latest
update_cache: yes
- name: Install Apache
apt:
name: apache2
state: latest
- name: Install UFW Firewall
apt:
name: ufw
state: latest
- name: Allow HTTP ufw
ufw:
state: enabled
rule: allow
port: "80"
proto: tcp
- name: Restart Apache
service:
name: apache2
state: restarted

在上面的剧本中,首先指定要执行剧本的主机。 由于清单文件中只有一台主机,请将主机设置为全部。

接下来,设置 become 语句,它允许 playbook 中的任务以 root 身份运行。

前面几行定义了要在远程主机上执行的任务。 它们包括一个名称,该名称描述了要在主机上运行的功能和实际任务。

第一个告诉 Ansible 更新存储库缓存; 这对应于命令:

$ sudo apt-get update

以下说明安装最新版本的 Apache 网络服务器。

接下来是安装 UFW 防火墙的任务。 这需要启用和端口 80 允许,这 Apache 用于 TCP 协议。

最后,最后一条语句重新启动 Apache 网络服务器。

运行 Ansible 剧本

要运行 Ansible playbook,我们需要使用 ansible-剧本 命令,安装时随 Ansible 提供。

要运行 first-playbook.yaml 文件,请使用以下命令:

$ ansible-playbook --user=ubuntu first-playbook.yaml

在上面的命令中, – 用户 选项被传递,它指定远程主机上的用户。

注意:确保您在远程主机上安装了 SSH 密钥。

执行上述命令后,您将获得如图所示的输出。

以上显示所有命令已在远程主机上成功执行。

验证任务

要验证 playbook 中的任务是否已成功执行,请打开浏览器并导航到远程主机的 IP 地址。

如果命令已经执行并且 Apache 服务器正在运行,您应该看到默认值 Apache Ubuntu默认页面为:

你应该使用 Ansible 吗?

最后,很明显 Ansible 是一个强大的工具。 它的灵活性、特性和功能使其成为当前和未来自动化任务的有前途的工具。 如果您是一名 DevOps 工程师,希望快速轻松地自动化您的 IT 任务,Ansible 将在您的旅程中发挥重要作用。