使用Nginx代理和Lets Encrypt在CentOS 7上安装Ansible AWX
欢迎来到我们的教程,该教程如何使用Nginx反向代理和Lets Encrypt SSL证书在CentOS 7/Fedora上安装Ansible AWX。此安装将在Nginx上配置http到https重定向。
什么是AWX?
AWX是Red Hat Ansible Tower的上游项目,它提供了基于Web的用户界面,REST API和在Ansible之上构建的任务引擎。这是AWX的商业衍生产品Tower的上游项目。这是一个由Red Hat赞助的开源社区项目,它使用户可以更好地控制其在IT环境中使用Ansible项目。 AWX源代码在Apache License 2.0下可用。
使用Nginx反向代理和Letsencrypt在CentOS 7/Fedora上安装Ansible AWX
掌握了基础知识之后,让我们深入研究CentOS 7和Fedora操作系统上AWX的安装步骤。我假设我们已经安装并更新了CentOS或者Fedora服务器。请注意,epel对于此安装是必需的,我们可以通过运行以下命令来安装epel:
sudo yum -y install epel-release
安装基本依赖项:
AWX要求某些软件包具有AD依赖性。可以通过在终端上运行以下命令来安装它们。
sudo yum -y install git gcc gcc-c++ lvm2 bzip2 gettext nodejs yum-utils device-mapper-persistent-data ansible python-pip vim
安装Docker CE:
我们之前已经介绍了在各种Linux发行版中安装Docker社区版。该教程可从以下链接获得:
如何在Ubuntu/Debian/Fedora/Arch/CentOS上安装Docker CE
安装docker python模块:
AWX需要docker python模块。这是使用pip安装的,
$sudo pip install -U docker docker-compose $pip show docker Name: docker Version: 4.0.2 Summary: A Python library for the Docker Engine API. Home-page: https://github.com/docker/docker-py Author: None Author-email: None License: Apache License 2.0 Location: /usr/lib/python3.7/site-packages Requires: six, websocket-client, requests Required-by: docker-compose
从git复制AWX
下一步是从git克隆AWX。
$git clone --depth 50 https://github.com/ansible/awx.git Cloning into 'awx'... remote: Counting objects: 8886, done. remote: Compressing objects: 100% (4351/4351), done. remote: Total 8886 (delta 5573), reused 6866 (delta 4368), pack-reused 0 Receiving objects: 100% (8886/8886), 9.24 MiB | 871.00 KiB/s, done. Resolving deltas: 100% (5573/5573), done.
转到安装程序目录
由于我们需要在安装程序目录下执行ansible剧本,因此请首先导航至该目录。
cd awx/installer/
检查列表文件,我们可以根据需要进行自定义:
$vim inventory
产生管理员密码
$pwgen 15
生成AWX密钥
$pwgen -N 1 -s 30 pXc5pYYCECKK5dHEXqV5jawgvkZToK
使用上面获得的值修改库存文件:
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python" [all:vars] dockerhub_base=ansible awx_task_hostname=awx awx_web_hostname=awxweb postgres_data_dir=/tmp/pgdocker host_port=80 host_port_ssl=443 docker_compose_dir=/tmp/awxcompose pg_username=awx pg_password=awxpass pg_database=awx pg_port=5432 rabbitmq_password=awxpass rabbitmq_erlang_cookie=cookiemonster admin_user=admin admin_password=password create_preload_data=True secret_key=awxsecret
执行剧本
运行ansible-playbook命令,然后运行option-i,告诉它要使用的列表文件。剧本文件的名称是install.yml。
$sudo ansible-playbook -i inventory install.yml
如果收到错误错误ImportError:没有名为requests.packages.urllib3的模块,请运行:
sudo pip install requests urllib3 pyOpenSSL --force --upgrade
一段时间后,部署应完成。然后,我们可以使用docker ps命令检查已创建的Docker容器及其状态。
已专门为AWX创建了5个容器。这些是Memcached容器AWX_task容器AWS Web容器Rabbitmq容器PostgreSQL容器
要管理这些容器,请使用docker-compose或者usedocker native命令。如果未更改,则可以通过host-ip:8000或者port80访问该门户。我们将获得与以下类似的welcomeashboard。
输入我们在列表文件中指定的用户名和密码。身份验证后,我们将进入AWX管理信息中心,
配置Nginx反向代理
如果我们想使用http到https重定向为AWX配置Nginx反向代理,请执行以下步骤。我们要做的第一件事是使用certbot-auto工具为AWX生成SSL证书。
生成Letsencrypt SSL证书
wget https://dl.eff.org/certbot-auto chmod +x certbot-auto sudo mv certbot-auto /usr/local/bin sudo chmod a+x /usr/local/bin/certbot-auto sudo /usr/local/bin/certbot-auto certonly --standalone \ -d awx.example.com -d www.awx.example.com \ --preferred-challenges http --agree-tos -n -m theitroad@localhost \ --keep-until-expiring
获得ssl证书后,修改下面的配置代码片段以与nginx一起使用。
$sudo cat /etc/nginx/conf.d/awx.conf server { listen 443 ssl http2; server_name awx.example.com www.awx.example.com; location / { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://192.168.x.x:8000/; } ssl on; ssl_certificate /etc/letsencrypt/live/awx.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/awx.example.com/privkey.pem; ssl_session_timeout 5m; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; access_log /var/log/nginx/awx.access.log; error_log /var/log/nginx/awx.error.log; } server { listen 80; server_name awx.example.com www.awx.example.com; add_header Strict-Transport-Security max-age=2592000; rewrite ^ https://$server_name$request_uri? permanent; }
用真实域名或者子域名替换example.com,然后放置SSL证书的正确位置。然后,最后确认nginx配置是否正确,然后重新启动nginx。
$nginx -t $sudo systemctl restart nginx