返回博客

使用 Ansible 和 Ubuntu 20.04 自动化服务器设置

使用 Ansible 和 Ubuntu 20.04 自动化服务器设置

介绍

如今,服务器需要非常频繁地创建和销毁。这是因为,有时服务器会承受很大的执行负载,而其他时候负载会减少,从而浪费系统资源。一个常见的例子是电子商务网站在节日期间吸引了大量的流量。当应用程序的性质是可扩展的时,总是需要配置管理工具来使创建服务器的整个过程更加容易。Ansible 是一个出色的配置管理工具,它使用标准程序自动创建服务器,从而减少人为错误。

Ansible 不需要在此服务器节点上安装特殊的软件。它拥有编写、构建和促进脚本自动化所需的所有工具。本教程详细阐述了如何使用 Ansible 来自动执行我们如何设置您的 Ubuntu 服务器 教程中的步骤.

前提条件

为了完成本指南,我们将使用 Ubuntu 20.04。此外,您还需要:

  • 一个 Ansible 控制节点:一台运行最新 Ubuntu 版本的 Ubuntu 机器。Ansible 的主二进制文件必须在这台机器上安装并运行。这台机器应该能够连接到 Ansible 节点。对于这些连接,您需要使用 SSH 密钥。为了避免连接时出现问题,请确保您的 Ansible 控制节点已启用防火墙。如果您需要帮助,请查看我们的 在 Ubuntu 20.04 上安装和配置 Ansible 博客。

  • Ansible 主机:需要连接的一个或多个主机。这些主机本质上是 Ansible 中的受管节点。这些必须是 Ubuntu 服务器。

Ansible Playbook 的功能

您可以手动设置以下所有步骤。但是,我们将自动执行此操作。当您运行此 playbook 时,它将在您的机器上执行以下操作:

  1. 它将安装 aptitude,这是 Ansible 首选的包管理器。

  2. 它将创建一个管理组 wheel,具有免密码的 sudo 权限。

  3. 它将创建一个新的 sudo 用户。

  4. 它将复制一个本地 SSH 密钥到 authorized_keys。这用于远程主机上的新管理用户。

  5. 它将禁用 root 用户的密码身份验证。

  6. 它将安装必要的软件包。

  7. 它将配置 UFW 防火墙 以仅允许 SSH 连接。任何其他连接都将被阻止。

一旦 Playbook 执行完毕,一个新用户将可用。您可以使用此用户登录系统。

使用 Ansible Playbook

要设置服务器,您将需要初始服务器设置 playbook 及其依赖项。如果您是第一次使用它,则需要使用下面的链接克隆该仓库:

如果您的系统中已经存在该仓库,请运行以下命令以获取最新更新:

您将在机器上获得以下文件结构:

以下是这些文件的说明:

  • vars/default.yml:此文件包含用于配置 Ansible 节点的变量。

  • playbook.yml:此文件包含要在服务器上执行的任务。

文件 vars/default.yml 看起来像这样:

以下是这些变量的说明。如果您希望编辑它们,可以用您自己的值替换它们的值:

  1. create_user:这是创建的用户。该用户具有 sudo 权限。

  2. copy_local_key: 这包含本地 SSH 公钥的路径。它将被复制到远程服务器,保存为 authorized_key.

  3. sys_packages: 如果您想在服务器上安装一个或多个软件包,请在此处以数组形式列出。

编辑完此文件后,保存内容。然后,在 nano 中,按 CTRL+X , Y. 然后, ENTER 以保存文件内容。

现在您已准备好在多台服务器上运行此 playbook。默认情况下,Playbook 已准备好在您的清单(inventory)中的服务器上执行。如果您想在某些特定的服务器上使用该 Playbook,可以使用 -l 标志。现在假设远程服务器有多个用户,您可以使用 -u 标志来指定要连接的用户。

如果您的服务器名称是 my_server 且用户名是 my_user,然后运行以下命令在 Ansible 节点上执行:

您将获得类似以下内容的输出:

执行完成后,您可以使用以下命令进行连接:

请记住, my_user 是我们在 vars/default.yml 文件中使用的名称。您还需要在上述命令中将服务器 IP 更改为您服务器的 IP。如果您提供了 copy_local_key 变量以指向某个自定义 SSH 密钥,请使用 -i 参数指定位置:

接下来,登录到您的服务器以检查 UFW 防火墙的规则:

您将获得如下输出:

上述输出确认 UFW 防火墙已成功配置完成。这是我们 playbook 中的最后一步。如果执行正确,这意味着执行已成功。

Ansible Playbook 内容

我们在本教程中使用的 Playbook 文件托管在 GitHub 上的 do-community/ansible-playbooks 仓库 master 分支下的 ansible-playbooks/setup_ubuntu1804。如果您想查看每个文件的内容以进行使用或编辑,请点击每个脚本顶部的 Raw 按钮。

为了快速参考,我们将分享 Playbook 的完整内容以及相关文件:

  • vars/default.yml

此文件包含 playbook 任务将使用的值。这些值包括用户名、权限、SSH 密钥、作为初始设置的一部分要安装的软件包等等:

  • playbook.yml

playbook.yml 文件包含要执行的任务。首先,该文件列出了所有要作为目标的主机。如果您想指定所有服务器,请将此键的值设为 all。接下来,如果您想指定使用 sudo 权限执行的任务,可以将变量的值设置为 become: true。最后,此文件需要包含上述 vars/default.yml 文件。我们接下来包含这些内容,以便从该文件中加载设置:

结论

自动化是 IT 的关键,它能确保所有流程都准确无误,并遵循标准实践和程序。由于当今大多数软件都是通过网络交付且具有分布式特性,因此创建新服务器已成为一项日常任务,例如针对不同的环境(如测试或生产环境),甚至是演示环境。

在本教程中,我们演示了如何使用 Ansible 实现服务器自动化,这是一个功能强大且易于使用的工具,可以为您节省大量时间。

祝您计算愉快!

author

Shreyas Patil

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。