管理多台服务器一定是自动化运维,因为只有一台服务器,所以用虚拟机创建了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 直接登录了。