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
こんな感じです。Ansibleユーザー会でよくお目にかかるジャガイモくん(正式名おしえてくださいw)
ここのインターフェースは、cockpitと同じですねw
ダッシュボードになります。
AWXのバージョン確認
接続が確認できたらファイヤーウォールを永久設定へ
sudo firewall-cmd --runtime-to-permanent
以上でAWX構築が完了となります。
使い方についてAWXのエンタープライズバージョンのAnsible towerのドキュメントをご確認ください。
https://docs.ansible.com/ansible-tower/
ついにできました!
最近学び始めたコンテナでの作成だったのでジャガイモくんが見れた時は、感動しました。
ドキュメントを読み込んでいじり倒して行こうかと思います。
以上です。ありがございました。
この記事が気に入ったらサポートをしてみませんか?