在GCP上搭建AWX,版本需为18.0以上

总而言之

我想要记录在GCP上构建Docker版AWX的方法。
通过使用AWX,可以解决Ansible中的许多安全问题(例如按权限执行Playbook、密钥保管和执行记录)。

事前准备

    • GCPのデプロイ先の環境(メモリ4G以上)

 

    メモリが4G以上でなければ、OOM killer に殺される可能性が高いです。

章节索引

    • コンテナ環境の準備

 

    • PIP Ansibleインストール

 

    • AWXインストール

 

    • GCP 遠隔からの疎通に向けた任意ポート開放

 

    web接続

准备容器环境

首先,我们需要安装Docker。

使用官方软件源进行安装方法。

安裝步驟請照官方文件上的指示進行。
https://docs.docker.com/engine/install/centos/

sudo yum install -y yum-utils
sudo yum-config-manager --disable docker-ce-nightly \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

一旦注册了仓库,便可以安装 Docker。

sudo yum install docker-ce docker-ce-cli containerd.io

安装完成后,启动Docker套接字。

sudo systemctl enable --now docker.socket
sudo systemctl status docker.socket

确认Docker的运行

sudo docker info

您可以查看最初的版本。

Client:
Context:    default
Debug Mode: false
Plugins:
 app: Docker App (Docker Inc., v0.9.1-beta3)
 buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
 scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 20.10.8

接下来,安装Docker-compose。

这也是按照官方步骤进行的。
https://docs.docker.com/compose/install/

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

我将在安装的文件上创建符号链接。

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

版本询问

docker-compose version

可以查看版本。

docker-compose version 1.29.2, build unknown
docker-py version: 5.0.2
CPython version: 3.9.6
OpenSSL version: OpenSSL 1.1.1k  FIPS 25 Mar 2021

将具有sudo执行权限的AWX安装用户添加到docker组中。

sudo gpasswd -a daath docker

安装PIP Ansible

接下来,我们将安装Ansible。在RHEL8系列中,有一种方法是通过安装专用仓库来安装Ansible,但本次我们将选择使用PIP进行安装。

由于CentOS Stream 8默认没有安装Python,所以这次我们将安装3.9版本。

python3 -V

### 3.9がインストールされています。
Python 3.9.6

在安装Ansible时,使用PIP3命令,并同时安装SElinux的控制包。如果没有这个包,AWX构建将会在中途出现错误。

那么现在开始安装吧。

sudo pip3 install ansible selinux 

确认已安装的Ansible版本。

ansible --version
ansible [core 2.11.5] 
config file = None
configured module search path = ['/home/daath/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
ansible collection location = /home/daath/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible
python version = 3.9.6 (default, Aug 25 2021, 16:22:38) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
jinja version = 3.0.1
libyaml = True

安装AWX

由於準備工作已完成,現在我們將安裝AWX。

使用克隆操作获取 AWX 代码仓库。

git clone -b 19.3.0 https://github.com/ansible/awx.git

这是截至2022年5月20日的最新版本。

请查看Git网站上的分支版本:https://github.com/ansible/awx/releases?

进入克隆的目录中。

ls -l
cd ~/awx/

请注意:如果要更改AWX的各种设置,请使用以下文件。

主要涉及到数据库密码设置等问题

vi ~/awx/tools/docker-compose/inventory

在相同的环境下,建筑工作将在大约5至10分钟内完成。

一旦构建完成,ansible/awx_devel映像将会被创建到本地镜像缓存中。您可以使用docker images命令进行确认。

docker images

以下是图像的创建方式

REPOSITORY                         TAG         IMAGE ID      CREATED             SIZE
quay.io/awx/awx_devel              HEAD        03eaa84b348f  About a minute ago  2.11 GB

执行AWX
启动容器

make docker-compose COMPOSE_UP_OPTS=-d

网路连接

只是构建并启动容器,不能进行Web连接。

首先,整理UI并进行构建。

编辑Makefile文件,添加–force选项以允许通过编译。

vim Makefile
awx/ui/node_modules:
        NODE_OPTIONS=--max-old-space-size=6144 $(NPM_BIN) --prefix awx/ui --loglevel verbose --force ci

开始建设

docker exec tools_awx_1 make clean-ui ui-devel

当React的最新版本不一致时会有警告,但忽略该警告AWX仍可运行。
如果没有编译前的文件,会出现警告,但忽略警告AWX仍可运行。

在登录AWX之前,您需要创建一个管理员用户。

docker exec -ti tools_awx_1 awx-manage createsuperuser

执行时,您需要输入用户名、电子邮件和密码,如下所示。

Username (leave blank to use 'awx'): masahiro
Email address: masahiro@example.jp
Password:
Password (again):
Superuser created successfully.

解除防火墙,WebUI似乎连接到了8043TCP端口。

sudo firewall-cmd --add-port=8043/tcp

为了远程连接Google云平台(GCP),请开放任意端口。请参考以下网站,开放8043端口。

在浏览器中验证连接。
https://{AWX服务器IP或FQDN}:8043

如果确认连接成功,将防火墙设置为永久。

sudo firewall-cmd --runtime-to-permanent

AWX建设已完成。

参考网站:
https://note.com/koya0316/n/n2cd9ac1cf5dd

广告
将在 10 秒后关闭
bannerAds