Почему Ansible не любит ami от AmazonLinux2?

Я просто пробовал кое-что с анзиблем, но я очень признателен, если кто-нибудь сможет воспроизвести это или, по крайней мере, может мне это объяснить. Я пытаюсь развернуть экземпляры с 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

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


person Marcelo Hualoto    schedule 26.03.2020    source источник


Ответы (1)


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

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

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

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

Обновите «объемную» часть yml, и все должно работать нормально.

person saurabh14292    schedule 27.03.2020