Почему Ansible не нравятся AmazonLinux2 ami? - PullRequest
1 голос
/ 26 марта 2020

Я просто пробовал кое-что с ansible, но я действительно ценю, может ли кто-нибудь воспроизвести это или, по крайней мере, объяснить это мне. Я пытаюсь развернуть экземпляры с ansible на AWS. Я использую ansible (2.9.6) с виртуальной машины, развернутой с Vagrant на хосте W10. Я написал эту пьесу:

---

- name: Configuring the EC2 instance
  hosts: localhost
  connection: local
  vars:
    count: '{{ count }}'
    volumes:
      - device_name: /dev/sda1
        volume_size: '{{ volume_size }}'

  tasks:
    - name: Launch Instances
      ec2:
        instance_type: '{{ instance_type }}'
        image: '{{ ami }}'
        region: '{{ region }}'
        key_name: '{{ pem }}'
        count: '{{ count }}'
        group_id: '{{ sec_grp }}'
        wait: true
        volumes: '{{ volumes }}'
      register: ec2

    - name: Associating after allocating eip
      ec2_eip:
        in_vpc: yes
        reuse_existing_ip_allowed: yes
        state: present
        region: '{{ region }}'
        device_id: '{{ ec2.instance_ids[0] }}'
      register: elastic_ip

    - name: Adding tags to the instance
      local_action:
        module: ec2_tag
        region: '{{ region }}'
        resource: '{{ item.id }}'
        state: present
      with_items: '{{ ec2.instances }}'
      args:
        tags: 
          Name: '{{ tag_name }}'
          Env: '{{ tag_env }}'
          Type: AppService
      register: tag

Я выполняю следующую команду с --extra-vars: ansible-playbook ec2.yml --extra-vars instance_type=t2.micro -e ami=ami-04d5cc9b88f9d1d39 -e region=eu-west-1 -e pem=keyname -e count=1 -e sec_grp=sg-xx -e volume_size=10 -e tag_name=prueba -e tag_env=dev -vvv

ami-04d5cc9b88f9d1d39 = Amazon Linux 2 AMI (HVM), SSD Тип тома для eu-west-1

Когда playbook завершает успешную работу и на моей консоли aws видит, что экземпляр загружается и переходит в состояние выполнения (инициализация), внезапно изменяется на завершение и наконец, чтобы остановить государство. На моем терминале playbook работает нормально, и я получаю:

PLAY RECAP **************************
localhost                  : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Я потратил целый день, пытаясь это исправить, меняя '' 'state: running' '' и добавляя новые задачи, чтобы экземпляр явно запускался. Ну, наконец, проблема была в AMI. Я изменил его на ubuntu ami: ami-035966e8adab4aaad в том же регионе и работает нормально, он все еще работает. Я использовал этот ami раньше (amazon linux 2) с облачной информацией и терраформой и никогда не случалось что-то подобное, всегда загружался нормально. Ну, если у кого-то есть идея, почему это происходит, или есть что-то, чего мне не хватает, мне очень нравится это знать. Береги себя!

1 Ответ

0 голосов
/ 27 марта 2020

Мне удалось воспроизвести эту проблему. Я перепробовал все, что вы упомянули. Скопированный предоставленный вами yml-файл выполняется с точно такими же значениями (кроме пары ключей и группы безопасности). EC2 переходит в рабочее состояние и затем останавливается. Чтобы изолировать проблему, я сделал то же самое в другом регионе (AP-South-1) с тем же Amazon Linux 2 ami, но была воспроизведена та же ошибка.

Это потому, что Amazon Linux 2 AMI требует, чтобы EBS был установлен в / dev / xvda, а не в / dev / sda1. / dev / sda1 используется, когда AMI является Ubuntu.

Поскольку AMI и путь монтирования для root EBS несовместимы, экземпляр EC2 переходит в состояние остановки после инициализации.

См. этот SO проблема: AWS EC2 Остановка экземпляра сразу после запуска с использованием boto3

Обновите часть "volume" в yml, и она должна нормально работать.

...