Ansible Dynamic Inventory-ドットの代わりにアンダースコアを使用して、特定のタグの下のIPアドレスでインベントリを生成します


11

Ansibleは初めてです。ec2.py動的インベントリを使用してインベントリを生成すると、プレイブックの実行が終了した後、結果が特定のタグの下のIPアドレスのリストとして、ドットではなくアンダースコア付きで表示されます。たとえば、特定のタグが付いたインスタンスでプレイブックを実行したいのですが、他の人がどのようにIPアドレスを操作しているのでしょうか。

---
- hosts: tag_test_staging
  sudo: true
  tasks:
  - name: Make sure that we can connect to the machine
    ping:

    PLAY RECAP *********************************************************************
    10_80_20_47                : ok=0    changed=0    unreachable=1    failed=0 

プライベートアドレスの場合、ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

ec2.pyの結果:

 "tag_test_staging": [
    "10_80_20_47"
  ],

公開アドレスの場合、ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

ec2.pyの結果:

 "tag_test_staging": [
    "52_28_11_11"
  ],

スクリプトが各ホストに付ける名前に英数字以外の文字にアンダースコアが付いていることが重要なのはなぜですか。
Assaf Lavie 2017年

これは非常に具体的なツール中心の質問のようです。そのためのServerFaultがあり、そのオントピックにはserverfault.com/help/on-topicがあります。仮にあるとしても、ここがどれほど話題になっているかはわかりません。
Evgeny 2017年

@Evgeny、どういう意味かわかりhttp://devops.stackexchange.comませんが、質問しないとどうなるのですか?DevOpsの質問ではありませんか?
ベルリン

回答:


5

これは、destination_variableを使用する代わりに、ecto2変数でinventory_nameをオーバーライドできるため、hostname_variableをコメント化すると機能します。

#hostname_variable = private_ip_address
#hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = private_ip_address

プライベートIPの場合:

destination_variable = private_ip_address

悲しいかな、同じ動作が見られ、hostname_variableをコメントアウトしても修正されません。
トッドウォルトン

ただし.... iniファイルを変更してec2.pyを再実行しても正しい情報がすぐに返されないことに何度か気づきました。奇妙なAFですよね?しかし、何度か試してみて試してみたところ、約20分後に、アンダースコアではなくドットを含むIPアドレスが突然返され始めました。私は知らないよ。
トッドウォルトン

条件をつけたい場合、どうしたらいいですか。例:vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack

0

同じ問題がありました。ドットの代わりにアンダースコアを使用してIPアドレスを取得していました。しかし、iniファイルを変更してec2.pyを再実行しても正しい情報がすぐに返されないことに何度か気づきました。私がprivate_ip_addressに変更すると、しばらくの間private_dns_nameを返し続けました。今回は、private_ip_addressに変更して数回再実行した後-試してみて、試してみました-約20分後に、アンダースコアではなくドットのあるIPアドレスが突然返され始めました!私は知らないよ。奇妙なAFですよね?


キャッシングの「問題」のように聞こえます。ec2.iniの 'cache_max_age'パラメータを変更しようとしましたか?
モルト

あなたはおそらく完全に正しいです。今日はただそれを見ていました。「./ec2.py --refresh-cache」を実行できます。
トッドウォルトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.