在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