ansible 好用的地方在于 , 他无需在被控的服务器上安装任何软件 . 走的就是普通的 ssh,
今天来教大家最简单的用法 . 批量在多台机子上执行命令 .
第一步 , 安装 ansible
Centos
yum install ansible -y
Ubuntu
sudo apt-get update sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
第二步 : 配置被控机
被控的机子的配置在 /etc/ansible/hosts
[webserver] 206.189.72.94 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=91yun.co 104.248.77.45 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=91yun.co 104.248.77.60 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=91yun.co
[webserver]
是服务器的组名 , 可以自定义名称 . 把相同特征的服务器放在一个组里 , 后面方便批量操作
206.189.72.94
服务器地址 , 可以是域名
ansible_ssh_user
用以登录的用户名 , 我为了图方便 , 都是用 root 登录
ansible_ssh_port
ssh 的端口 , 如果你不是用 22, 可以指定这个参数 . 如果是 22, 可以省略
ansible_ssh_pass
登录的密码
ansible_ssh_private_key_file
如果你是使用密钥登录 , 这个参数可以指定密钥文件的地址
第三步 : 允许使用密码登录
一般情况下 , 为了安全考虑 ,ansible 最好用密钥登录 , 但是如果你平时都是用密码管理服务器 , 那么这里就要修改下配置文件 , 运行密码登录 .
vi /etc/ansible/ansible.cfg
host_key_checking = False
原本这行是注释掉的 , 把前面的 # 去掉 .
第四步 : 执行批量命令
ok, 准备工作都已做完 . 我们来执行第一个命令 :
ansible webserver -m shell -a "ping 1.1.1.1 -c 3"
webserver
就是上面 hosts 里面定义的服务器组的组名 .
-m shell
指定 ansible 执行 shell 模块 ,ansible 有众多模块 , 以后会陆续写教程 , 这里以使用 shell 模块执行 shell 命令为例
-a "ping 1.1.1.1 -c 3"
-a 指定后面要执行的命令 , 这里是 ping 1.1.1.1 3 次
执行后 , 会即时返回所有服务器的执行结果 . 如下图 :
如果你有众多命令 , 可以把他写成一个脚本 . 比如
我在 /home/1.sh
里写了两行脚本
现在我们使用 ansible 的 script 模块来执行这个脚本
ansible]# ansible all -m script -a "/home/1.sh"
all
all 就是说明要执行 hosts 文件里面的所有服务器 .
-m script
说明使用 ansible 的 script 模块
-a "/home/1.sh"
-a 后面跟着要执行的脚本位置
这个模块本质就是把脚本传送到被控的服务器上然后执行 .
学会了执行命令和执行脚本 , 是不是管理多台服务器的时候就方便很多拉 ?
大家可以好好消化下 , 更多的高级用法 , 在后续有空的时候再给大家讲解 . 大家有什么疑问也可以留言 . 我尽力回答 .