Как мне использовать внешний IP-адрес экземпляра ec2 в шаблоне?

Я настраиваю узлы, которые находятся в облаке rackspace/digitalocean/aws/google и нуждаются в доступе к внешнему IP-адресу экземпляров ec2 в шаблоне в ansible.

Я хочу определить мои машины в файле хоста следующим образом:

taps_1 ansible_host=54.123.456.789  dc=aws-richmond provider=aws

и затем в шаблоне (как один для iptables):

-A FWR -ieth0 -p tcp -s {{ hostvars[host].ansible_host }} --dport 80   -j ACCEPT

но это значение не существует:/ если я использую ansible_fqdn или IP, указанный на ansible_default_ipv4 Я получаю только внутренний IP (например, 172.31.50.181)

Мы определяем нашу инфраструктуру следующим образом:

54.123.456.789 name=taps_1 dc=aws-richmond provider=aws

и доступ, делая hostvars[host].inventory_nameНо я бы не хотел этого делать.

Идеи?

1 ответ

В Ansible 1.9 вы можете использовать ansible_ssh_host переменная в то время как на Ansible 2.0 вы можете использовать ansible_host

В вашем шаблоне вам просто нужно использовать эту переменную, чтобы получить публичный IP-адрес вашего хоста, и он получит его из вашего инвентарного файла:

например: Ansible 1.9

{{ ansible_ssh_host }}

или Ansible 2.0

{{ ansible_host }}

Надеюсь, это поможет вам.

Другие вопросы по тегам