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就可以成功了。