在 Linux 中安装和配置 Ansible

本分步指南将引导您完成在 Linux 中安装和配置 Ansible 的步骤。 它还解释了如何在 Linux 中设置 Ansible homelab 以学习 ansible 基础知识。

内容

  1. 一、简介
  2. 2. 3节点ansible实验室架构图
  3. 3. 在 Linux 中安装和配置 Ansible
    1. 3.1. 在 Linux 中安装 Ansible
      1. 3.1.1. 使用系统包管理器安装 Ansible
      2. 3.1.2. 使用 Pip 安装 Ansible
    2. 3.2. 配置 Ansible
      1. 3.2.1. 为受管节点生成 SSH 密钥对
      2. 3.2.2. 测试 Ansible 配置
  4. 结论

一、简介

Ansible 是一种 IT 自动化工具,您可以通过它自动化软件环境中的“N”个任务。 要了解什么是 Ansible 及其功能,请查看我们的 《Ansible 简介》 指导。

Ansible 显然是为大规模配置管理而设计的。 如果您的目标是学习并能够快速重建您的环境,那么您就走在正确的轨道上!

Ansible 是一个 无代理 建筑学。 含义 – 托管节点上没有运行可靠的代理/进程。

正如我在 Ansile 介绍性文章中已经提到的,ansible 中有两种类型的节点。

  • 主/控制器节点 – 将安装 ansible 的服务器/工作站。 从这个节点,您将运行所有 ansible playbook 和 ansible 命令。
  • 托管节点 – 将使用 ansible 管理的主机列表。

所有受管节点不需要以相同的分发版本或类型运行。 您可以使用不同风格的 Linux 作为受管节点。

控制器和受管节点之间的通信将使用 基于 ssh 密钥的身份验证.

本实践指南将教您如何在 Linux 发行版中设置 Ansible 实验室。

笔记:

  1. 您不能使用 windows 作为控制器节点。
  2. 可以配置多个控制器节点。

在开始使用 Ansible 之前,让我向您展示我的 Ansible 家庭实验室设置的图示。

2. 3节点ansible实验室架构图

下图为您提供了实验室外观的精美图示。

我的 Ansible 家庭实验室设置

出于演示目的,我在 Ubuntu 20.04 上设置了一个控制器节点,在 CentOS 8 和 Ubuntu 21.04 上设置了 2 个受管节点。

3. 在 Linux 中安装和配置 Ansible

首先,我们将看到如何在 Linux 中设置 Ansible 管理节点。

3.1. 在 Linux 中安装 Ansible

由于 Ansible 是用 Python 编写的,因此您的 Linux 机器应该安装了 Python 才能使 ansible 工作。

幸运的是,所有 Linux 发行版都预装了 Python。 Ansible 支持 Python 2.7 和 Python 3.5 及更高版本。

要检查您的机器上安装了哪个版本的 python,您可以使用以下命令。 输出可能会有所不同,具体取决于您的发行版中 python 的设置方式。

$ which python python2 python3 /usr/bin/python2 /usr/bin/python3

检查 Python 版本:

$ python2 --version Python 2.7.18rc1
$ python3 --version Python 3.8.5
$ compgen -c python | grep -P '^python..d' python3.8 python3.8-config python2.7

您可以通过两种方式在 Linux 中安装 ansible。

  1. 使用操作系统包管理器
  2. 使用 画中画 – Python 包管理器

3.1.1. 使用系统包管理器安装 Ansible

首先,将看到如何使用您的发行版的包管理器来安装 ansible。 根据您的 Linux 发行版,运行以下命令。

在 Arch Linux、EndeavourOS、Manjaro Linux 中安装 Ansible:

$ sudo pacman -S ansible

Debian:

编辑 /etc/apt/sources.list 文件:

$ sudo nano /etc/apt/sources.list

添加以下行:

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

然后运行以下命令:

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

Fedora:

$ sudo dnf install ansible

CentOS、RHEL、AlmaLinux、Rocky Linux:

$ sudo dnf install epel-release
$ sudo dnf install ansible

Ubuntu 及其衍生产品:

$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository --yes --update ppa:ansible/ansible $ sudo apt install ansible

您的发行版可能附带过时的 Ansible 版本。 如果要在系统上安装更新的 Ansible 版本,可以使用 ,python 包管理器。

3.1.2. 使用 Pip 安装 Ansible

首先,通过运行以下命令验证是否安装了 PIP:

$ which pip pip3 /usr/bin/pip /usr/bin/pip3
$ pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

如果未安装 PIP,请运行以下命令进行安装。

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user

安装 PIP 后,运行以下命令安装 ansible:

$ sudo python3 -m pip install ansible

这将安装最新的 Ansible 版本。

您还可以安装特定的 Ansible 版本,例如 2.9,如下所示:

$ sudo python3 -m pip install 'ansible==2.9'

安装 Ansible 后,运行以下命令查看 ansible 版本:

$ ansible --version

此命令提供有关主机文件、配置文件和 ansible 二进制文件的位置以及安装的 Ansible 版本的信息。

示例输出:

ansible 2.9.0   config file = /etc/ansible/ansible.cfg   configured module search path = ['/home/karthick/.ansible/plugins/modules',   '/usr/share/ansible/plugins/modules']   ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible   executable location = /usr/local/bin/ansible   python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

3.2. 配置 Ansible

如前所述,Ansible 将使用 ssh 身份验证协议。

我们将创建 ssh 密钥对并将它们分发到所有受管节点。 因此,无论何时提交 ansible 命令,它都会使用这些密钥向托管节点进行身份验证。

3.2.1. 为受管节点生成 SSH 密钥对

创建一个名为的新用户 能听懂的 在控制器和受管节点中。

$ sudo useradd ansible               ##create user  $ sudo passwd ansible                ##set password for ansible user.

以 ansible 用户身份登录/切换并使用命令创建 ssh 密钥对:

$ su - ansible
$ ssh-keygen -t rsa

此命令将生成一对 SSH 密钥。

现在分发 公钥 到所有受管节点。

您可以使用 ssh-copy-id 命令将公钥复制到目标节点。

要使用 ssh-copy-id 命令将公钥复制到目标节点,请运行:

$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]

如果您有更多节点,请使用 for loop 将 ssh 密钥复制到所有目标节点。

出于本指南的目的,我有 2 个托管节点并将它们命名为 centos1 (centos8) 和 Ubuntu1 (Ubuntu 20.04)。 要将密钥复制到两个节点,我使用了以下代码:

$ for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa [email protected]${node} done
将 SSH 密钥复制到目标节点

现在登录到您的托管节点以检查基于密钥的身份验证是否正常工作。

$ ssh [email protected]

现在ansible设置完成。 下一步,应创建清单文件并针对托管主机运行一些 ansible 命令。

3.2.2. 测试 Ansible 配置

Ansible 有两个重要的文件需要提交 特别指定 或者 剧本 命令。

  1. Ansible.cfg – ansible 配置文件。
  2. Hosts – 提供主机详细信息的清单文件。

好吧,在单独的文章中更深入地讨论配置和清单文件。 在运行第一个 ansible 命令时,您只需要在清单文件中添加您的受管节点主机名。

Ansible 配置文件位于 /etc/ansible/ansible.cfg 文件。 您还可以通过运行 ansible version 命令:

$ ansible --version ansible 2.9.0  config file = /etc/ansible/ansible.cfg  configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible  executable location = /usr/local/bin/ansible  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

打开 ansible.cfg 文件并查找参数清单。 ansible 在运行时将引用此参数以获取清单文件路径。

$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg #inventory        = /etc/ansible/hosts

库存默认指向 /etc/ansible/hosts 文件。 打开 hosts 文件并添加受管节点主机名/IP 地址。

我有一个 DNS 到 IP 的映射,所以我在主机文件中给出了 dns 名称。 您还可以提供 IP 地址。

Ansible 清单文件Ansible 清单文件

一切都设置为在 ansible 中运行我们的任务!

类似于 "Hello world" program 在编程中,ansible 也有运行一个的传统 ping 模块作为检查控制器和受管节点之间连接的第一个命令。

ping 模块将尝试访问托管节点并检查是否有任何 python 解释器可供使用并响应为 pong.

$ ansible all -m ping

您还可以使用显式指定主机文件 -i 标志如下:

$ ansible all -m ping -i flag <path-to-host-file>
Ansible Ping 模块Ansible Ping 模块

现在您可以开始使用您想使用的任何模块。

如果您希望添加更多控制器节点,您所要做的就是将 SSH 密钥从控制器节点复制到新节点,并在主机文件中添加 IP/DNS 条目。 然后,ansible 可以开始选取新添加的托管节点。 就这么简单!

结论

在本指南中,我们讨论了如何在 Linux 中安装和配置 Ansible。 我们还向您展示了如何手动设置三节点 Ansible homelab。

还有其他自动化解决方案,例如使用以下方法设置 ansible 实验室 流浪汉 或者 码头工人. 我们将在即将发布的文章中介绍这些主题。

Ansible 是一个广阔的话题! 我们只介绍了 Ansible 基础知识。 查看 官方 Ansible 文档 了解有关 Ansible 用法的更多信息。

AnsibleAnsible 实验室设置自动化配置管理系统配置 Ansible 安装 AnsibleIT 自动化LinuxLinux 管理开源PythonRedhat