微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CentOS下部署ansible自动化工具

1.确保机器上安装的是 Python 2.6 或者 Python 2.7 版本:

python -V

wKioL1kvfCbzO0vTAAAKtYgsq-I214.png

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以上可能会安装失败

wKioL1kvfDSR3cZzAAAZ7DNP8sQ445.png

3.安装ansible服务:

yuminstallansible-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文件中:

定义主机组和主机

wKiom1kvfEPSL34_AAALDgKvzmI430.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-trsa

提示使用认配置一路回车即可:

wKioL1kvfFHSTklVAAA-V5vepVg800.png

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

wKioL1kvfF7T4VlnAACF1MzgY-E291.png

需要输入主机的密码,若是有的主机密码不一致,那么该主机会分发失败,此时只需再执行一遍命令输入该主机密码即可。或者先将密码相同的主机进行分组,然后依次指定主机组执行命令分批分发公钥。

此命令是通过追加的方式来推送公钥至authorized_keys,所以不用担心原来的文件内容会被覆盖。

到任意一台主机上查看,可以看到公钥已成功推送:

wKiom1kvfHChwbWpAABIQ5dXUGY294.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.测试:

wKiom1kvfHzjd6XfAAAMsSxk49U677.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"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.jb51.cc/centos/377403.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。