📜  使用Ansible管理远程计算机

📅  最后修改于: 2021-04-17 04:07:05             🧑  作者: Mango

Ansible是用于常见IT任务(例如配置远程计算机或容器编排,连续部署等)的自动化工具。在本文中,我们将使用Ansible通过主节点或控制节点(管理或管理计算机的机器)配置多台远程计算机。将任务推送到这些远程计算机以执行)。

在开始实施之前,您应该熟悉一些术语:

  • 控制节点用于通过调用ansibleansible-剧本命令运行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尝试其他事情,