参考文章:http://sofar.blog.51cto.com/353572/1579894
一、服务端:
1.安装第三方epel源
centos 6的epel
[root@ansible ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@ansible ~]# rpm -ivh epel-release-6-8.noarch.rpm
2.安装ansible
[root@ansible ~]# yum install ansible -y
[root@ansible ~]# ll /etc/ansible
-rw-r--r-- 1 root root 8625 Oct 11 18:06 ansible.cfg
-rw-r--r-- 1 root root 1046 Oct 11 18:06 hosts
ansibles.cfg是配置文件,hosts是管理主机信息
3.ansible 配置
[root@ansible ~]#vim /etc/ansible/ansible.cfg
……
remote_port = 36000
private_key_file = /root/.ssh/id_rsa_storm1 #密钥位置
……
##主机组定义
# vim /etc/ansible/hosts
[storm_cluster]
10.223.55.100:15322
10.223.55.101
10.223.38.226
10.223.38.227
10.223.39.216
10.223.25.123
4.生成密钥
[root@ansible ~]# ssh-keygen -t rsa
[root@ansible ~]#echo "StrictHostKeyChecking no" > /root/.ssh/config
二、客户端:
密钥分配到各机器 /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
三、测试:
1.测试连通性
[root@ansible ~]#ansiblestorm_cluster-m ping
2.批量发布远程命令
[root@ansible ~]#ansiblestorm_cluster-mcommand-a 'uptime'
3.复制文件到远程主机
[root@ansible ~]#ansiblestorm_cluster-mcopy-a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"
src为本地文件路径,dest为目标主机存放路径
4.远程重启服务
[root@ansible ~]#ansiblestorm_cluste-mservice-a "name=nginx state=restarted"
name是服务名称
state是执行的操作,有: started\stopped\restarted
5.远程执行shell脚本
##将创建的脚本文件分发到远程
# ansible storm_cluster -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh owner=root group=root mode=0755"
##远程执行
# ansible storm_cluster -mshell-a "/tmp/test.sh"
参数:
Usage: ansible[options]
Options:
-m MODULE\_NAME, --module-name=MODULE\_NAME 要执行的模块,默认为 command
-a MODULE_ARGS, --args=MODULE_ARGS 模块的参数
-u REMOTE_USER, --user=REMOTE_USER ssh 连接的用户名,默认用 root,ansible.cfg 中可以配置
-k, --ask-pass 提示输入 ssh 登录密码,当使用密码验证登录的时候用
-s, --sudo sudo 运行
-U SUDO_USER, --sudo-user=SUDO_USER sudo 到哪个用户,默认为 root
-K, --ask-sudo-pass 提示输入 sudo 密码,当不是 NOPASSWD 模式时使用
-B SECONDS, --background=SECONDS run asynchronously, failing after X seconds(default=N/A)
-P POLL_INTERVAL, --poll=POLL_INTERVAL set the poll interval if using
-B (default=15)
-C, --check 只是测试一下会改变什么内容,不会真正去执行
-c CONNECTION 连接类型(default=smart)
-f FORKS, --forks=FORKS fork 多少个进程并发处理,默认 5
-i INVENTORY, --inventory-file=INVENTORY 指定 hosts 文件路径,默认 default =/etc/ansible/hosts-l SUBSET, --limit=SUBSET 指定一个 pattern,对已经匹配的主机中再过滤一次
--list-hosts 只打印有哪些主机会执行这个 playbook 文件:不是实际执行该 playbook
-M MODULE_PATH, --module-path=MODULE_PATH 要执行的模块的路径,默认为/usr/share/ansible/
-o, --one-line 压缩输出,摘要输出
--private-key=PRIVATE_KEY_FILE 私钥路径
-T TIMEOUT, --timeout=TIMEOUT ssh 连接超时时间,默认 10 秒
-t TREE, --tree=TREE 日志输出到该目录,日志文件名会以主机名命名
-v, --verbose verbose mode (-vvv for more, -vvvv to enable connection debugging)
再补充。