awx を docker-composeで利用するためのリポジトリ
- docker-ce
- docker compose >= 1.28
- docker-compose.yml >= 3.9 以上を扱えること
本repoには profilesによって3つのdocker-composeを作るようになっています。 それぞれのprofilesに含まれるコンテナ、構成配下の通り
- repoを clone もしくは fetchする
- .envを編集し、ホスト情報を構成する
- awx_1(master) と awx_2(slave) は別ホストで起動する事を想定しています
- dnsを別途指定したりするなどして名前解決が行える場合を除きIPアドレスを記載してください
- ホスト毎にiptables/firewalld等を適宜空ける
- master nodeのdocker-composeから起動する
- 最低でもdb migration が完了し、完全に起動するまではslaveを起動しないこと
git clone https://github.com/ainamori/awx-deploy.git
cd awx-deploy
vim .env
- 起動
docker compose up -d
起動すると以下のとおりアクセスができる
- UI
https://awx_1_server_ip:3000
- API
http://awx_1_server_ip:8013
*) ログイン情報 admin
/.envで指定した AWX_SUPERUSER_PASSWORD
UIのトポロジービューを見ると分かるがこのままでは awx_1 と awx_2 が独立していて相互で機能していない。 また、receptor-hopも存在していない。
これはreceptorの経路とAWXトポロジ(インスタンス)は別管理になっているから。
docker exec -it awx_1 awx-manage provision_instance --hostname="receptor-hop_1" --node_type="hop" && \
docker exec -it awx_1 awx-manage provision_instance --hostname="receptor-hop_2" --node_type="hop" && \
docker exec -it awx_1 awx-manage register_peers "receptor-hop_1" --peers "awx_1" && \
docker exec -it awx_1 awx-manage register_peers "receptor-hop_1" --peers "awx_2" && \
docker exec -it awx_1 awx-manage register_peers "receptor-hop_2" --peers "awx_1" && \
docker exec -it awx_1 awx-manage register_peers "receptor-hop_2" --peers "awx_2" && \
docker exec -it awx_1 awx-manage register_peers "receptor-hop_2" --peers "receptor-hop_1"
- awx_2 で行う場合は docker exec 先を awx_2 に変更する
AWXのコントロールプレーンを持たない、実行のみのノードを追加する場合は以下の通り
receptorはデフォルトではdocker母艦のhostnameで起動するようになっているため、instanceはホスト名で登録する
export EXECUTION_NODENAME="<登録するExcecution node の hostnameコマンド結果>"
docker exec -it awx_1 awx-manage provision_instance --hostname="${EXECUTION_NODE}" --node_type="execution" && \
docker exec -it awx_1 awx-manage register_peers "${EXECUTION_NODE}" --peers "receptor-hop_1" && \
docker exec -it awx_1 awx-manage register_peers "${EXECUTION_NODE}" --peers "receptor-hop_2"
docker exec -it awx_1 receptorctl status
awx-manage provision_instance --hostname="$(hostname)" --node_type="$MAIN_NODE_TYPE"
awx-manage register_queue --queuename=controlplane --instance_percent=100
awx-manage register_queue --queuename=default --instance_percent=100
awx-manage provision_instance --hostname="receptor-hop" --node_type="hop"
awx-manage register_peers "receptor-hop" --peers "awx_1"
awx-manage provision_instance --hostname="receptor-$e" --node_type="execution"
awx-manage register_peers "receptor-$e" --peers "receptor-hop"