1

Я написал полезную задачу для создания экземпляра ec2 и добавления хоста в качестве динамического хоста. Задача отлично работает и создала экземпляр, но я не могу получить информацию о экземпляре.Ansible EC2 Module не извлекает информацию об экземпляре

Моя версия анзибль: 2.2.0.0/Ubuntu 14,04

Вот мой код

- name: launch ec2 instance for QA 
    local_action: 
    module: ec2 
    key_name: "{{ ec2_keypair }}" 
    group: "{{ ec2_security_group }}" 
    instance_type: "{{ ec2_instance_type }}" 
    image: "{{ ec2_image }}" 
    vpc_subnet_id: "{{ ec2_subnet_ids }}" 
    region: "{{ ec2_region }}" 
    instance_tags: '{"Name":"{{ec2_tag_Name}}","Type":"{{ec2_tag_Type}}","Environment":"{{ec2_tag_Environment}}"}' 
    assign_public_ip: yes 
    wait: true 
    count: 1 
    register: ec2 

- debug: var=item 
    with_items: ec2.instances 

- add_host: name={{ item.public_ip }} > 
      groups=dynamically_created_hosts 
    with_items: ec2.instances 

- name: Wait for the instances to boot by checking the ssh port 
    wait_for: host={{item.public_ip}} port=22 delay=60 timeout=320 state=started 
    with_items: ec2.instances 

Вывод, что я получаю:

ЗАДАЧА [запуск ec2 экземпляра для QA] **********************************************
изменен: [localhost -> localhost]

ЗАДАЧА [отладка] ********************************************* **********************
ОК: [localhost] => (item = ec2.instances) => { "item": "ec2.instances " }

ЗАДАЧА [add_host] *************************************** *************************
фатальный: [localhost]: FAILED! => {"failed": true, "msg": "поле" args "имеет недопустимое значение, которое, как представляется, содержит неопределенную переменную. Ошибка:« unicode object »не имеет атрибута public_ip '\ n \ nПроблема, похоже, находилась в '/var/lib/jenkins/jobs/QA/workspace/dynamic-ec2.yml': строка 37, столбец 7, но может \ n быть в другом месте в файле в зависимости от конкретной проблемы синтаксиса. \ n \ nСогласная строка выглядит так: \ n \ n \ n - add_host: name = {{item.public_ip}}> \ n^здесь \ nМы можем ошибаться, но похоже, что это может быть проблемой с \ nmissing quotes Всегда указывайте скобки выражения шаблона, когда они \ nstart значение. Например: \ n \ n with_items: \ n - {{foo}} \ n \ nУдача должна быть записана как: \ n \ n with_items: \ n - \ "{{foo}} \" \ n "}

Есть ли другой способ сделать это?

ответ

4

Вы не можете использовать голые переменные в 2.2. Синтаксис устарел, и пользователи были предупреждены с версии 2.0.

Вы должны прочитать сообщение об ошибке вы вставили, и, хотя он предлагает другую причину, вы должны следовать примеру, приведенный:

Should be written as: 
    with_items: 
    - "{{ foo }}" 

В вашем случае достаточно, чтобы заменить все with_items: ec2.instances с :

with_items: "{{ ec2.instances }}" 
+0

@tehraf Спасибо за советы, он отлично работает. – rolindroy

Смежные вопросы