安装ansible的主机 | 被管理的主机(无需安装ansible) |
---|---|
192.168.2.2.50 | 192.168.2.101 |
1、安装
yum install epel-release
yum install ansible
2、配置
ls /etc/ansible
# ansible.cfg 是 Ansible 工具的配置文件;
hosts 用来配置被管理的机器;
roles 是一个目录,playbook 将使用它
ansible.cfg hosts roles
3、配置免密登录,将2.250的秘钥复制到2.101上
ssh-keygen
ssh-copy-id root@192.168.2.101
4、hosts 文件添加被管理机
vim /etc/ansible/hosts
192.168.2.101
也可以添加组
[kangbao] #定义组
192.168.2.101
[user] #定义多个组
192.168.2.101
也可以添加域名或者port
www.baidu.com #定义域名
192.168.2.101:3333 #指定接口
5、测试
[root@office_test ~]# ansible 192.168.2.101 -m ping #测试一个地址192.168.2.101,协议为ping
192.168.2.101 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@office_test ~]# ansible kangbao -m ping #测试kangbao组,协议为ping
192.168.2.101 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@office_test ~]# ansible all -m ping #测试所有,协议为ping
192.168.2.101 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@office_test ~]# ansible 192.168.2.101 -m shell -a "ip add" #执行shell命令
192.168.2.101 | CHANGED | rc=0 >>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:54:e8:df:07:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.101/24 brd 192.168.2.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
# -i 指定 hosts 文件位置
# -u username 指定 SSH 连接的用户名
# -k 指定远程用户密码
# -f 指定并发数
# -s 如需要 root 权限执行时使用 ( 连接用户不是 root 时 )
# -K -s 时,-K 输入 root 密码
6、常用模块练习
ansible-con -l #列出ansible支持的模块
ansible-doc ping #查看该模块帮助信息
7、说明
vim /etc/ansible/hosts
172.20.100.197 ansible_ssh_pass='123456' #定义了一个主机172.20.100.197,使用123456进行ssh登录
172.20.100.108 ansible_ssh_pass="123456789"
[docker]
172.20.100.10[0:3] 定义了docker组下面有4台主机172.20.100.100--100.103
[docker:vars]
ansible_ssh_pass="123456" #docker组使用123456进行ssh登录
[ansible:children] 定义了一个ansible组,包含docker组
docker
8、多个inventory
首先更改ansible.cfg 里面的参数
inventory = /root/rongkang/ansible/
[root@office_test ansible]# pwd
/root/rongkang/ansible
[root@office_test ansible]# ll
total 8
-rw-r--r-- 1 root root 74 Dec 16 13:54 docker
-rw-r--r-- 1 root root 93 Dec 16 13:53 hosts
[root@office_test ansible]# cat hosts
172.20.100.197 ansible_ssh_pass='123456'
172.20.100.108 ansible_ssh_pass="123456789"
[root@office_test ansible]# cat docker
[docker]
172.20.100.10[0:3]
[docker:vars]
ansible_ssh_pass="123456"
[root@office_test ansible]# ansible 172.20.100.197:172.20.100.108 --list-host
hosts (2):
172.20.100.197
172.20.100.108
[root@office_test ansible]# ansible docker --list-hosts
hosts (4):
172.20.100.100
172.20.100.101
172.20.100.102
172.20.100.103