前言
过年这几天,我在整理ansible的相关内容。
ansible有两种管理方式,一种基于cli形式,一种基于web page形式。
web page形式的管理方式就是Ansible Tower,其开源版叫做AWX。
于是我就试着安装一个AWX,此AWX基于docker container。
安装
基本环境
系统:ubuntu18.04
AWX version:17.01
安装过程
-
安装依赖包
apt update -y apt install apt-transport-https wget gnupg python3 python3-pip python-dev tree libpq-dev pwgen -y
-
确保python3作为默认python
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
-
使用pip3安装ansible
pip3 install ansible
-
安装docker
apt install -y docker
-
安装NPM并更新到最新版本
apt install npm -y npm install npm --global
-
使用pip3安装docker-compose,保证python可以调用到docker-compose
pip3 install docker-compose
-
从github下载AWX
mkdir -p /usr/local/downloads cd /usr/local/downloads git clone -b 17.0.1 https://github.com/ansible/awx.git
-
修改inventory文件,将其中三条修改掉。
admin_user=admin admin_password=password secret_key=5uYFiGYndbZ3V6tRp2ThJIO3FHZ8CX
其中:
admin_user是web的登陆用户,默认admin
admin_password是web的登陆用户的密码,默认passwordsecret_key是web的密钥令牌,在升级的时候可以锁定这个AWX
其中,这个secret_key可以通过pwgen命令来生成。
pwgen -N 1 -s 30 5uYFiGYndbZ3V6tRp2ThJIO3FHZ8CX
-
通过ansible-playbook来安装AWX
cd /usr/local/downloads/awx/installer ansible-playbook -i inventory install.yml
如果安装的时候,出现以下错误:
TASK [local_docker : Remove AWX containers before migrating postgres so that the old postgres container does not get used] *********************************** fatal: [localhost]: FAILED! => {"changed": false, "msg": "Cannot have both the docker-py and docker python modules (old and new version of Docker SDK for Python) installed together as they use the same namespace and cause a corrupt installation. Please uninstall both packages, and re-install only the docker-py or docker python module (for ansible-awx's Python /usr/bin/python3). It is recommended to install the docker module if no support for Python 2.6 is required. Please note that simply uninstalling one of the modules can leave the other module in a broken state."} ...ignoring
原因是python的docker-compose和docker模块和系统的docker-compose和docker版本不统一。
解决方法如下:
pip3 uninstall docker docker-py docker-compose pip3 install docker-compose apt install docker docker.io -y
然后重新安装就可以。
cd /usr/local/downloads/awx/installer ansible-playbook -i inventory install.yml
安装后的检查
-
检查docker container是否有AWX容器
root@home:/downloads/awx/installer# docker container ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b32119cbd05 ansible/awx:17.0.1 "/usr/bin/tini -- /u…" 8 hours ago Up 8 hours 8052/tcp awx_task 601a084dbd57 ansible/awx:17.0.1 "/usr/bin/tini -- /b…" 8 hours ago Up 8 hours 0.0.0.0:80->8052/tcp awx_web a2db1cc7070f postgres:12 "docker-entrypoint.s…" 8 hours ago Up 8 hours 5432/tcp awx_postgres 5917a0f77388 redis "docker-entrypoint.s…" 8 hours ago Up 8 hours 6379/tcp awx_redis
我们看到AWX有四个container:
awx_task: AWX核心服务
awx_web: AWX网页服务,并映射到外网的80端口。
postgres: AWX依赖的pg数据库
redis: AWX依赖的redis数据库四个容器都要有才能证明AWX启动完毕了。
-
输入ip:port ,检查web page
输入admin_user和admin_password的值,就可以登录进去了。
admin_user: admin
admin_password: password -
登录后可以看到这个页面,就代表AWX安装成功了
后记
通过web page来安装的AWX,可以更方便地管理ansible的各项参数,会更加直观一点,管理起来难度也小一些。
更多的内容需要再探索,本文就到此吧。