一、服务端:
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
可能会报错
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
[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 ##--这个端口是指ssh端口,默认是22,改了会报错:"msg": "[Errno 111] Connection refused"
10.223.55.101
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 ~]#ansible storm_cluster -m ping
2.批量发布远程命令
[root@ansible ~]#ansible storm_cluster -m command -a 'uptime'
3.复制文件到远程主机
[root@ansible ~]#ansible storm_cluster -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"
src为本地文件路径,dest为目标主机存放路径
4.远程重启服务
[root@ansible ~]#ansible storm_cluste -m service -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) 再补充。
链接:https://www.jianshu.com/p/2e420f3eba2d
实战
任务
修改dns,由于无法确定原来的主机是否添加了nameserver,也不知道个数,所以建议先删除来追加到末尾
sed -i '/nameserver/d' /etc/resolv.conf
echo "nameserver=192.168.30.161\nnameserver=192.168.30.162" >> /etc/resolv.conf
修改root密码
echo '123' | passwd stadin root
安装或者更新vmtools
https://www.linuxidc.com/Linux/2017-05/143323.htm
Comments | NOTHING