前言

过年这几天,我在整理ansible的相关内容。

ansible有两种管理方式,一种基于cli形式,一种基于web page形式。

web page形式的管理方式就是Ansible Tower,其开源版叫做AWX。

于是我就试着安装一个AWX,此AWX基于docker container。

 

安装

基本环境

系统:ubuntu18.04
AWX version:17.01

安装过程

  1. 安装依赖包

    apt update -y
    apt install apt-transport-https wget gnupg python3 python3-pip python-dev tree libpq-dev pwgen -y
    
  2. 确保python3作为默认python

    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
    
  3. 使用pip3安装ansible

    pip3 install ansible
    
  4. 安装docker

    apt install -y docker
    
  5. 安装NPM并更新到最新版本

    apt install npm -y
    npm install npm --global
    
  6. 使用pip3安装docker-compose,保证python可以调用到docker-compose

    pip3 install docker-compose
    
  7. 从github下载AWX

    mkdir -p /usr/local/downloads
    cd /usr/local/downloads
    git clone -b 17.0.1 https://github.com/ansible/awx.git
    
  8. 修改inventory文件,将其中三条修改掉。

    admin_user=admin
    admin_password=password
    secret_key=5uYFiGYndbZ3V6tRp2ThJIO3FHZ8CX
    

    其中:
    admin_user是web的登陆用户,默认admin
    admin_password是web的登陆用户的密码,默认password

    secret_key是web的密钥令牌,在升级的时候可以锁定这个AWX

    其中,这个secret_key可以通过pwgen命令来生成。

    pwgen -N 1 -s 30
    5uYFiGYndbZ3V6tRp2ThJIO3FHZ8CX
    
  9. 通过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
    

安装后的检查

  1. 检查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启动完毕了。

  2. 输入ip:port ,检查web page

    uploading-image-838519.png

    输入admin_user和admin_password的值,就可以登录进去了。
    admin_user: admin
    admin_password: password

  3. 登录后可以看到这个页面,就代表AWX安装成功了
    uploading-image-152242.png

后记

通过web page来安装的AWX,可以更方便地管理ansible的各项参数,会更加直观一点,管理起来难度也小一些。

更多的内容需要再探索,本文就到此吧。

posted on 2021-02-15 01:20  eryoung2  阅读(894)  评论(0编辑  收藏  举报