Ansible是用于常见IT任务(例如配置远程计算机或容器编排,连续部署等)的自动化工具。在本文中,我们将使用Ansible通过主节点或控制节点(管理或管理计算机的机器)配置多台远程计算机。将任务推送到这些远程计算机以执行)。
在开始实施之前,您应该熟悉一些术语:
- 控制节点用于通过调用ansible或ansible-剧本命令运行Ansible命令和剧本。
- 主机不过是由控制节点控制的远程计算机,在这些计算机与控制节点之间建立SSH连接,然后再由控制节点和接收它的主机推送任务。
- 剧本是用YAML编写的配置文件/任务文件,其中包含需要在主机上顺序执行的一组任务。
现在您知道了基础知识,让我们从实现开始。对于本文,我们在AWS上使用三个EC2实例,其中一个是控制节点或主节点,另外两个是主机/远程计算机。 EC2(弹性计算云)是亚马逊最受欢迎的产品之一。 EC2实例是虚拟服务器或虚拟机,可用于部署应用程序。它属于IAAS(基础设施即服务)。 EC2服务功能与租金计算,存储和网络有关。
如果要使用EC2实例,则需要确保控制节点可以访问每个实例(主机),并且需要在控制节点中将主机的SSH公钥添加到授权的SSH密钥和反之亦然。因此,首先使用以下命令进行操作:
//on each machine run and hit enter this will generate two files in root namely .ssh/id_rsa and .ssh/id_rsa.pub
$ ssh-keygen
现在,剪切并复制id_rsa.pub的内容,并将其添加到作为主机的其他服务器中。如果要对主机上的控制节点执行此操作,请使用以下命令:
$ cat ~/.ssh/id_rsa.pub
//on other servers
$ cat {coppied_content} >> ~/.ssh/authorized_keys
现在检查是否可以从控制计算机SSH托管主机
在控制节点上,我们需要安装Ansible:
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible //this will add ansible repository in your machine
$ sudo apt-get update
// install ansible using
$ sudo apt-get install ansible
检查是否已安装Ansible:
$ ansible --version
现在,我们需要在主机清单中添加主机地址,该主机地址是/ etc / ansible中称为host的文件,可以在其中添加IP地址或别名或IP地址的组号。转到/ etc / ansible / hosts文件,然后添加主机的IP地址。您可以一个一个地输入,也可以创建一个组,然后在组中使用该组,通过输入组名来指定这些地址。
现在,让我们检查Ansible是否可以到达我们的主机。 Ansible模块是预构建的脚本,可以在我们的剧本内部使用,也可以作为带有某些参数的独立命令来运行特定任务,例如,以下命令用于对该组中的所有服务器执行ping操作。
ansible -m ping
在上图中,您可以看到在对几个服务器组执行ping请求之后,成功完成了回调。
让我们尝试更多的Ansible模块
// check the os-release of our hosts
$ ansible web-servers -a "cat /etc/os-release"
您也可以使用以下方法重新引导计算机
$ ansible -a web-servers "reboot"
现在让我们跳入使用Ansible剧本的过程,如上所述,这些不过是YAML文件。
让我们检查一下文本编辑器nano是否已安装在我们的主机(远程计算机)中。创建一个YAML文件并粘贴以下几行以确保缩进正确。这里发生的是:
- 名称–是剧本的名称
- 主机–我们在其中添加服务器的组名
- 任务–是在YAML中写为数组的一组任务,apt是命令, state是服务或nano的状态。
- name: isnano
hosts: web-servers
tasks:
- name: ensure nano is installed
apt:
name: nano
state: latest
您可以使用Ansible做很多事情,使用模块和剧本来控制服务器和远程服务器或机器,所以不要在这里停下来尝试使用Ansible尝试其他事情,