初识Ansible

管理多台服务器一定是自动化运维,因为只有一台服务器,所以用虚拟机创建了3台Ubuntu-Server,开始选择的VirtualBox,因为NAT网络的缘故,主机无法和虚拟机ping通,但是VMware不同,他会虚拟出一个网卡,和虚拟机联通,这样使用NAT更为方便。用VirtualBox,自建虚拟网卡没成功。

还有个方法就是,一个虚拟机使用桥接,虚拟机连入NAT网络中的其他虚拟机,主机通过桥接的虚拟机SSH反向代理连入其他虚拟机。学习个Ansible搞那么麻烦,直接安装VMware吧。

进入Ansible

在google查的资料上说,Ansible通过ssh协议连接服务器,有验证过程。百台服务器以内使用Ansible效率很好,但是千台以上就不适合了。那就需要saltstack了。

安装

我是在Python虚拟环境下安装。直接 pip install ansible。

创建 /etc/ansible/hosts 文件

1
2
3
172.16.75.130:22
172.16.75.129:22
172.16.75.128:22

如果分组,则

1
2
3
4
5
[vm1]    # 组名
172.16.75.130:22 # 主机:指定
172.16.75.129:22
[vm2]
172.16.75.128:22

如果没有使用公钥,使用密码可以这样

1
2
3
4
[vm]
vm1 ansible_ssh_user=root ansible_ssh_host=172.16.75.130 ansible_ssh_pass="test"
vm2 ansible_ssh_user=root ansible_ssh_host=172.16.75.129 ansible_ssh_pass="test"
vm3 ansible_ssh_user=root ansible_ssh_host=172.16.75.128 ansible_ssh_pass="test"

也可以使用通配符 s[001:003].whnzy.com

简单使用

常用参数

1
2
3
4
5
-u username          指定ssh连接的用户名,即执行后面命令的用户
-i inventory_file 指定所使用的inventory文件的位置,默认为/etc/ansible/hosts
-m module 指定使用的模块,默认为command,shell模块可以使用管道,而command则不可以
-f 10 指定并发数,并发量大的时候,提高该值
--sudo [-k] 当需要root权限执行的化,-k参数用来输入root密码,需要安装sshpass(apt-get)

Instance:

第一次连接就会上传公钥

1
2
ansible -i /etc/ansible/hosts all -m command -a 'who' -u haining
ansible -i /etc/ansible/hosts all -m command -a 'who' -u haining

后记

本地没有用root,想用root取执行总是验证失败,而且需要sudo权限的,-k参数也无任何作用。已配置好 本地hosts,config。可以ssh s001 直接登录了。