Мне нужно, чтобы Ansible запустил свой EC2, обнаружил публичный IP и изменил его в двух файлах. - PullRequest
0 голосов
/ 17 января 2019

Я новичок в aws и написал несколько книг для создателей, запуска и остановки EC2. Это работает очень хорошо.

Теперь мне нужно выяснить публичный IP-адрес и изменить IP-адрес в 2 файлах на экземпляре EC2.

Я попробовал несколько фрагментов кода, чтобы добавить «выяснить общедоступный IP-адрес» - вещь, но у меня ничего не работает.

Моя пьеса:


  - name: Starting an EC2 Instance
    hosts: local
    connection: local
    vars_files:
    - aws_keys.yml
    tasks:
    - name: starting ec2
      ec2:
        key_name: ansible
        aws_access_key: "{{ aws_access_key }}"
        aws_secret_key: "{{ aws_secret_key }}"
        instance_ids: ['i-0f3xxxxxxxxxxxx']
        region: eu-central-1
        state: running
        wait: true

Я попробовал это:

- name: ip
command: curl http://169.254.169.254/latest/meta-data/public-ipv4
register: myip

- debug:
var: myip

Но он показывает мне только IP-адрес от моей машины управления ...

Возможно ли добавить этот общедоступный IP-адрес в мою книгу-старт EC2 или мне нужна отдельная книга для этого?

Сегодня я попробовал следующее:

- ec2_instance_facts:
        region: eu-central-1

      register: ec2_metadata

    - debug: msg="{{ ec2_metadata.instances }}"

    - debug: msg="{{ ec2_metadata.instances[0].public_ip_address }}"

Я получил эту ошибку:

ЗАДАЧА [ec2_instance_facts] ******************************************* ************************************************** * Возникла исключительная ситуация во время выполнения задачи. Чтобы увидеть полную трассировку, используйте -vvv. Ошибка: botocore.exceptions.NoCredentialsError: Невозможно найти учетные данные роковой: [localhost]: не удалось! => {"updated": false, "module_stderr": "Трассировка (последний последний вызов): \ n File \" / root / .ansible / tmp / ansible-tmp-1547803855.77-249661690870165 / AnsiballZ_ec2_instance_facts.py \ ", строка 113, в \

Нужно ли для раздела ec2_instance_facts также aws_secret_keys?

Аааа с клавишами aws это работает:

- ec2_instance_facts:
        region: eu-central-1
        aws_access_key: Axxxxxxxxx
        aws_secret_key: Gz8+Dxxxxxxxxxx
        instance_ids:
          - i-0f31xxxxxxx

Теперь мне нужно записать общедоступный IP-адрес в var и использовать его для обновления 2 файлов на экземпляре EC2, которые начинаются с playbook.

Есть идеи?

1 Ответ

0 голосов
/ 20 января 2019

Для извлечения publicIP, сохранения его в переменной и последующего обновления с его помощью двух файлов попробуйте использовать что-то вроде boto3 sdk для python, чтобы получить подробные данные PublicIP и использовать ansible для обновления двух файлов с этим IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...