Как мне использовать внешний 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 }}
Надеюсь, это поможет вам.