Ansible 使用原因及安装方式
为什么要选择使用ansible
当你的公司没有太多资金而决定把性能过剩服务器进行虚拟化,将一台真实服务器变为多台虚拟机的时候;当你的公司因业务需求需要扩充服务器的时候;当你重复配置、安装相同的软件到其他服务器的时候…
你会发现,咦?我是不是有哪台服务器忘记配置了,另一台的服务是要怎么安装来的?我的安装文档的呢?咦?怎么这不是一类操作系统的呢?为什么安装的操作系统当时没有统一呢?你的服务器运维工作越来越杂乱,直到天天加班,而这个时候,你就需要ansible。
举个例子,你会选择ansible的
- 一台服务器(简单)
# 以centos操作系统为例,当你需要安装某个个软件的时候,例如gcc
yum install gcc -y
# 或者当你需要高版本gcc的时候,你需要下载源码及其依赖包然后
cd gccXX.x
./configure --prefix=/path/to/gcc && make && make install
- 多台操作系统相同的服务器(一般)
# centos操作系统为例 hosts文件内分别为 node1,node2,node3,其中操作节点为 manager
# 你可能很快可以想到,使用ssh互信,当然只需要做manager 到 node[1-3]的单向ssh凭证即可,再聪明点,你觉得写个脚本,像这样:
cat gcc_install_nodes.sh
#!/bin/bash
nodelist=$1
for node in $nodelist
do
# 后台执行,然后日志保存到${node}.log
ssh $node "yum install gcc -y" &>${node}.log &
done
wait
echo "install gcc is done,and you need to look at nodes.log in this dir"
# 执行,然后等待结果
./gcc_install_nodes.sh "node1 node2 node3"
- N+ 台操作系统类型各异的服务器(困难)
# 你想我咋地,还真写吗?老累了,还不确定能不能跑,这就是ansible为什么会出现的原因
# 能写出来,但老板可能不会给你那么多时间调试你心爱的脚本的。
有了ansible,你不需要再也for循环;有了ansible,你可以为多台不同操作系统的服务器安装相同的软件,有了ansible,格式化的结果范围更容易让你判断出操作中出现的问题…
也就是说,你可以偷懒了(嗯,就是你可以有时间学习其他知识了)
快速安装ansible
- 有网络环境
配置国内镜像源:阿里巴巴镜像源
以centos为例:yum 安装
点击centos镜像即可有对应的指导下载指定yum源
# 安装 ansible
yum install ansible -y
以centos为例: pip 安装
# -i 指定临时镜像源
pip install -i https://mirrors.aliyun.com/pypi/simple ansible
# 永久修改为本地镜像方法如下:
vim ~/.pip/pip.conf
修改如下:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
-
离线安装二进制包方式
若为centos,现在有线环境下去rpm search找到对应版本的rpm进行下载安装,或者使用yum install/reinstall ansible --downloadonly --downloaddir=/path命令即可将指定安装包下载到指定目录下面,然后拷贝到离线服务器,使用rpm -ivh *.rpm即可安装,若缺少依赖,按照同样的方式下载对应版本的rpm包即可 -
离线方式 python
# 创建python虚拟环境或者在一个纯净无软件包安装的python环境
pip install ansible
pip freeze > ansible_request.txt
pip download -r ansible_request.txt -d /pathdir
# 在离线服务器上安装
pip install --no-index --find-links=packages -r ansible_request.txt
- 离线方式源码
源码下载地址:ansible 源码
cd ansible_src
python setup.py build
python setup.py install
# 或者
pip install ansible_src.zip
若缺少对应的python依赖包,可去Pypi下载即可。
以上内容仅个人理解,如有不对之处,请指正修改。