Ansible的工作原理及安装Ansible软件

简介

配置管理系统的目的是让管理员和运营团队能够轻松控制大量服务器。它们允许您从一台服务器以自动化方式控制许多不同的系统。虽然有许多流行的配置管理系统可用于 Linux 系统,例如 Chef 和 Puppet,但这些系统更加复杂。 Ansible 是这些选项的绝佳替代品,因为服务开销要低得多,而且软件非常易于使用。

Ansible 通过从安装了 Ansible 组件的计算机配置客户端计算机来工作。它通过正常的 SSH 通道进行通信ps配置文件怎么设置,以从远程计算机检索信息、发出命令和复制文件。因此,Ansible 系统不需要在客户端计算机上安装任何其他软件。这是 Ansible 简化服务器管理的一种方式。任何暴露 SSH 端口的服务器都可以放在 Ansible 的配置中。

Ansible 采用模块化方法,可以轻松扩展以使用主系统的功能来处理特定场景。模块可以用任何语言编写并以标准 JSON 进行通信。配置文件主要以 YAML 数据序列化格式编写,因为它具有与流行标记语言的表达性和相似性。 Ansible 可以通过命令行工具或称为 Playbooks 的配置脚本与客户端交互。

在本教程中,您将在 CentOS 服务器上安装 Ansible,并学习一些有关如何使用该软件的基础知识。

准备

要学习本教程,您需要:

第一步,安装 Ansible

要开始探索 Ansible 作为管理各种服务器的一种方式ps配置文件怎么设置,我们需要在至少一台机器上安装 Ansible 软件。要获得适用于 CentOS 7 的 Ansible,首先请确保您已安装 CentOS 7 EPEL 存储库:

sudo yum install epel-release

安装仓库后,使用 yum 安装 Ansible:

sudo yum install ansible

我们现在拥有通过 Ansible 管理服务器所需的所有软件。

第二步,配置Ansible主机

Ansible 通过“hosts”文件跟踪所有服务器。在我们开始与其他计算机通信之前,我们需要先设置这个文件。

使用root权限打开文件如下:

sudo vi /etc/ansible/hosts

您将看到一个带有大量示例配置注释的文件。如果您希望将来实现更复杂的场景,请将这些示例保存在文件中以帮助您了解 Ansible 的配置。

hosts 文件非常灵活,可以通过多种不同的方式进行配置。使用的语法如下所示:

[group_name]
alias ansible_ssh_host=your_server_ip

group_name 是一个组织标记,允许您使用一个词来指代其下列出的任何服务器。别名只是引用该服务器的名称。如果你想使用 Ansible 控制三台服务器。 Ansible 通过 SSH 与客户端计算机进行通信,因此您可以通过键入 SSH 访问权限从 Ansible 服务器访问要管理的每个服务器:

ssh root@your_server_ip

我们建议您使用密钥进行配置。在购买和配置腾讯云 CVM 服务器时,配置相关的密钥应该有相应的设置。如果你设置了密码,希望你能改成密钥配置。

我们假设我们服务器的 IP 地址是 192.0.2.1, 192.0.2.2 和 192.0.2.3.让我们对其进行设置,以便我们可以将它们分别称为 host1、host2 和 host3,作为一组服务器。您可以通过将此块添加到主机文件来配置它:

[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2

图片[1]-Ansible的工作原理及安装Ansible软件-唐朝资源网

host3 ansible_ssh_host=192.0.2.3

主机可以在多个组中,并且组可以为其所有成员配置参数。让我们现在试试吧。

默认情况下,Ansible 将尝试使用您当前的用户名连接到远程主机。如果用户在远程系统上不存在,连接尝试将导致此错误:

host1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

让我们告诉 Ansible 它应该使用 sammy 用户连接到 [servers] 组中的服务器。在 Ansible 配置结构中创建一个名为 group_vars 的目录

sudo mkdir /etc/ansible/group_vars

复制

在这个文件夹中,我们可以为要配置的每个组创建 YAML 格式的文件:

sudo nano /etc/ansible/group_vars/servers

将此代码添加到文件中:

图片[2]-Ansible的工作原理及安装Ansible软件-唐朝资源网

---
ansible_ssh_user: sammy

YAML 文件以“—”开头,请确保不要忘记该部分。

完成后保存 ctrl+o 并关闭 ctrl+x 这个文件,现在 Ansible 将始终将 sammy 用户链接到服务器组,而不管当前用户如何。

如果您想为每个服务器指定配置详细信息,而不管组关联如何,您可以将这些详细信息放在 /etc/ansible/group_vars/all 文件中。可以通过在 /etc/ansible/host_vars 目录下创建文件来配置各个主机。

第三步,使用简单的 Ansible 命令

现在我们已经设置好主机并且有足够的配置允许我们连接到主机,我们可以尝试我们的第一个命令。

通过 ping 以下命令配置所有服务器:

ansible -m ping all

Ansible 将返回以下输出:

host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

​
host3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
​
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

这是确保 Ansible 与其所有主机连接的基本测试。

-m ping 命令是 Ansible 使用“ping”模块的指令。 ping 模块的运行方式与 Linux 中的普通 ping 实用程序类似,但它会检查 Ansible 连接。

all 表示“所有主机”。您可以轻松地指定一个组:

ansible -m ping servers

图片[3]-Ansible的工作原理及安装Ansible软件-唐朝资源网

您还可以指定单个主机:

ansible -m ping host1

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

ansible -m ping host1:host2

shell 模块允许我们向远程主机发送终端命令并检索结果。例如,要找出 host1 机器上的内存使用情况,我们可以使用:

ansible -m shell -a 'free -m' host1

如您所见,您可以使用 -a 标志将参数传递给脚本。这是输出的样子:

host1 | SUCCESS | rc=0 >>
             total       used       free     shared    buffers     cached
Mem:          3954        227       3726          0         14         93
-/+ buffers/cache:        119       3834
Swap:            0          0          0

结论

您应该已经学会了配置 Ansible 服务器以与您要控制的服务器进行通信。您可以验证 Ansible 是否可以使用 ansible 命令与远程执行简单任务的每台主机通信。

我们没有在本文中介绍 Ansible 最强大的功能:剧本。剧本。您已经为通过 Ansible 与您的服务器一起工作奠定了良好的基础,因此下一步是学习如何使用 Playbooks 为您完成复杂的工作。更多Linux教程请到腾讯云+社区学习。

© 版权声明
THE END
喜欢就支持一下吧
点赞290赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容