2017-07-23 5 views
0

Ich habe zwei VPCs unter demselben Konto, von denen jedes mehrere Hosts mit privaten IPs hat.Ansible AWS ec2 Modul mit Tags und dynamischem Inventar gibt falsche Hosts zurück

Ich habe einen Host mit einem Tag mobile zu true entspricht und einen anderen Host mit einem Tag von Environment-ci gleich, beide mit dem gleichen privaten IP, aber sie befinden sich in unterschiedlichen VPC.

, wenn ich die folgende Tag-Suche mit ansible laufen:

- name: "install security service" 
    hosts: "tag_Environment_{{ env }}:&tag_Service_{{ service }}_true" 

Mit den Argumenten env="ci" und service="mobile" ich einer der Gastgeber zurück, obwohl jeder der Hosts nicht beide Tags hat.

Da sie die gleiche IP haben, scheint es, als würde die Suche die Ergebnisse zusammenführen und somit einen Host zurückgeben, der nur einen der Tags hat.

+0

Das Szenario macht keinen Sinn für mich. Sie haben zwei VPCs mit der gleichen Subnetting, wie soll der Control-Host auf beide Hosts zugreifen, wenn sie die gleiche IP haben? Es kann nur auf den gleichen VPC zugreifen –

Antwort

0

Ja, ec2.py Inventarscript verwendet vpc_destination_variable Parameter, um Hosts zu benennen.
Für VPC ist es normalerweise auf private_ip_address in ec2.ini festgelegt, so dass Sie nur einen Host mit derselben IP in Ihrem Inventar haben können.

Um Ihre Situation zu überwinden, können Sie versuchen, mit instance_filters Hosts zu filtern, bevor sie im Inventar gespeichert werden.

Beispiel von ec2.ini:

# Retrieve only instances with (key=value) env=staging tag 
# instance_filters = tag:env=staging 

# Retrieve only instances with role=webservers OR role=dbservers tag 
# instance_filters = tag:role=webservers,tag:role=dbservers 

# Retrieve only t1.micro instances OR instances with tag env=staging 
# instance_filters = instance-type=t1.micro,tag:env=staging 

# You can use wildcards in filter values also. Below will list instances which 
# tag Name value matches webservers1* 
# (ex. webservers15, webservers1a, webservers123 etc) 
# instance_filters = tag:Name=webservers1* 
+0

Ich stoße auf ein ähnliches Problem. Gibt es eine Möglichkeit, diese Filter mit Parametern von 'extra_vars' zu verwenden? Können Sie ein Beispiel dafür geben, was Sie unter "versuchen und mit ihnen spielen" verstehen? – apines

+0

hinzugefügt Beispiel aus ec2.ini Kommentare zu meiner Antwort. AFAIK, gibt es keine direkte Möglichkeit, instance_filters von zusätzlichen vars aufzufüllen. –

Verwandte Themen