はじめに
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_
で始まる変数名が禁止されている、と判断しました。