🎃

AWX を Docker環境で活用する #2

2023/02/25に公開

はじめに

AWX を Docker環境で活用する #1"の続き

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年以上放置されており何時になったら実装されることやら。

GitHubで編集を提案

Discussion