共计 3645 个字符,预计需要花费 10 分钟才能阅读完成。
CentOS 下部署 Ansible 自动化工具
1. 确保机器上安装的是 Python 2.6 或者 Python 2.7 版本:
python -V
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 以上可能会安装失败)
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 文件中:
定义主机组和主机
默认 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
按提示使用默认配置一路回车即可:
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
需要输入主机的密码,若是有的主机密码不一致,那么该主机会分发失败,此时只需再执行一遍命令输入该主机密码即可。或者先将密码相同的主机进行分组,然后依次指定主机组执行命令分批分发公钥。
此命令是通过追加的方式来推送公钥至 authorized_keys,所以不用担心原来的文件内容会被覆盖。
到任意一台主机上查看,可以看到公钥已成功推送:
7. 修改 ansible 配置,指定私钥文件路径:
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 “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
下面关于 Ansible 的文章您也可能喜欢,不妨参考下:
使用 Ansible 批量管理远程服务器 http://www.linuxidc.com/Linux/2015-05/118080.htm
在 CentOS 7 中安装并使用自动化工具 Ansible http://www.linuxidc.com/Linux/2015-10/123801.htm
CentOS 7 上搭建 Jenkins+Ansible 服务 http://www.linuxidc.com/Linux/2016-12/138737.htm
Linux 下源码编译安装 Ansible 及排错记录 http://www.linuxidc.com/Linux/2017-03/141427.htm
Ansible 基础—安装与常用模块 http://www.linuxidc.com/Linux/2017-02/140216.htm
Ansible 配置及使用 http://www.linuxidc.com/Linux/2017-03/142121.htm
自动化运维工具之 Ansible 介绍及安装使用 http://www.linuxidc.com/Linux/2016-12/138104.htm
自动化运维之 Ansible 详解 http://www.linuxidc.com/Linux/2017-03/142191.htm
Ansible 入门 notify 和 handlers http://www.linuxidc.com/Linux/2017-02/140871.htm
CentOS 6.5 安装自动化工具 Ansible 和图形化工具 Tower http://www.linuxidc.com/Linux/2017-03/141422.htm
Ansible 的详细介绍:请点这里
Ansible 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144430.htm