自动化运维
ANSIBLE使用指引

一、行云管家ANSIBLE介绍

面对越来越复杂的业务场景,运维过程中对自动化的需求也越来越大,行云管家作业中心以及任务编排是在现有资源管理平台基础上,形成的一个能够支持批量命令、脚本执行的基础运维工具,借助这个工具,能够满足一些批量、快速的简单自动化运维场景。

当前从行云管家6.3版本开始作业中心以及任务编排已经支持ANSIBLE了。

二、ANSIBLE使用前提

在作业中心以及任务编排使用ANSIBLE类型命令或脚本前,需要达到以下前提才可以使用;

(1)需要执行脚本或命令的主机所在的行云管家“网络”菜单这里必须是Proxy模式;

(2)在上图中,Proxy宿主机必须是Linux操作系统;

(3)Proxy宿主机必须按后续要求配置Proxy宿主机环境;

三、行云管家ANSIBLE执行器环境配置

行云管家ANSIBLE执行器环境配置需要登录Proxy宿主机进行环境配置,以下提供离线安装以及在线安装两种方式;

3.1、离线安装

离线安装支持Linux的CentOS,无需在系统中安装PYTHON及相关依赖库,适用于无法连接外网的Proxy宿主机;安装步骤如下:

(1)安装sshpass依赖库

下载:sshpass.rpm 安装包到行云管家的Proxy宿主机,并进行安装

$ wget

   # 下载并拷贝至行云管家Proxy宿主机的/root目录下
   $ cd /root
   # 安装
   $ sudo yum install ./sshpass-1.06-2.el7.x86_64.rpm

(2)拷贝安装ansiblerush-venvpython环境

下载:ansiblerush-venv.tar.gz压缩包,解压缩到/root 目录下

$ wget

   # 下载并拷贝至行云管家Proxy宿主机的/root目录下
   $ cd /root
   # 解压ansiblerush-venv环境,得到 .pyenv/隐藏目录
   $ tar -zxvf ansiblerush-venv.tar.gz

(3)配置

配置root用户的.bashrc文件,并使它生效

   $ cd /root

   #  .bashrc 文件后面追加
   # ---begin---
   export ANSIBLE_HOST_KEY_CHECKING=False
   export PYENV_ROOT="$HOME/.pyenv"
   export PATH="$PYENV_ROOT/bin:$PATH"
   eval "$(pyenv init -)"
   # ---end---

   $ source ~/.bashrc

   $ python -V
   # Python 3.8.7

(4)使用pip在本地安装ansible-rush

下载行云管家的ansible_rushpython模块

$ wget

   # 下载并拷贝至行云管家Proxy宿主机的/root目录下
   $ cd /root
   # 安装
   $ pip install ./ansible_rush-0.1.0-py3-none-any.whl

3.2 配置环境变量

配置root用户的.bashrc文件,并使它生效

   $ cd /root

   #  .bashrc 文件后面追加
   # ---begin---
   export ANSIBLE_HOST_KEY_CHECKING=False
   export PYENV_ROOT="$HOME/.pyenv"
   export PATH="$PYENV_ROOT/bin:$PATH"
   eval "$(pyenv init -)"
   # ---end---

   $ source ~/.bashrc

   $ python -V
   # Python 3.8.7

3.2.1、配置说明

ansible-rush.conf的配置文件读取,按优先级由高到低

首先读取启动参数 -c的值,作为执行的配置文件进行加载;

否则:寻找用户的$HOME/ansible-rush.conf文件进行加载;

否则:寻找/etc/ansible-rush.conf文件进行加载;

否则:不寻找配置文件,直接加载默认配置。

   [default]
   #listen host
   # ansible-rush启动的ip绑定一般保持默认设置即可
   host = 0.0.0.0

   #listen port
   # ansible-rush提供http服务的端口
   port = 10086

   #log dir if using daemon mode
   # 如果daemon方式启动则写入日志的文件夹不存在会自动创建);非daemon启动直接输出到console控制台
   log_path = /root/log/

   # fatal, error, warn, info, debug
   # 日志级别
   log_level = error

   #response of a task will be timeout (sec, default: 3600 [1 hour], task will NOT break off after timeout)
   # http请求的超时时间
   timeout = 1800

   #websocket subprotocols
   # 保留websocket支持暂时没有使用
   ws_sub =

   #ip white list (multiple separated by comma, leave a blank for all allowed) eg: 127.0.0.1,192.168.0.1,172.120.0.1
   # 接收请求的白名单包含"0.0.0.0"表示接收来自任意ip的请求不填写或填写127.0.0.1只接收来自本机的请求
   allow_ip =

   [ansible]
   # need forbidden danger commands [yes/no]
   # 是否使用ansible执行一些危险命令的开关
   forbidden_danger_command = yes
   # danger commands list
   # 判定为危险命令的列表
   danger_command = reboot,su,sudo,dd,mkfs,shutdown,half,top
   # temporary script dir
   # ansible的script模块临时文件生成的地址执行完后会自动删除
   script = /tmp/ansible-rush/script/
   # temporary playbook dir (yml file in this dir will be worked)
   # ansible的playbook.yml临时文件生成的地址执行完后会自动删除
   playbook = /tmp/ansible-rush/playbook/

3.2.2、运行

   $ ansible-rush -c [Configfile, Optional] -d [Daemon Mode, Optional]

   # 例如:后台启动
   $ ansible-rush -c /root/ansible-rush.conf -d > /dev/null &
   # 或不指定明确的配置文件,后台启动
   $ ansible-rush -d > /dev/null &
   # 或同时以前台的方式执行,同时输出日志到log_path/
   $ ansible-rush -d
   # 或同时以前台的方式执行,并直接将日志打在控制台
   $ ansible-rush

3.2.3、停止

采用kill结束进程的方式停止服务。