ansible教程(1):小白都会用的自动化运维工具.方便管理多台服务器
ansible 好用的地方在于 , 他无需在被控的服务器上安装任何软件 . 走的就是普通的 ssh,
今天来教大家最简单的用法 . 批量在多台机子上执行命令 .
第一步 , 安装 ansible
Centos
1
|
yum install ansible –y
|
Ubuntu
1
2
3
4
5
|
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
1
2
3
4
|
[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
1
|
host_key_checking = False
|
原本这行是注释掉的 , 把前面的 # 去掉 .
第四步 : 执行批量命令
ok, 准备工作都已做完 . 我们来执行第一个命令 :
1
|
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 模块来执行这个脚本
1
|
ansible]# ansible all -m script -a “/home/1.sh”
|
all
all 就是说明要执行 hosts 文件里面的所有服务器 .
-m script
说明使用 ansible 的 script 模块
-a "/home/1.sh"
-a 后面跟着要执行的脚本位置
这个模块本质就是把脚本传送到被控的服务器上然后执行 .
执行后就可以看到执行结果 :
学会了执行命令和执行脚本 , 是不是管理多台服务器的时候就方便很多拉 ?
夜河资源网 » ansible教程(1):小白都会用的自动化运维工具.方便管理多台服务器