运行环境
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