てくなべ (tekunabe)

ansible / network / automation

[Ansible/AWX] アドホック実行画面の追加変数欄では ansible_ で始まる変数名を指定できない

はじめに

Ansible Tower / AWX には、Playbook をジョブテンプレートとして実行する機能の他にも、アドホックansible コマンドを実行する機能もありま

-e オプションに相当する、追加変数の設定欄がありますが、指定できる変数が制限されています。

具体的には、'ansible_ で始まる変数名が指定できません。(ジョブテンプレート画面など、他の画面では指定可能です)

  • 検証環境
    • AWX 11.0

検証

ここではアドホックコマンド実行画面で、以下の追加変数を指定して、起動します。

---
ansible: "I'm ok"
ansible_x: hello
ansible_port: 2222
ansible_network_os: junos

f:id:akira6592:20200422200948p:plain
指定できない変数名がある

ansible_xansible_portansible_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 を頼りに、コードを検索すると、このあたりがヒットしました。

github.com

追っていくとここに行き着き、

github.com

def is_ansible_variable(key):
    return key.startswith('ansible_')

とあったので、ansible_ で始まる変数名が禁止されている、と判断しました。