如何在 Ubuntu 22.04 上安装和配置 Ansible

2023-11-11

介绍

配置管理系统旨在简化管理员和运营团队控制大量服务器的过程。它们允许您从一个中心位置以自动化方式控制许多不同的系统。

虽然有许多流行的配置管理工具可用于 Linux 系统,例如Chef and Puppet,这些通常比许多人想要或需要的更复杂。Ansible是这些选项的一个很好的替代方案,因为它提供了一种不需要在节点上安装特殊软件的架构,使用 SSH 执行自动化任务并使用 YAML 文件来定义配置详细信息。

在本指南中,我们将讨论如何在 Ubuntu 22.04 服务器上安装 Ansible,并介绍如何使用该软件的一些基础知识。有关 Ansible 作为配置管理工具的更高级概述,请参阅Ansible 配置管理简介.

先决条件

要学习本教程,您将需要:

  • 一个 Ansible 控制节点:Ansible 控制节点是我们用来通过 SSH 连接和控制 Ansible 主机的机器。您的 Ansible 控制节点可以是您的本地计算机,也可以是专用于运行 Ansible 的服务器,尽管本指南假设您的控制节点是 Ubuntu 22.04 系统。确保控制节点具有:

    • 具有 sudo 权限的非 root 用户。要进行设置,您可以按照步骤 2 和 3 of our Ubuntu 22.04 初始服务器设置指南。但是,请注意,如果您使用远程服务器作为 Ansible 控制节点,则应该遵循每一步本指南的。这样做将在服务器上配置防火墙ufw并启用对非根用户配置文件的外部访问,这两者都将有助于确保远程服务器的安全。
    • 与该用户关联的 SSH 密钥对。要进行设置,您可以按照Step 1我们的指南如何在 Ubuntu 22.04 上设置 SSH 密钥.
  • 一台或多台 Ansible 主机:Ansible 主机是 Ansible 控制节点配置为自动化的任何机器。本指南假设您的 Ansible 主机是远程 Ubuntu 22.04 服务器。确保每个 Ansible 主机都有:

    • Ansible 控制节点的 SSH 公钥添加到authorized_keys系统用户的。该用户可以是root或具有 sudo 权限的普通用户。要进行设置,您可以按照Step 2 of 如何在 Ubuntu 22.04 上设置 SSH 密钥.

第 1 步 — 安装 Ansible

要开始使用 Ansible 作为管理服务器基础设施的方法,您需要在用作 Ansible 控制节点的计算机上安装 Ansible 软件。

从控制节点运行以下命令,将官方项目的 PPA(个人包存档)包含在系统的源列表中:

  1. sudoapt-add-repository ppa:ansible/ansible

Press ENTER当提示接受 PPA 添加时。

接下来,刷新系统的包索引,以便它知道新包含的 PPA 中可用的包:

  1. sudo apt update

在此更新之后,您可以通过以下方式安装 Ansible 软件:

  1. sudo apt install安西布尔

您的 Ansible 控制节点现在拥有管理主机所需的所有软件。接下来,我们将介绍如何将主机添加到控制节点的清单文件中,以便控制节点可以控制它们。

第 2 步 — 设置库存文件

The 库存文件包含有关您将使用 Ansible 管理的主机的信息。您可以在清单文件中包含一台到几百台服务器,并且可以将主机组织成组和子组。库存文件还经常用于设置仅对特定主机或组有效的变量,以便在剧本和模板中使用。一些变量也会影响 playbook 的运行方式,例如ansible_python_interpreter我们稍后会看到的变量。

要编辑默认 Ansible 清单的内容,请打开/etc/ansible/hosts在 Ansible 控制节点上使用您选择的文本编辑器创建文件:

  1. sudo nano/etc/ansible/主机

Note:虽然 Ansible 通常会在以下位置创建默认清单文件:etc/ansible/hosts,您可以在任何更适合您需求的位置自由创建库存文件。在这种情况下,您需要提供自定义清单文件的路径-i运行 Ansible 命令和 playbook 时的参数。使用每个项目的清单文件是一种很好的做法,可以最大限度地降低在错误的服务器组上运行 playbook 的风险。

Ansible 安装提供的默认清单文件包含许多示例,您可以将它们用作设置清单的参考。以下示例定义了一个名为[servers]其中包含三个不同的服务器,每个服务器都由自定义别名标识:server1, server2, and server3。请务必将突出显示的 IP 替换为 Ansible 主机的 IP 地址。

/etc/ansible/主机
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

The all:vars子组设置ansible_python_interpreter主机参数,该参数对该清单中包含的所有主机都有效。该参数确保远程服务器使用/usr/bin/python3Python 3 可执行文件而不是/usr/bin/python(Python 2.7),最新的 Ubuntu 版本中不存在。

完成后,按保存并关闭文件CTRL+X then Y and ENTER确认您的更改。

每当您想检查库存时,您都可以运行:

  1. ansible-库存--list -y

您将看到与此类似的输出,但包含清单文件中定义的您自己的服务器基础设施:

Output
all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

现在您已经配置了清单文件,您已经拥有了测试与 Ansible 主机的连接所需的一切。

第 3 步 — 测试连接

设置清单文件以包含您的服务器后,是时候检查 Ansible 是否能够连接到这些服务器并通过 SSH 运行命令。

在本指南中,我们将使用 Ubunturoot帐户,因为这通常是新创建的服务器上默认情况下唯一可用的帐户。如果您的 Ansible 主机已经创建了常规 sudo 用户,我们鼓励您改用该帐户。

您可以使用-u指定远程系统用户的参数。如果未提供,Ansible 将尝试以控制节点上的当前系统用户身份进行连接。

从本地计算机或 Ansible 控制节点运行:

  1. ansible all -m ping -u root

该命令将使用 Ansible 的内置ping module要对默认清单中的所有节点运行连接测试,请连接为root. The ping模块将测试:

  • 主机是否可访问;
  • 如果您有有效的 SSH 凭据;
  • 主机是否能够使用 Python 运行 Ansible 模块。

您应该得到与此类似的输出:

Output
server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

如果这是您第一次通过 SSH 连接到这些服务器,系统会要求您确认通过 Ansible 连接的主机的真实性。出现提示时,输入yes然后打ENTER确认。

一旦你得到一个"pong"从主机回复,这意味着您已准备好在该服务器上运行 Ansible 命令和 playbook。

Note:如果您无法从服务器获得成功的响应,请检查我们的Ansible 备忘单指南有关如何使用不同连接选项运行 Ansible 命令的更多信息。

第 4 步 — 运行临时命令(可选)

确认您的 Ansible 控制节点能够与主机通信后,您可以开始在服务器上运行临时命令和 playbook。

您通常通过 SSH 在远程服务器上执行的任何命令都可以在清单文件中指定的服务器上使用 Ansible 运行。例如,您可以使用以下命令检查所有服务器上的磁盘使用情况:

  1. ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

突出显示的命令df -h可以替换为您想要的任何命令。

您还可以执行Ansible 模块通过临时命令,类似于我们之前所做的ping用于测试连接的模块。例如,我们可以这样使用apt模块安装最新版本vim在您库存中的所有服务器上:

  1. ansible all -m apt -a "name=vim state=latest" -u root

运行 Ansible 命令时,您还可以定位单个主机以及组和子组。例如,您可以这样检查uptime中每个主机的servers group:

  1. ansible servers -a "uptime" -u root

我们可以通过用冒号分隔来指定多个主机:

  1. ansible server1:server2 -m ping -u root

有关如何使用 Ansible 的更多信息,包括如何执行 playbook 来自动设置服务器,您可以查看我们的Ansible 参考指南.

结论

在本指南中,您已经安装了 Ansible 并设置了清单文件以从 Ansible 控制节点执行临时命令。

一旦您确认能够从中央 Ansible 控制器机器连接和控制您的基础设施,您就可以在这些主机上执行您想要的任何命令或剧本。

有关如何使用 Ansible 的更多信息,请查看我们的Ansible 备忘单指南.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 22.04 上安装和配置 Ansible 的相关文章

随机推荐

  • 在 Ubuntu 18.04 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 创建的证书颁发机构 它通过完全自动化的流程提供免费的 SSL 证书 旨在消除手动证书创建 验证 安装和续订 Let s Encrypt 颁发的证书受到当今所有主要浏览器的信任 在
  • Linux 中的 RPM 命令

    RPM 包管理器 RPM 是 Red Hat Linux 及其衍生产品 例如 CentOS 和 Fedora 使用的功能强大的包管理系统 RPM 也指rpm命令和 rpm文件格式 RPM 包由文件和元数据的存档组成 其中包括依赖项和安装位置
  • 如何在 Debian 9 上安装 Nginx

    Nginx 是一个开源 高性能的 HTTP 和反向代理服务器 为互联网上一些最大的网站提供支持 Nginx 可以用作独立的 Web 服务器 也可以用作反向代理 for Apache和其他网络服务器 与 Apache 相比 Nginx 可以处
  • 如何在 Linux 中将用户添加到组

    在本教程中 我们将解释如何在 Linux 系统中将用户添加到组 我们还将向您展示如何从组中删除用户以及如何创建 删除和列出组 Linux 群组 Linux 组是用于组织和管理 Linux 中的用户帐户的组织单位 组的主要目的是定义一组权限
  • 如何在 Ubuntu 18.04 上设置 DNS 名称服务器

    域名系统 DNS 是网络基础设施的核心部分 提供了一种将域名转换为 IP 地址的方法 您可以将 DNS 视为互联网的电话簿 连接到互联网的每台设备均由其 IP 地址唯一标识 当您在浏览器中输入要访问的网站时 必须将其域名转换为相应的IP地址
  • 如何在 Debian Linux 上挂载 exFAT 驱动器

    exFAT 扩展文件分配表 是 Microsoft 专有的文件系统 针对 SD 卡和 USB 闪存驱动器等闪存设备进行了优化 它旨在取代旧的 32 位 FAT32 文件系统 该系统无法存储大于 4 GB 的文件 所有最新版本的 Window
  • 如何在 CentOS 8 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在树莓派上安装Java

    Java 是最流行的编程语言之一 用于构建不同类型的应用程序和系统 Java 有两种不同的实现 Oracle Java 和 OpenJDK OpenJDK 是 Java 平台的开源实现 Oracle Java 有一些额外的商业功能和lice
  • 如何在 CentOS 7 上安装 Tomcat 8.5

    本教程向您展示如何在 CentOS 7 上安装 Tomcat 8 5 Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 先决条件 在开始本教程
  • Python 中的 numpy.square()

    Python numpy square 函数返回一个新数组 其元素值作为源数组元素的平方 源数组保持不变 Python numpy square 示例 它是一个快速求矩阵元素平方的实用函数 让我们看一下带有整数 浮点和复数类型数组元素的 n
  • 如何在 Ubuntu 14.04 上安装和保护 phpMyAdmin

    介绍 虽然许多用户需要 MySQL 等数据库管理系统的功能 但他们可能不习惯仅通过 MySQL 提示符与系统交互 php我的管理员创建的目的是让用户可以通过 Web 界面与 MySQL 进行交互 在本指南中 我们将讨论如何安装和保护 php
  • 如何在 CentOS 7 上安装 Elasticsearch、Logstash 和 Kibana(ELK Stack)

    介绍 在本教程中 我们将介绍在 CentOS 7 即 Elasticsearch 2 2 x Logstash 2 2 x 和 Kibana 4 4 x 上安装 Elasticsearch ELK Stack 我们还将向您展示如何使用 Fi
  • 如何在 Ubuntu 上的 WordPress 中配置安全更新和安装

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Spring JDBC 示例

    Spring JDBC 是本教程的主题 数据库是大多数企业应用程序不可或缺的一部分 因此 当涉及到 Java EE 框架时 必须与JDBC非常重要 春季 JDBC Spring Framework provides excellent in
  • 带有 COUNT() 函数的 SQL SELECT 语句

    嘿伙计 在这篇文章中 我们将重点关注SQL SELECT 语句以及 COUNT 函数 什么是 SQL SELECT 语句 SQL SELECT 语句帮助我们选择并显示数据库特定表中的数据值 Syntax SELECT columns FRO
  • Python 有序字典

    Python OrderedDict 是一个dict维护项目插入顺序的子类 当我们迭代 OrderedDict 时 项目将按照插入的顺序返回 常规字典不跟踪插入顺序 因此 当对其进行迭代时 项目会以任意顺序返回 当我们想要确保项目按照插入顺
  • 代理设计模式

    代理设计模式是结构设计模式之一 在我看来也是最容易理解的模式之一 代理设计模式 Proxy design pattern intent according to GoF is Provide a surrogate or placehold
  • 如何在 Ubuntu 16.04 上使用 RVM 安装 Ruby on Rails

    介绍 Ruby on Rails 是最受希望创建网站和 Web 应用程序的开发人员欢迎的应用程序堆栈之一 Ruby 编程语言与 Rails 开发框架相结合 使应用程序开发变得简单 您可以使用命令行工具轻松安装 Ruby 和 RailsRVM
  • C/C++中二叉树的高度

    二叉树的高度定义为任何叶节点距根节点的最大深度 即从根节点到任意叶子节点的最长路径的长度 让我们考虑下面的二叉树 Binary Tree Ht 由于最大深度对应的叶子节点为40 and 50 为了求出高度 我们只需求出从根节点到这两个节点之
  • 如何在 Ubuntu 22.04 上安装和配置 Ansible

    介绍 配置管理系统旨在简化管理员和运营团队控制大量服务器的过程 它们允许您从一个中心位置以自动化方式控制许多不同的系统 虽然有许多流行的配置管理工具可用于 Linux 系统 例如Chef and Puppet 这些通常比许多人想要或需要的更