生命不息
折腾不止

ansible教程(1):小白都会用的自动化运维工具.服务器多的方便管理拉.

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 后面跟着要执行的脚本位置

这个模块本质就是把脚本传送到被控的服务器上然后执行 .

执行后就可以看到执行结果 :

学会了执行命令和执行脚本 , 是不是管理多台服务器的时候就方便很多拉 ?

大家可以好好消化下 , 更多的高级用法 , 在后续有空的时候再给大家讲解 . 大家有什么疑问也可以留言 . 我尽力回答 .

赞(0)
未经允许不得转载:91云(91yun.co) » ansible教程(1):小白都会用的自动化运维工具.服务器多的方便管理拉.

留言 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址