ansible教程:ansible的hosts文件配置

ansible能操作哪些主机,可以通过设置hosts来实现。


ansible设置需要操作的机器

ansible怎么知道要操作哪些机器,需要在/etc/ansible/hosts中添加机器,/etc/ansible/hosts是ansible管理的机器清单。打开这个文件,你打开可能是英文,我们将其翻译为中文,如下:

# 这是ansible的hosts文件
#
# 这个文件应该放在 /etc/ansible/hosts 目录下
#
#   - 注释用#符号
#   - 空行是没用的
#   - 组用[]括起来
#   - 你可以输入机器名或者ip
#   - 一个机器名或ip可以属于多个组

# 例子1:没有分组的主机,放在所有组的前面,要使用的时候,请去掉注释

## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# 例子2:定义一个webservers组,webservers后面跟的是域名和ip

## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110


# 如果你有多个连续的域名,可以使用下面的方式,表示www001..example.com到www006..example.com的域名
## www[001:006].example.com

# 例子3:定义了dbservers组,dbservers包含4台机器
## [dbservers]
##
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57

请多看看上面的注释,可能不需要看下面的内容,你也应该明白了。:)


像/etc/ansible/hosts写入机器ip

为了操作2台机器,可以向里面写入这2台机器的ip,如下:

192.168.1.39
192.168.1.40

需要操作的机器ip是192.168.1.39和192.168.1.40,你可以填写你自己的自己的ip。这里表示ansible会操作192.168.1.39、192.168.1.40这2台机器。

配置完成后,可以使用ansible 192.168.1.39 -m ping命令来查看一下是否配置成功

[root@ecs-3f37-0003 bin]# ansible 192.168.1.39 -m ping
192.168.1.39 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

除了直接写ip地址到主机清单配置/etc/ansible/hosts文件中外,还可以对机器进行分组,如可以设置一个webservers组,组用中括号括起来,后面更一些机器的域名或者IP地址。如下的webservers组有4台机器。

[webservers]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110

如果要批量的在webservers上执行某个命令,可以如下代码:

ansible webservers -m ping

如果运行上面的命令出现错误,那么可能是没有设置免密登录,需要设置免密登录。


ansible设置免密登录

在 https://www.hellodemos.com/hello-ssh-keygen/ssh-keygen-login.html 这个网址有配置免密登录的脚本:

wget http://66-ai.com/download/script-litte-prince/app/ssh-keygen.sh -O /root/ssh-keygen.sh && sh /root/ssh-keygen.sh

按照上面那个网址提示,就可以很容易的配置免密登录了。配置免密登录后,运行ansible就可以成功了。