Ansible 安装

0x01 概念

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

虽然有许多流行的配置管理系统可用于Linux系统,例如Chef和Puppet,但这些系统通常比许多人想要或需要的更复杂。 Ansible是这些选项的绝佳替代品,因为它需要更小的开销才能开始。

0x02 运作原理

Ansible通过从安装和配置了Ansible组件的计算机配置客户端计算机来工作。

它通过正常的SSH通道进行通信,以从远程计算机检索信息,发出命令和复制文件。 因此,Ansible系统不需要在客户端计算机上安装任何其他软件。

这是Ansible简化服务器管理的一种方式。 任何暴露了SSH端口的服务器都可以置于Ansible的配置保护伞下,无论它在生命周期中处于什么阶段。 这意味着您可以通过SSH管理的任何计算机,您也可以通过Ansible进行管理。

Ansible采用模块化方法,可以轻松扩展以使用主系统的功能来处理特定的场景。 模块可以用任何语言编写,并以标准JSON进行通信。

配置文件主要以YAML数据序列化格式编写,因为它具有表现性和与流行标记语言的相似性。 Ansible可以通过命令行工具或其配置脚本(称为Playbooks)与主机进行交互。

0x03 实验设备

  • 两个或更多Ubuntu 18.04服务器。 其中一个将用作Ansible服务器 ,其余部分将用作Ansible主机 。 每个人都应该拥有一个具有sudo权限且配置了基本防火墙的非root用户。 您可以按照我们的Ubuntu 18.04初始服务器设置指南进行设置 。 请注意,本指南中的示例指定了三个Ansible主机,但显示的命令和配置可以针对任意数量的客户端进行调整。
  • 为Ansible服务器上的非root用户生成的SSH密钥。 为此,请按照我们的指南中有关如何在Ubuntu 18.04上设置SSH密钥的第1步进行操作。 出于本教程的目的,您可以将密钥对保存到默认位置( ~/.ssh/id_rsa ),而无需对其进行密码保护。

0x04 安装 ansible

要开始使用Ansible作为管理各种服务器的方法,您需要在至少一台计算机上安装Ansible软件。

要获取最新版本的Ansible for Ubuntu,您可以将项目的PPA(个人包存档)添加到您的系统。 但是,在执行此操作之前,您应首先更新软件包索引并安装software-properties-common软件包。 该软件可以更轻松地管理这个和其他独立的软件存储库:

sudo apt update
sudo apt install software-properties-common

键入以下命令添加Ansible PPA:

sudo apt-add-repository ppa:ansible/ansible

按ENTER接受PPA添加。

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

sudo apt update

在此更新后,您可以安装Ansible软件:

sudo apt install ansible

0x05 配置对Ansible主机的SSH访问

如前所述,Ansible主要通过SSH与客户端计算机通信。 虽然它当然能够处理基于密码的SSH身份验证,但使用SSH密钥可以帮助保持简单。

在Ansible服务器上,使用cat命令将非root用户的SSH公钥文件的内容打印到终端的输出:

cat ~/.ssh/id_rsa.pub

将生成的输出复制到剪贴板,然后打开一个新终端并使用SSH连接到您的一个Ansible主机:

ssh sammy@ansible_host_ip

切换到客户端计算机的root用户:

su -

以root用户/.ssh打开/.ssh目录中的authorized_keys :

nano ~/.ssh/authorized_keys

在文件中,粘贴Ansible服务器用户的SSH密钥,然后保存文件并关闭编辑器(按CTRL + X , Y ,然后按ENTER )。 然后运行exit命令返回主机的非root用户:

exit 

最后,因为Ansible使用位于/usr/bin/python的python解释器来运行其模块,所以您需要在主机上安装Python 2,以便Ansible与之通信。 运行以下命令以更新主机的包索引并安装python包:

sudo apt update
sudo apt install python

在此之后,可以再次运行exit命令以关闭与客户端的连接:

exit

0x06 设置Ansible主机

Ansible通过hosts文件跟踪它所知道的所有服务器。 在我们开始与其他计算机通信之前,我们需要先设置此文件。

使用sudo权限打开文件,如下所示:

sudo nano /etc/ansible/hosts

在文件内部,您将看到许多已注释掉的示例配置(每行前面有一个# )。 这些示例实际上对我们不起作用,因为每个主机中列出的主机都已组成。 但是,如果我们希望将来实现更复杂的方案,我们将在文件中保留这些示例以帮助我们进行配置。

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

[group_name]
alias ansible_ssh_host=your_server_ip

在此示例中, group_name是一个组织标记,允许你使用一个单词引用其下列出的任何服务器,而alias只是引用一个特定服务器的名称。

因此,在该场景中想象我们将使用Ansible控制三台服务器。 此时,可以通过键入以下内容从Ansible服务器访问这些服务器:

ssh root@ansible_host_ip

如果您已正确设置密码,则不应提示您输入密码。 出于演示的目的,我们假设我们的主机的IP地址是203.0.113.1和203.0.113.3 。 我们将对此进行设置,以便我们可以将它们分别称为host1 , host2和host3 ,或者作为名称为servers的组。

这是我们应该添加到hosts文件中的块来完成此任务:

[servers]
host1 ansible_ssh_host=203.0.113.1
host2 ansible_ssh_host=203.0.113.2
host3 ansible_ssh_host=203.0.113.3

0x07 使用简单的Ansible命令

通过键入以下命令ping您配置的所有服务器:

ansible -m ping all

output

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

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

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

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

all意味着所有主机。 我们可以轻松指定一个组:

ansible -m ping servers

还可以指定一个单独的主机:

ansible -m ping host1

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

ansible -m ping host1:host2

该命令的-m ping部分是Ansible使用“ping”模块的指令。 这些基本上是可以在远程主机上运行的命令。 ping模块以多种方式运行,如Linux中的普通ping实用程序,但它会检查Ansible连接。

ping模块并不真正接受任何参数,但我们可以尝试另一个命令来查看它是如何工作的。 我们通过输入-a将参数传递给脚本。

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

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

output

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

0x08 总结

在本文中配置了Ansible并验证它可以与每个主机通信。 还使用ansible命令远程执行简单任务。

虽然这很有用,但我们在本文中没有介绍Ansible最强大的功能:Playbooks。 Ansible Playbooks是一种管理服务器配置和多机器部署的强大而简单的方法。 建议查看官方的Ansible文档,以了解更多信息。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值