はじめに
Ansible Tower / AWX には、Playbook をジョブテンプレートとして実行する機能の他にも、アドホックな ansible コマンドを実行する機能もありま
-e オプションに相当する、追加変数の設定欄がありますが、指定できる変数が制限されています。
具体的には、ansible_ で始まる変数名が指定できません。(ジョブテンプレート画面など、他の画面では指定可能です)
- 検証環境
- AWX 11.0
検証
ここではアドホックコマンド実行画面で、以下の追加変数を指定して、起動します。
--- ansible: "I'm ok" ansible_x: hello ansible_port: 2222 ansible_network_os: junos

ansible_x、ansible_port、ansible_network_os が禁止という旨のエラーメッセージが表示されました。
参考: 知ったきっかけと調べた方法
もともとは、この画面で ansible_port 変数を利用して、ポートを変更した変数確認をしとうとしました。その際にエラーに遭遇しました。そこで、他になにが禁止されてるのだろうと思って調べることにしました。
ブラウザの言語設定を英語にすると、エラーメッセージは以下のようになります。
ansible_x, ansible_port, ansible_network_os are prohibited from use in ad hoc commands.
この are prohibited from use in ad hoc commands を頼りに、コードを検索すると、このあたりがヒットしました。
追っていくとここに行き着き、
def is_ansible_variable(key): return key.startswith('ansible_')
とあったので、ansible_ で始まる変数名が禁止されている、と判断しました。