一、行云管家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-venv
的python
环境
下载: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_rush
python模块
$ 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
结束进程的方式停止服务。