本教程将教您如何在Ubuntu服务器上安装Ansible,并将minion服务器连接到Ansbille控制服务器。然后,我们将创建一个Ansible攻略,用于在minion服务器上安装一些基本软件包。本教程还将概述基本的Ansible命令,这些命令在将来会派上用场。
如果您曾经在dev-ops工作过或花费时间配置服务器以运行您的应用程序。你就会知道手工做这件事有多麻烦了。您不仅需要一遍又一遍地安装或配置相同的服务,还需要手动跟踪您已经做了什么以及还需要做什么。Ansible帮助解决了这个问题。Ansible安装在服务器上,用作控制站,用于存储“状态”并将“状态”应用于您选择与其连接的服务器。这使您可以高效地配置服务器来执行您的命令,而不必费力地手动完成。
要完成本教程,首先转到linode.com并使用Ubuntu Linux发行版创建2台服务器。一个名为Ansible-control,另一个名为Ansible-Web。一定要设置根密码,并让它们启动。
显示启动新Linode服务器的步骤的Linode教程可以在这里找到。
现在,我们必须添加Ansible PPA存储库。然后,我们可以将Ansible软件包安装到控制服务器上。
一旦安装了Ansible,我们就可以将Web服务器的IP地址添加到/etc/ansible/hosts文件中。您将看到许多注释行被删除。这些只是一个示例,但是由于这是一个Web服务器,我们可以将其放在注释掉的[WebServers]组中。为了利用组功能,我们还将取消对[webservers]行的注释。
#Ex2:属于组[webservers]<;ip-address-of-web-server>;##alpha.example.org##beta.example.org##192.168.1.100##192.168.1.110的主机集合。
或者,我们还可以通过在Ansible命令后添加组名来专门针对Web服务器组。还记得Hosts文件中的[WebServers]组吗?
如果您看到此响应,则表明我们的控制服务器能够通过ssh成功连接到minion服务器。我们已经连接了一个空白的跟班,我们已经准备好出发了。
剧本是一个YAML文件,它包含许多称为“PLAYS”的YAML结构。剧本是一个命名的父结构,它包含许多“任务”定义。任务是发送到minion服务器的单个命令或指令。剧本是在单一名称下组织的任务的集合。剧本是单个命名文件中的剧本集合。
剧本和攻略还具有属性,使您能够指定清单中的哪些主机希望任务在其上运行。
我们的第一个游戏非常简单,将以安装3个基本软件包为例。我们将安装vim、dnsutils和git。
-名称:安装基本软件包主机:Web服务器任务:-name:";安装Vim";apt:pkg=vim-name:";安装DNS实用程序";apt:pkg=dnsutils-name:";安装Git";apt:pkg=git。
如您所见,文件的顶部有三个连字符。这表明以下文本为YAML格式。
在此之后,第一个YAML属性是我们的剧名。我们可以随心所欲地称其为任何名称,但我们希望该名称描述嵌套在其中的所有分组任务的总体目的。
其次,我们有hosts属性。这将告诉Ansbille在我们库存中的哪个组上运行以下任务。如果我们用所有服务器替换Web服务器,它将在库存中的所有服务器上运行。
第三,我们有Tasks属性,它是我们想要为此特定游戏运行的所有任务的父级。
如您所见,Tasks下的每个任务都有两个必需的属性。一个是任务的名称,我们可以选择它来命名任何我们喜欢的名称。任务的第二部分告诉Ansible我们正在调用哪个模块。根据我们要使用的模块,随模块名称一起提供的所需信息会有所不同。
顶部的名称属性是您为任务选择的名称。第二个属性apt是模块名。下面是该给定模块的必需和可选属性。
这会将攻略应用于清单中[WebServers]组中的所有主机。您将看到一份报告,其中显示了每台主机的状态和已运行的任务。
播放[安装基础知识]***任务[收集事实]***。*确定:<;Web服务器的IP地址>;任务[安装Vim]***已更改:<;Web服务器的IP地址>;任务[安装DNS Utils]***已更改:<;Web服务器的IP地址>;任务[安装Git]***已更改:<;Web服务器的IP地址>;播放重述****<;Web服务器的IP地址>;:OK=1已更改=3无法访问=0失败=0已跳过=0已拯救=0已忽略=0。
正如您可以从输出底部的播放摘要中看到的那样,对minion服务器进行了3次更改。在应用我们的剧本之前,Ansible控制服务器从奴才那里收集初始数据,有1个OK结果。
Ansible的一个很酷的特性是它不会尝试重新运行已经成功运行的任务。如果我们再次运行攻略,您将看到这一点。
播放[安装基础知识]***任务[收集事实]***。*确定:<;Web服务器的IP地址>;任务[安装Vim]***已更改:<;Web服务器的IP地址>;任务[安装DNS Utils]***已更改:<;Web服务器的IP地址>;任务[安装Git]***已更改:<;Web服务器的IP地址>;播放重述****<;Web服务器的IP地址>;:OK=4已更改=0无法访问=0失败=0已跳过=0已拯救=0已忽略=0
正如您在底部看到的,有4个任务已完成,状态为正常,并且没有任何更改的服务器。
现在您已经了解了如何将服务器连接到Ansible控制服务器,并使用APT模块安装软件包。在下一个教程中,我们将使用Ansible角色来更好地组织我们的控制服务器。