本文介绍使用Nginx反向代理和Letsencrypt证书在CentOS 7操作系统上安装Ansible AWX的方法,此安装将在Nginx上配置http重定向到https。可以先看在RHEL 8/CentOS 8系统上安装和配置Ansible一文。
在CentOS 7上安装Ansible AWX 1、请注意,此安装需要epel,你可以通过运行安装epel: # yum -y install epel-release 2、安装基本依赖项 AWX要求某些软件包才能正常运行,可以通过在终端上运行以下命令来安装它们: # yum -y install git gcc gcc-c++ lvm2 bzip2 gettext nodejs \ yum-utils device-mapper-persistent-data ansible python-pip 3、安装Docker CE 4、安装docker python模块 AWX需要docker python模块,这是使用pip安装的: # pip install -U docker-py # pip show docker-py Name: docker-py Version: 1.10.6 Summary: Python client for Docker. Home-page: https://github.com/docker/docker-py/ Author: Joffrey F Author-email: joffrey@docker.com License: UNKNOWN Location: /usr/lib/python2.7/site-packages Requires: requests, backports.ssl-match-hostname, docker-pycreds, ipaddress, websocket-client, six 5、Clone AWX from git 下一步是从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 playbooks,请先导航到此目录: # cd awx/installer/ 检查库存文件,可以根据需要进行自定义: # cat inventory 生成管理员密码: # pwgen 15 生成AWX密钥: # pwgen -N 1 -s 30 pXc5pYYCECKK5dHEXqV5jawgvkZToK 使用上面获得的值修改库存文件,我的文件看起来是这样的: # grep -v '^ *#' inventory localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python" [all:vars] dockerhub_base=ansible dockerhub_version=latest default_admin_user=admin default_admin_password=ERg0ELvWh5Ia awx_secret_key=pXc5pYYCECKK5dHEXqE5KawgvkZToK postgres_data_dir=/var/lib/pgdocker host_port=8000 docker_compose_dir=/var/lib/awx pg_username=awx pg_password=eoco3EeHWeRohwe pg_database=awx pg_port=5432 awx_official=true 7、执行playbook 运行ansible-playbook命令后跟选项-i,告诉它要使用的库存文件,playbook文件的名称是install.yml: # ansible-playbook -i inventory install.yml 如果收到错误ImportError: No module named ‘requests.packages.urllib3’的模块,请运行: # pip install requests urllib3 pyOpenSSL --force --upgrade 一段时间后,部署应该完成,然后可以使用docker ps命令检查已创建的docker容器及其状态:
已经专门为AWX创建了5个容器:Memcached容器、AWX_task容器、AWS Web容器、Rabbitmq容器、PostgreSQL容器。 要管理这些容器,请使用docker-compose或使用docker native命令,如果你没有更改,可以通过host-ip:8000或端口80访问Web门户,将会出现以下页面:
输入你在清单文件中指定的用户名和密码,进行身份验证后,将进入AWX管理中心,如下图:
至此,安装Ansible AWX完成。
配置Nginx反向代理 如果你要为AWX配置Nginx反向代理,配置为https访问,请执行以下步骤,要做的第一件事是使用certbot-auto工具为AWX生成SSL证书,以下为生成Letsencrypt SSL证书: # wget https://dl.eff.org/certbot-auto -P /usr/local/bin # chmod a+x /usr/local/bin/certbot-auto # /usr/local/bin/certbot-auto certonly --standalone -d awx.example.com -d www.awx.example.com\ --preferred-challenges http --agree-tos -n -m emailaddress@domain.com --keep-until-expiring 获得ssl证书后,修改以下配置代码段以与nginx一起使用: # 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:!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; } 注: 1、上面的ssl_ciphers部分,完整的请参考如下图:
2、将example.com替换为你的真实域或子域名,并放置SSL证书的正确位置,然后最后确认nginx配置是Ok并重启nginx: # nginx -t # systemctl restart nginx 至此,配置Nginx反向代理完成。
相关主题 |