🎃
AWX を Docker環境で活用する #2
はじめに
AWXとreceptorのお話
AWXのUIにはトポロジービューという機能があり、これを使う事でAWXの構成情報が見えるようになっている。
ではAWXがそれぞれのノードとどうやって連携しているかというとreceptorが使われている。
しかし、AWXのトポロジビューはあくまでAWXのdbに登録された情報を元に通信状況などを見ているのみでreceptorから情報を吸い上げているわけでは無い。
従ってreceptorレベルできちんと連携していないとAWXで連携を組んでいるように見えても実は通信できていないという事が起こりうる。
具体的には以下のように実行する。
$ docker exec -it awx_1 receptorctl status
Node ID: awx_1
Version: 1.3.1+g4fa0363
System CPU Count: 4
System Memory MiB: 7983
Connection Cost
receptor-hop_1 1
Known Node Known Connections
$(hostname -s)
awx_1 receptor-hop_1: 1
awx_2 receptor-hop_2: 1
receptor-hop_1 awx_1: 1 receptor-hop_2: 1
receptor-hop_2 awx_2: 1 receptor-hop_1: 1
Route Via
awx_2 receptor-hop_1
receptor-hop_1 receptor-hop_1
receptor-hop_2 receptor-hop_1
Node Service Type Last Seen Tags
awx_1 control Stream 2023-02-25 06:35:38 {'type': 'Control Service'}
receptor-hop_1 control Stream 2023-02-25 06:35:32 {'type': 'Control Service'}
receptor-hop_2 control Stream 2023-02-25 06:35:31 {'type': 'Control Service'}
awx_2 control Stream 2023-02-25 06:34:53 {'type': 'Control Service'}
$(hostname -s) control Stream 2023-02-21 03:51:43 {'type': 'Control Service'}
Node Work Types
awx_1 local, kubernetes-runtime-auth, kubernetes-incluster-auth
awx_2 local, kubernetes-runtime-auth, kubernetes-incluster-auth
$(hostname -s) ansible-runner
receptorctlコマンドは基本的にreceptorが動いていればreceptorctlが使えるのでどのホストでもできるのだが
receptor-hopはRECEPTORCTL_SOCKET
が指定されないまま起動されるため、明示的に指定しなければ使えない
定義しておいて特に不便は無いのでreceptor-hopの項にも以下は記載しておくべきだろう。
environment:
RECEPTORCTL_SOCKET: /var/run/awx-receptor/receptor.sock
なお、上記で表示されている$(hostname -s)
については誤って登録されてしまったもの。
困ったことに2023年2月現在でこの間違って登録したreceptorの削除方法は無いようだ。
AWXのmesh削除と関連があるらしいが、1年以上放置されており何時になったら実装されることやら。
Discussion