如何在CentOS 8上安装Ansible AWX

如何在CentOS 8上安装Ansible AWX

AWX代表“ Ansible Web eXecutable”,并且是一个免费的开源项目,可让您轻松地管理和控制Ansible项目。提供基于Ansible的基于Web的用户界面和任务引擎。提供强大的REST API,以管理库存或与其他云源同步库存,控制访问并与LDAP集成。

本教程显示了如何在CentOS 8上使用Docker安装Ansible AWX。

前提条件

  • 运行带有至少4 GB RAM的CentOS 8的服务器。
  • 在服务器上配置了root密码。

引言

在开始之前,您需要在系统上安装EPEL存储库。您可以使用以下命令进行安装:

dnf install epel-release -y

接下来,您需要安装一些其他软件包,以在系统上运行AWX。您可以使用以下命令将它们全部安装:

dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y

安装所有软件包后,可以继续执行下一步。

安装Docker和Docker Compose

接下来,您需要安装Docker并在Docker容器中运行AWX。默认情况下,最新版本的Docker在CentOS 8默认存储库中不可用。因此,您需要向系统中添加一个Docker存储库。您可以使用以下命令添加Docker存储库:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

添加后,请使用以下命令安装最新的稳定版本的Docker:

dnf install docker-ce-3:18.09.1-3.el7 -y

安装Docker之后,使用以下命令检查安装的Docker版本:

docker --version

您将获得以下输出:

Docker version 19.03.7, build 7141c199a2

接下来,启动Docker服务,以便在系统重启后可以使用以下命令启动它:

systemctl start docker systemctl enable docker

您可以使用以下命令检查Docker服务的状态:

systemctl status docker

您将获得以下输出:

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-03-11 02:36:04 EDT; 23min ago
     Docs: https://docs.docker.com
 Main PID: 5882 (dockerd)
    Tasks: 101
   Memory: 2.6G
   CGroup: /system.slice/docker.service
           ??5882 /usr/bin/dockerd -H fd://
           ??5899 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
           ??8815 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/4b91575d64b1b>
           ??8847 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/0f36c9784f748>
           ??8894 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.5 -container-port 8052
           ??8899 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/47300ec1c26ff>
           ??8923 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/9827b9831fa5b>
           ??9631 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/166b153faa275>

接下来,使用以下命令安装Docker compose:

pip3 install docker-compose

安装完成后,使用以下命令检查Docker构建版本:

docker-compose --version

您将看到以下输出:

docker-compose version 1.25.4, build unknown

最后,通过运行以下命令将python命令配置为使用python 3:

alternatives --set python /usr/bin/python3

安装Ansible AWX

首先,使用以下命令从Git Hub存储库下载最新版本的Ansible AWX:

git clone https://github.com/ansible/awx.git

接下来,使用以下命令生成专用密钥来加密清单文件:

openssl rand -base64 30

您将获得以下输出:

R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp

注意:请记住上述秘密。必须粘贴到库存文件中。

接下来,将目录更改为awx / installer /并编辑清单文件。

cd awx/installer/ nano inventory

更改以下行:

[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="/var/lib/pgdocker"
host_port=80
host_port_ssl=443
docker_compose_dir="~/.awx/awxcompose"
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
pg_admin_password=password
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster
admin_user=admin
admin_password=password
create_preload_data=True
secret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projects

完成后,保存并关闭文件。接下来,为Postgres创建目录。

mkdir /var/lib/pgdocker

最后,运行以下命令以安装AWX:

ansible-playbook -i inventory install.yml

如果安装成功完成,您将看到以下输出:

skipping: [localhost]

TASK [local_docker : Load web image] **********************************************************************************************************
skipping: [localhost]

TASK [local_docker : Load task image] *********************************************************************************************************
skipping: [localhost]

TASK [local_docker : Set full image path for local install] ***********************************************************************************
skipping: [localhost]

TASK [local_docker : Set DockerHub Image Paths] ***********************************************************************************************
ok: [localhost]

TASK [local_docker : Create ~/.awx/awxcompose directory] **************************************************************************************
changed: [localhost]

TASK [local_docker : Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item=environment.sh)
changed: [localhost] => (item=credentials.py)
changed: [localhost] => (item=docker-compose.yml)
changed: [localhost] => (item=nginx.conf)

TASK [local_docker : Render SECRET_KEY file] **************************************************************************************************
changed: [localhost]

TASK [local_docker : Start the containers] ****************************************************************************************************
changed: [localhost]

TASK [local_docker : Update CA trust in awx_web container] ************************************************************************************
changed: [localhost]

TASK [local_docker : Update CA trust in awx_task container] ***********************************************************************************
changed: [localhost]

PLAY RECAP ************************************************************************************************************************************
localhost                  : ok=14   changed=6    unreachable=0    failed=0    skipped=95   rescued=0    ignored=0   

上面的命令将为AWX创建并启动所有必要的Docker容器。您可以使用以下命令查看正在运行的容器:

docker ps

您将看到以下输出:

CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
4b91575d64b1        ansible/awx_task:9.2.0       "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   8052/tcp                                              awx_task
9827b9831fa5        ansible/awx_web:9.2.0        "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   0.0.0.0:80->8052/tcp                                  awx_web
47300ec1c26f        postgres:10                  "docker-entrypoint.s…"   About a minute ago   Up About a minute   5432/tcp                                              awx_postgres
166b153faa27        ansible/awx_rabbitmq:3.7.4   "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp   awx_rabbitmq
0f36c9784f74        memcached:alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   11211/tcp                                             awx_memcached

配置SELinux和防火墙

默认情况下,CentLinux 8已启用SELinux。为了使AWX在Docker环境中工作,我们建议禁用SELinux。您可以通过编辑以下文件来禁用它:

nano /etc/sysconfig/selinux

找到以下行:

SELINUX=enforcing

并将其替换为以下行:

SELINUX=disabled

完成后,保存并关闭文件。然后重新启动系统以实施更改。接下来,您需要允许通过firewalld的http和https服务。您可以使用以下命令允许它们:

firewall-cmd --zone=public --add-masquerade --permanent firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https

接下来,重新启动Firewalld服务以应用更改。

firewall-cmd --reload

访问AWX Web界面

接下来,打开Web浏览器并输入URL http:// your-server-ip。您将被重定向到AWX登录页面。

输入清单文件中定义的管理员用户名和密码,然后单击 签收 按钮下一页显示AWX默认仪表板。

Ansible AWX界面

结论

恭喜你!我已经在CentOS 8上使用Docker成功安装了AWX。使用AWXWeb界面可以轻松管理和控制Ansible项目。

Sidebar