質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

【Ansible】failed_whenの条件にハイフンを含んだ文字を指定したい

x066
x066

総合スコア22

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0グッド

0クリップ

457閲覧

投稿2022/10/28 17:19

前提

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を用いた場合はサーバホスト名にハイフンが入っていても問題なく動きましたがこの仕組みについても教えて頂けると有難いです。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

yabusakadeny

2022/10/29 05:36

私の環境では再現できませんでした。。。 お手数ですが、以下の2点を教えていただけますでしょうか。 1. ansible のバージョン 2. Playbookを実行した同じディレクトリで「ansible-config dump --only-changed」を実行した結果
x066

2022/11/01 09:30

ご返信が遅くなり申し訳ございません。 1.バージョンは2.8.1 2. ANSIBLE_FORCE_COLOR のTrue、HOST_KEY_CHECKINGのFalseのみが出力されました
yabusakadeny

2022/11/14 12:35

遅れて申し訳ありません。情報ありがとうございました。 残念ながら、設定や ansible のバージョンを合わせても再現しませんでした。 shell: 【処理内容は割愛】 のところは、 shell: echo server-1 のようにして試しました。 なお、変数の値に - が含まれること自体は特に問題ありません。 お力になれずすみません。
x066

2022/11/16 13:25

ご回答ありがとうございます、アレから色々試したところ何故か解消しましたので質問は閉じさせて頂きます。

回答1

1

自己解決

コメントの方にも記載しましたが、何故か解消しましたので質問は閉じさせて頂きます。

投稿2022/11/16 13:27

x066

総合スコア22

yabusakadeny🎉を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。