运行环境
centOS6.6
ansible
ansible的功能还是比较多的,博主只用它在集群上进行批量部署软件和维护的功能,其他不多做研究,有需要的话这篇文章会慢慢补充。
ansible特点
- 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
- 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
- 使用python编写,维护更简单,ruby语法过于复杂;
- 支持sudo。
安装
yum install ansible
使用
配置ssh
ansible是通过基于ssh实现的,我们先配置ssh无密码登录ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub user@dp0655 ssh-copy-id -i ~/.ssh/id_rsa.pub user@dp0656 ssh-copy-id -i ~/.ssh/id_rsa.pub user@dp0657
主机组定义
这里定义了一个spark_test组vim /etc/ansible/hosts [spark_cluster] dp0655 dp0656 dp0657
连通测试
ansible all
的意思是对/etc/ansible/hosts
中的所有主机进行操作,我这只对spark_cluster
组进行操作。#查看spark_cluster组中的主机 ansible spark_cluster --list-hosts dp0655 dp0656 dp0657 #测试是否连通 ansible spark_cluster -m ping dp0657 | success >> { "changed": false, "ping": "pong" } dp0656 | success >> { "changed": false, "ping": "pong" } dp0655 | success >> { "changed": false, "ping": "pong" }
常用操作
用户和权限
-u 指定运行的用户(默认为root)
-s 使用sudo权限ansible spark_cluster -a "mkdir /usr/xx/xx" -s -u userName
copy
将本地文件/文件夹发送到远程主机,ansible的copy模块是围绕rsync的包装,所以它是增量而不是全量的拷贝。
参数说明:
src 本地文件/文件夹位置
dest 发送到远程主机的位置
owner(可选) 所属用户
group(可选) 所属用户组
mode(可选) 权限
将本地文件/etc/ansible/ansible.cfg复制到远程服务器
ansible spark_cluster -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=admin group=admin mode=0644"
批量执行脚本
在远程批量执行本地脚本ansible spark_cluster -m script -a "hello.sh"
ansible的中文操作手册
http://www.simlinux.com/books/Ansible-notes.pdf