0
0

More than 1 year has passed since last update.

GCPでAWXを構築する Version18.0以降

Posted at

概要

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 Stream8ではデフォルトでPythonが入っていませんので今回は3.9をインストールします。

python3 -V

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

PIP3でAnsibleインストール、このとき合わせて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/05/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接続

ビルドしてコンテナを起動させただけでは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

GCPに関して遠隔からの疎通に向けた任意ポートの開放します。
以下のサイトを参考に ポート8043を開放してください。
https://www.mtioutput.com/entry/googlecloud-port-open

ブラウザで接続を確認する。
https://{AWXサーバIPもしくはFQDN}:8043

接続が確認できたらファイヤーウォールを永久設定へ

sudo firewall-cmd --runtime-to-permanent

以上でAWX構築が完了となります。

参考サイト
https://note.com/koya0316/n/n2cd9ac1cf5dd
https://www.mtioutput.com/entry/googlecloud-port-open

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0