如何在 Ubuntu 20.04 LTS 上安装 Ansible

在单个服务器上配置和部署应用程序通常是一项简单的任务。 但是,在具有多台服务器的复杂 IT 环境中,这可能是一项艰巨且耗时的任务。 Ansible 由 RedHat 开发和维护,是一种开源服务器配置和软件配置工具,可简化应用程序部署和配置管理。 它减轻了 IT 运营团队的负担,并以简单有效的方式自动化了服务器的配置和应用程序的部署。

与 Chef 和 puppet 等同类产品相比,Ansible 是使用最广泛的工具,因为它不需要代理与远程主机通信。 Ansible 利用 SSH 协议与远程目标进行通信,这样做时,远程主机的 CPU 资源不受影响。

Ansible 实验室设置

对于我们的测试环境,我们有两个节点:将安装 Ansible 的控制节点和将从 Ansible 控制节点配置的远程主机:

Ansible 控制节点 IP 192.168.2.101 Ubuntu 20.04

远程主机 IP 192.168.2.104 Ubuntu 20.04

此外,确保您有一个 sudo 用户 在 Ansible 控制节点上配置,并且 SSH 守护程序正在两个节点上运行。

事不宜迟,让我们谈谈如何在 Ubuntu 20.04 上安装 Ansible

第 1 步:安装 Ansible

马上,登录到 Ansible 主服务器并将 Ansible 安装为 sudo 用户如下。

$ sudo apt install ansible

这会将 Ansible 与许多 Python3 包一起安装,这些包对于 Ansible 正常运行至关重要。

安装后,您可以如图所示确认 Ansible 版本。

输出提供了一些广泛的信息。 它显示 Ansible 的版本——在本例中为 Ansible 2.9.6——模块和 Ansible 可执行路径以及安装在系统上的 Python 版本。

配置文件—— ansible.cfg – 是 Ansible 配置文件,位于 /etc/ansible 目录。 这些设置决定了 Ansible 如何运行并与远程客户端交互。 此外,该目录包含一个名为 主机。 这是定义远程或托管主机的地方。 正如我们在本教程中进行的那样,我们将在此清单文件中定义远程主机。

第 2 步:设置无密码 SSH 登录

SSH 协议提供了两种认证方式:密码认证和公钥/私钥认证。 使用 SSH 密钥,我们将设置一个无密码的 ssh 登录方法,以提供一种更安全、更方便的与远程主机交互的方式。 无密码 SSH 登录方法提供了与主机交互的无缝方式,因为我们在运行 playbook 文件时不需要提供密码。

要设置无密码 SSH 登录,我们首先要生成 SSH 密钥对,如下所示:

$ ssh-keygen

一直按 ENTER 接受默认建议。

SSH 密钥对包括私钥和公钥。 我们有 id_rsa 这是私钥。 另外,我们有 id_rsa.pub 这是公钥。

接下来,我们将使用 root 用户作为远程主机的用户将公钥复制到远程主机。

笔记

在复制 ssh 公钥文件之前,我们将在 Ansible 配置文件中配置远程用户,如图所示。

$ sudo vim /etc/ansible/ansible.cfg

将远程用户设置为 根。

remote_user=root

Save 文件。

接下来,前往远程主机并通过编辑启用远程 root 登录 /etc/ssh/ssh_config 文件。

$ sudo vim /etc/ssh/ssh_config

附加下面的行

PermitRootLogin yes

再次保存并退出。

现在我们可以继续并将 SSH 公钥复制到远程主机,如图所示。

$ ssh-copy-id [email protected]

如果您是第一次以 root 用户身份登录,您将收到如下图所示的提示。 只需键入“是”即可继续连接。 提供远程主机的 root 密码后,SSH 密钥将添加到 root 主目录。

对于后续登录,您无需提供密码。 要验证这一点,请退出远程主机并再次尝试登录。

$ ssh [email protected]

这会自动将您带到远程主机的 shell,如图所示。

完美的! 我们的无密码 SSH 登录设置已完成。 现在我们将创建一个 playbook 文件来安装 Apache 网络服务器。

第三步:在 Ansible 配置文件中添加远程主机

接下来,我们将在 Ansible 清单文件中定义我们的远程主机,默认情况下,它是 /etc/ansible/主机 文件。 所以,打开文件。

 $ sudo vim /etc/ansible/hosts

文件 主机 结构为INI格式。 我们将在下面添加我们主机的 IP 地址 网络服务器 组的名字。

[webservers]
192.168.2.104

Save 库存文件和 close. 要验证清单文件中定义的主机,请执行:

 $ ansible webservers --list-hosts

或者,要检查所有主机组中的所有主机,请执行:

 $ ansible all --list-hosts

现在我们要测试远程主机上是否存在 Ansible Python 模块。

 $ ansible -m ping webservers

笔记:

模块不是 ICMP ping 命令。 检查是否安装了 Python3 模块以及是否存在 SSH 只是一个简单的测试。

下面的输出表明该命令是成功的。 输出还显示了在下面定义的远程主机的 IP 网络服务器 团体。 如果您在多个组下定义了多个主机,请使用 全部 选项。

 $ ansible -m ping all

第 4 步:创建一个 playbook 文件来配置远程主机

定义了远程主机后,我们现在将创建一个 playbook 文件来安装 Apache 网络服务器。 playbook 文件是 Ansible 中的 YAML 文件,它规定了要在远程主机中执行的任务。

 $ sudo vim /etc/ansible/apache.yml

playbook 文件定义如下。 请注意,该文件以 3 个连字符 ( — ) 开头。 另外,请注意缩进。

最后,执行 playbook 文件,如下所示。

$ ansible-playbook /etc/ansible/apache.yml

在运行时,playbook 会一丝不苟地执行任务,并在终端上显示每一个动作。 它安装 Apache 网络服务器并启动服务。

要确认网络服务器已成功安装,请启动浏览器并浏览远程主机的 IP,如下所示:

https://server-ip/

概括

Ansible 是 DevOps 中广泛使用的自动化工具,被成千上万的开发人员和系统管理员用于在服务器上配置和部署应用程序。 它可以节省时间并最大限度地减少在复杂 IT 基础架构中处理大量服务器所需的工作量。 我们确实希望您可以在 Ubuntu 20.04 上轻松地安装和配置 Ansible。