Ansible Dynamic Inventory - создать инвентарь с IP-адресами под определенным тегом с подчеркиванием вместо точки

11

Я новичок в Ansible. Когда я использую ec2.pyдинамический инвентарь для создания инвентаря, после завершения воспроизведения книги воспроизведения результаты отображаются в виде списка IP-адресов под определенным тегом с подчеркиванием вместо точки. Например, я хочу запустить playbook для экземпляров с определенным тегом, мне интересно, как другие люди работают с 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"
  ],
Берлин
источник
Почему для вас важно, чтобы имя, которое дает сценарий каждому узлу, подчеркивало не алфавитно-цифровые символы?
Ассаф Лави
Это, кажется, очень специфический инструмент-ориентированный вопрос. Для этого есть ServerFault, и его по теме есть serverfault.com/help/on-topic . Не уверен, как по теме здесь, если вообще.
Евгений
@ Евгений, не уверен, что понимаю, что ты имеешь в виду, какой смысл, http://devops.stackexchange.comесли ты не задаешь вопросы? это не вопрос DevOps?
Берлин,

Ответы:

5

Это работает, если я закомментирую переменную hostname_variable, потому что это позволяет переопределить имя_ инвентаря переменной ec2 вместо использования destination_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}}"
Нимитак
0

Я была такая же проблема. Я получал обратно IP-адреса с подчеркиванием вместо точек. Но я уже несколько раз замечал, что изменение ini-файла и повторный запуск ec2.py сразу не вернут правильную информацию. Однажды я изменил на private_ip_address, и он некоторое время возвращал private_dns_name. На этот раз, после изменения на private_ip_address и повторного запуска его несколько раз - пробуя и пробуя его и пробуя - через 20 минут он неожиданно начал возвращать IP-адреса с точками вместо подчеркивания! Я не знаю. Странный AF, верно?

Тодд уолтон
источник
Звучит как «проблема» кеширования. Вы пытались изменить параметр «cache_max_age» в ec2.ini?
мальте
Вы, наверное, совершенно правы. Я просто смотрю на это сегодня, на самом деле. Вы можете запустить "./ec2.py --refresh-cache".
Тодд Уолтон