Ansible详解(三)——Ansible主机清单

今天继续给大家介绍Linux运维相关知识,本文主要内容是Ansible的主机清定义。

一、Ansible主机清单定义方式

主机清单是Ansible的一个重要内容。在主机清单内,定义了Ansible需要控制的主机有哪些,以及其用户名、密码等信息,这些信息可以使得Ansible通过SSH链接到指定主机上。
Ansible的主机清单默认写在/etc/ansible/hosts文件中,我们在调用Ansible命令的时候,需要使用-i参数来指定主机清单文件。
Ansible的主机清单定义有两种方式,通过用户名和密码的方式或者是通过SSH密钥的方式。今天,我们就使用这两种方式来定义主机清单,尝试使用Ansible(192.168.136.20)来控制两台设备,分别是192.168.136.11和192.168.136.12。
在默认情况下,/etc/ansible/hosts文件为空的,我们需要手动的在文件内添加主机清单,在配置主机清单文件时,我们需要指定主机组,使用中括号可以设置一个主机组,中括号下的主机就属于该主机组。我们在执行Ansible命令的时候,必须指定主机组名。

二、基于用户名和密码定义主机清单

下面我们介绍第一种,基于用户名和密码来定义主机清单。
打开/etc/ansible/hosts文件,在文件的最后添加如下内容:

[exp]
192.168.136.11 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=pzz
192.168.136.12 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=pzz

ansible_ssh_port,ansible_ssh_user和ansible_ssh_pass三个参数分别定义了Ansible的SSH链接的端口号、用户名和密码。配置完成后,我们执行以下命令:

ansible -i /etc/ansible/hosts exp -m ping 

结果如下:
Ansible详解(三)——Ansible主机清单_第1张图片
可以看出,我们的Ansible主机清单配置成功,Ansible正常的访问了两台主机设备。
注意,在上述配置完成后,有时我们去测试时会出现以下报错:
Ansible详解(三)——Ansible主机清单_第2张图片
这种错误是由于我们尽管定义了主机清单,但是还需要在Ansible设备上手动的去链接以下客户端,执行命令:

ssh [email protected]

输入密码后链接成功,退出来之后就可以解决上述问题了。

三、基于SSH密钥来定义主机清单

除了上述方式之外,我们还可以基于SSH密钥来定义主机清单。
通过在Ansible设备上生成SSH密钥,然后把密钥发送给客户端,Ansible就可以使用密钥而不是使用密码来链接客户端并进行控制了。
Ansible设备上生成密钥命令如下:

ssh-keygen

根据提示,完成密钥生成,整个过程如下所示:
Ansible详解(三)——Ansible主机清单_第3张图片
密钥生成后,我们还需要把密钥发送给客户端,注意,Ansible服务器给Ansible客户端发送了密钥,可以使得Ansible服务器使用密钥访问客户端。这样,Ansible服务器在访问客户端的时候就不需要使用密码了,如下所示:
Ansible详解(三)——Ansible主机清单_第4张图片
这样,我们在定义主机清单的时候,就可以在/etc/ansible/hosts文件中,写入如下内容:

[exp]
192.168.136.11
192.168.136.12

我们再次尝试使用Ansible控制客户端,结果如下:
Ansible详解(三)——Ansible主机清单_第5张图片
注,在上述过程中,如果出现对话框询问是否接收密钥,可以直接选择yes,表示接收密钥,每次重复上述过程都会使得一台设备正常。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(自动化运维,linux,ssh,运维,Ansible,自动化)