设为首页 收藏本站
查看: 1204|回复: 0

[经验分享] CentOS下部署ansible自动化工具

[复制链接]

尚未签到

发表于 2018-7-29 12:14:37 | 显示全部楼层 |阅读模式
  1.确保机器上安装的是 Python 2.6 或者 Python 2.7 版本:
  python -V
DSC0000.png

  2.查看yum仓库中是否存在ansible的rpm包
  yum list|grep ansible
  若不存在或是低版本可更换yum源或者采用源码安装
  阿里云的yum源:http://mirrors.aliyun.com/repo/  备份源文件,然后下载对应的版本至/etc/yum.repos.d/目录即可,如epel-6.repo (通过该yum源安装ansible会依赖python 2.6,如果python版本是2.7以上可能会安装失败)
DSC0001.png

  3.安装ansible服务:
  yum install ansible -y
  4.修改ansible配置和主机列表hosts:
  1)关闭第一次使用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
  2)将所有主机ip加入到/etc/ansible/hosts文件中:
  定义主机组和主机
DSC0002.png

  默认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 -t rsa
  按提示使用默认配置一路回车即可:
DSC0003.png

  6.通过ansible将公钥分发至各主机上:
  ansible all -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}' path=/root/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko
DSC0004.png

  需要输入主机的密码,若是有的主机密码不一致,那么该主机会分发失败,此时只需再执行一遍命令输入该主机密码即可。或者先将密码相同的主机进行分组,然后依次指定主机组执行命令分批分发公钥。
  此命令是通过追加的方式来推送公钥至authorized_keys,所以不用担心原来的文件内容会被覆盖。
  到任意一台主机上查看,可以看到公钥已成功推送:
DSC0005.png

  7.修改ansible配置,指定私钥文件路径:
  sed -i "s@\#private_key_file = \/path\/to\/file@private_key_file = \/root\/.ssh\/id_rsa@g" /etc/ansible/ansible.cfg
  8.测试:
DSC0006.png

  可以在命令后面加上-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 "Please use root run script!!!"
  
exit 1
  
fi
  
rpm -qa|grep ansible
  
if [ $? -eq 0 ];then
  
_err "ansible 已存在,无需重复安装!退出..."
  
exit 1
  
fi
  
if [ -e $hostfile ];then
  
yum list|grep ansible
  
if [ $? -ne 0 ];then
  
_err "仓库不存在ansible的rpm包,退出..."
  
exit 1
  
else
  
yum install ansible -y
  
if [ $? -eq 0 ];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 -t rsa -P '' -f /root/.ssh/id_rsa
  
_info "请按以下提示输入 ${hostfile} 列表中的主机密码:"
  
ansible all -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}' path=/root/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko
  
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 主机列表文件不存在,请检查!"
  
exit 1
  
fi

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543024-1-1.html 上篇帖子: centos7下yum源安装ansible-welcomemyhome 下篇帖子: Ansible学习:(二)Ansible常用模块详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表