最近尝试一个新一点的开源的自动化运维部署工具,Ansible,发现非常好用。配置简单,功能强大。
1、ansible是为类Unix系统开发的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、SaltStack、chef等)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
2、Puppet、SaltStack、Chef这三个都采用C/S模式,每台被控机器都需要安装客户端,对于数量在数百台以上的机器上部署仍然有些麻烦。相比之下,Ansible无需安装服务端和客户端,只要SSH 验证即可。典型的“去中心化”思想。
3、使用简单,快速上手。以前在用Puppet之前,花了时间研究。本来使用Puppet就是想把自己从重复的事情中解放出来,结果为了简化一件事,而深入另一件复杂的事。
4、配置文件易读。Ansible 的主机定义文件使用 INI 格式,支持分组,能够指定模式;此外也能动态生成,这对管理云主机很有用。Playbook是YAML格式,比Puppet的DSL要易读易写很多。
1、安装:
Ansible默认不在yum的默认库中,需要启用epel库。(建议用阿里云的库,下载速度最快。)
# cd /etc/yum.repos.d/ # wget http://mirrors.aliyun.com/repo/epel-7.repo # yum install ansible -y
2、设置用于节点鉴权的SSH密钥:
在Ansible服务端生成密钥,并且复制密钥到各个被控节点中。
# ssh-keygen # ssh-copy-id -i root@10.36.16.20
3、为Ansible定义节点清单
节点维护清单在配置文件/etc/ansible/hosts 里面。
[16-servers] 10.36.16.12 10.36.16.15 10.36.16.16 10.36.16.17 10.36.16.18 10.36.16.19 10.36.16.20 10.36.16.21 10.36.16.22
4、基本使用:
检查16-servers节点组的连通性:
ansible 16-servers -m ping
检查16-servers节点组的内核版本:
ansible 16-servers -m shell -a "uname -a"
检查16-servers节点组的磁盘使用情况并把结果输出到本地指定文件:
ansible 16-servers -m shell -a "df -Th" > /root/df.txt
5、常用模块用法:
shell和command的区别:shell模块支持管道符和变量等特殊字符,而command不支持。
command模块(执行远程命令)
ansible 16-servers -m command -a "uname -a"
shell模块(执行远程主机的shell/python脚本)
ansible 16-servers -m shell -a "/root/xxx.py"
script模块(在远程主机执行主控端的shell/python脚本)
ansible 16-servers -m script -a "/root/xxx.py"
raw模块(类似于command模块、支持管道传递)
ansible 16-servers -m raw -a "netstat -na|grep ESTABLISHED|wc -l"
先说这些了,更详细用法请参考官方文档:
http://docs.ansible.com/
独立安装包U-Mail for CentOS(6.X) 安装教程
Linux CentOS 在不删除Linux自带JDK的情况下安装JDK1.8(图文教程:重点是环境变量的配置)...