見出し画像

AWXインストール手順

昨日の結果をもとに無事AWXのインストールが出来たのその手順を記載します。

実装環境

Ubuntu20LTS上に構築したKVM仮想環境になります。

マシンスペック

2コア 
4Gメモリ 
OS:CentOS Stream release 8
カーネルバージョン:4.18.0-338.el8.x86_64
Dockerバージョン: Server Version: 20.10.8
docker-compose version 1.27.3, build 4092ae5d
Ansible バージョン:core 2.11.5
Ansible AWXバージョン:19.3.0

以上の環境でOSインストールは最小インストールにグループパッケージのdevelopmentをKVMインストール時にキックスタータで事前にインストールしてあります。

以降の作業は、sudo実行権限を持ったユーザーで実施しています。

コンテナ環境の準備

まず初めに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をインストールします。

こちらも公式手順の通りです。

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をインストールします。

sudo dnf module install python39 

インストールできたらバージョン確認コマンドを実行して使えるかを確認します。

python3 -V

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

PIPの方も確認んします。

pip3 -V

### 以下のようになります。
pip 20.2.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)

PIP3でAnsibleインストール、このとき合わせてSElinuxの制御パッケージもインストールしておきます。これがないとAWXビルド途中でエラーとなります。

sudo pip3 install -U pip
sudo pip3 install ansible selinux

このPIPインストールは、sudoで実行してください。AWXビルド時にAnsible実行とdockerが連携するためroot権限実行になるためsudo(rootユーザー)でインストールしておかないとエラーになります。

ではなぜrootで作業しないのかというとPIPインストールのansibleは、venv環境を作らない場合、rootでの実行が不可能な設計になっているようです。

これはOS自体のパッケージ管理とPIPのパッケージ管理が別でそれらが機能衝突しないようPIP側のパッケージインストールがrootで出来なくなっているものと考えられます。

それではインストールします。

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

2021/09/19時点の最新バージョンになります。

ブランチバージョンは、Gitサイトを確認してください
https://github.com/ansible/awx/releases?

クローンしたディレクトリ内へ移動

ls -l
cd ~/awx/

補足:AWX各種設定を変更する場合は以下のファイルを使用します。

 主にデータベースのパスワード設定など

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

AWXをビルド

make docker-compose-build

同一の環境であれば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

以下公式の説明(google先生の翻訳)

 awx、postgres、redisコンテナを実行します。これは、前のステップで作成されたイメージを利用し、必要なすべてのサービスと依存コンテナーを自動的に開始します。コンテナが起動すると、セッションがawxコンテナにアタッチされ、ログメッセージとイベントをリアルタイムで監視できるようになります。Djangoとフロントエンドビルドプロセスからのメッセージが表示されます。

 makeターゲットは、作成したイメージが現在のブランチでタグ付けされていることを前提としています。これにより、さまざまなコンテキストまたはブランチのイメージを構築できます。コンテナーを開始するときCOMPOSE_TAG=<branch name> に、環境で設定することにより、特定のブランチを選択できます。たとえば、機能ブランチで作業しているが、以前に作成したdevelイメージを使用してコンテナーを実行したい場合があります。これを行うには、次のコマンドを使用してコンテナを起動します。$ COMPOSE_TAG=devel make docker-compose

docker-compose detachedモードを実行するには、次のコマンドを使用してコンテナーを起動します。 $ make docker-compose COMPOSE_UP_OPTS=-d

Web接続

ビルドしてコンテナを起動させただけではWeb接続できません。

まずはUIをクリーンアップしてビルドします。

docker exec tools_awx_1 make clean-ui ui-devel

ビルド開始(以下のように出力されます。

rm -rf node_modules
rm -rf awx/ui/node_modules
rm -rf awx/ui/build
rm -rf awx/ui/src/locales/_build
rm -rf awx/ui/.ui-built
NODE_OPTIONS=--max-old-space-size=4096 npm --prefix awx/ui --loglevel warn ci
added 2321 packages, and audited 2322 packages in 52s
### 中略
Find out more about deployment here:
 https://cra.link/deployment
mkdir -p awx/public/static/css
mkdir -p awx/public/static/js
mkdir -p awx/public/static/media
cp -r awx/ui/build/static/css/* awx/public/static/css
cp -r awx/ui/build/static/js/* awx/public/static/js
cp -r awx/ui/build/static/media/* awx/public/static/media
touch awx/ui/.ui-built
make[1]: Leaving directory '/awx_devel'

次に管理ユーザーの作成
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
​

ブラウザで接続を確認する。

https://<AWXサーバIPもしくはFQDN>:8043

AWXインストール完了

こんな感じです。Ansibleユーザー会でよくお目にかかるジャガイモくん(正式名おしえてくださいw)

ここのインターフェースは、cockpitと同じですねw

ダッシュボードになります。

AWXダッシュボード

AWXのバージョン確認

AWXインストールバージョン

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

sudo firewall-cmd --runtime-to-permanent

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

使い方についてAWXのエンタープライズバージョンのAnsible towerのドキュメントをご確認ください。

https://docs.ansible.com/ansible-tower/

ついにできました!

最近学び始めたコンテナでの作成だったのでジャガイモくんが見れた時は、感動しました。

ドキュメントを読み込んでいじり倒して行こうかと思います。

以上です。ありがございました。



この記事が気に入ったらサポートをしてみませんか?