前提
Ansibleにおいて以下処理を実現させたいと考えております。
・インベントリファイルにてハイフンを含んだ特定の文字列(サーバホスト名)を格納した変数を定義
・shellモジュールにて実行した処理をregisterに格納
・failed_whenで変数とregisterを比較、変数で定義した文字列がregisterの結果内に存在しない場合はエラー
試したこと
インベントリファイル(ini形式)にて以下変数を定義
ini
1[all:vars] 2s_hostname = server-1
以下Playbookを作成
yml
1- name: 変数名確認 2 debug: 3 msg: 4 - "{{ s_hostname }}" 5# 上記処理は問題なく出力される 6 7- name: 処理結果格納 8 shell: 【処理内容は割愛】 9 register: test_result 10# test_resultに処理結果を格納 11 12- name: 処理結果比較 13 debug: 14 msg: 15 - "結果を比較します、対象文字が含まれていなければ失敗です" 16 failed_when: s_hostname not in test_result.stdout 17# ここで以下エラーメッセージが出て失敗になる 18# 変数ではなくserver-1を直入力した場合も同じ結果
エラーメッセージ
Make sure your variable name does not contain invalid characters like '-'
相談事項
Ansibleの仕様上、ハイフン(-)は定義出来ない物であるため上記エラーが発生している認識です(この場合だとMSG出力は正常に出来ている理由が不明ですが)
上記処理を実現させたい場合の実装方法についてご教授頂けると幸いでございます。
その他確認したいこと
マジック変数であるansible_hostnameを用いた場合はサーバホスト名にハイフンが入っていても問題なく動きましたがこの仕組みについても教えて頂けると有難いです。

回答1件
あなたの回答
tips
プレビュー