1.确保机器上安装的是 Python 2.6 或者 Python 2.7 版本:
python -V
2.查看yum仓库中是否存在ansible的rpm包
yumlist|grepansible
若不存在或是低版本可更换yum源或者采用源码安装
阿里云的yum源:http://mirrors.aliyun.com/repo/ 备份源文件,然后下载对应的版本至/etc/yum.repos.d/目录即可,如epel-6.repo (通过该yum源安装ansible会依赖python 2.6,如果python版本是2.7以上可能会安装失败)
3.安装ansible服务:
yuminstallansible-y
4.修改ansible配置和主机列表hosts:
sed-i"s@\#host_key_checking=False@host_key_checking=False@g"/etc/ansible/ansible.cfg
指定日志路径:
sed-i"s@\#log_path=\/var\/log\/ansible.log@log_path=\/var\/log\/ansible.log@g" /etc/ansible/ansible.cfg
2)将所有主机ip加入到/etc/ansible/hosts文件中:
定义主机组和主机
默认ssh的端口为22端口,如果为其他端口号,可在主机名后面加上端口号,如 192.168.159.131:9604 ,也可以修改配置文件中的remote_port变量值
/etc/ansible/hosts也可以定义一个主机范围,如192.168.159.[100:200] ,表示192.168.159.100 - 192.168.159.200 的主机
5.创建和配置SSH公钥认证(免密码登录):
ssh-keygen-trsa
按提示使用默认配置一路回车即可:
6.通过ansible将公钥分发至各主机上:
ansibleall-mauthorized_key-a"user=rootkey='{{lookup('file','/root/.ssh/id_rsa.pub')}}'path=/root/.ssh/authorized_keysmanage_dir=no"--ask-pass-cparamiko
需要输入主机的密码,若是有的主机密码不一致,那么该主机会分发失败,此时只需再执行一遍命令输入该主机密码即可。或者先将密码相同的主机进行分组,然后依次指定主机组执行命令分批分发公钥。
此命令是通过追加的方式来推送公钥至authorized_keys,所以不用担心原来的文件内容会被覆盖。
到任意一台主机上查看,可以看到公钥已成功推送:
sed-i"s@\#private_key_file=\/path\/to\/file@private_key_file=\/root\/.ssh\/id_rsa@g"/etc/ansible/ansible.cfg
8.测试:
可以在命令后面加上-vvvv参数查看详细的输出结果,尤其是在命令执行失败需要排错的时候非常有用。
9.自动化安装脚本:
注意:
①执行脚本前需要配置/root/hosts主机列表文件,内容如:
[root@localhost ~]# cat /root/hosts
[app]
192.168.159.130
[web]
192.168.159.131
②脚本分发公钥至远程主机时会提示输入远程主机的密码
③脚本通过yum方式安装
脚本内容:
#!/bin/bash # ############################################# #author:ellen #describes:自动化安装和配置ansible #version:v1.0 #updated:20170531 ############################################# # #主机列表文件 hostfile='/root/hosts' #错误信息以红色显示 function_err { echo-e"\033[1;31m[ERROR]$@\033[0m" } #一般信息以绿色显示 function_info { echo-e"\033[1;32m[Info]$@\033[0m" } #仅限指定用户运行本脚本 if[$EUID!="0"];then echo"Pleaseuserootrunscript!!!" exit1 fi rpm-qa|grepansible if[$?-eq0];then _err"ansible已存在,无需重复安装!退出..." exit1 fi if[-e$hostfile];then yumlist|grepansible if[$?-ne0];then _err"仓库不存在ansible的rpm包,退出..." exit1 else yuminstallansible-y if[$?-eq0];then _info"ansible安装完毕..." sed-i"s@\#host_key_checking=False@host_key_checking=False@g"/etc/ansible/ansible.cfg sed-i"s@\#log_path=\/var\/log\/ansible.log@log_path=\/var\/log\/ansible.log@g"/etc/ansible/ansible.cfg cp$hostfile/etc/ansible/hosts _info"$hostfile已拷贝至/etc/ansible/目录" ssh-keygen-trsa-P''-f/root/.ssh/id_rsa _info"请按以下提示输入${hostfile}列表中的主机密码:" ansibleall-mauthorized_key-a"user=rootkey='{{lookup('file','/root/.ssh/id_rsa.pub')}}'path=/root/.ssh/authorized_keysmanage_dir=no"--ask-pass-cparamiko sed-i"s@\#private_key_file=\/path\/to\/file@private_key_file=\/root\/.ssh\/id_rsa@g"/etc/ansible/ansible.cfg _info"ansible已部署完毕!" else _err"ansible安装失败!" fi fi else _err"$hostfile主机列表文件不存在,请检查!" exit1 fi原文链接:https://www.f2er.com/centos/377403.html