如何在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默认仪表板。
结论
恭喜你!我已经在CentOS 8上使用Docker成功安装了AWX。使用AWXWeb界面可以轻松管理和控制Ansible项目。