Я работаю с Ansible ec2_asg
модулем с Ansible 2.1.2.0
. Когда я пытаюсь создать группу AutoScaling, я получаю следующее сообщение об ошибке:Ansible ec2_asg - TypeError: объект «NoneType» не является итерабельным
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: 'NoneType' object is not iterable
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Traceback (most recent call last):\n File \"/tmp/ansible_sYlKBr/ansible_module_ec2_asg.py\", line 832, in <module>\n main()\n File \"/tmp/ansible_sYlKBr/ansible_module_ec2_asg.py\", line 821, in main\n create_changed, asg_properties=create_autoscaling_group(connection, module)\n File \"/tmp/ansible_sYlKBr/ansible_module_ec2_asg.py\", line 471, in create_autoscaling_group\n for tag in as_group.tags:\nTypeError: 'NoneType' object is not iterable\n", "module_stdout": "", "msg": "MODULE FAILURE"}
Мы роем в модуль ec2_asg
, и он терпит неудачу здесь:
for tag in as_group.tags:
have_tags[tag.key] = [tag.value, tag.propagate_at_launch]
if tag.key not in want_tags:
changed = True
dead_tags.append(tag)
И мой Целевая задача:
- name: Configuring Auto Scaling Group and perform rolling deploy
ec2_asg:
region: "ap-southeast-1a"
name: "MY-ASG"
vpc_zone_identifier: [ "{{ services_1_subnet_id }}", "{{ services_2_subnet_id }}" ]
launch_config_name: "{{ service_group }}-{{ current_datetime }}"
health_check_type: "{{ health_check_type }}"
health_check_period: "{{ health_check_period }}"
desired_capacity: "{{ min_instances }}"
replace_all_instances: yes
replace_batch_size: "{{ replace_batch_size }}"
min_size: "{{ min_instances }}"
max_size: "{{ max_instances }}"
wait_for_instances: yes
wait_timeout: 600
tags:
- Name: "{{ service_group }}"
- deploy_colour: "{{ deploy_colour }}"
- Type: "ABC"
- Env: "{{ env }}"
state: present
register: asg_result
Предположим, что все var iables уже определены, и они верны.
В ASG уже есть теги.
Что такое 'item' в' Type: "{{item.type}}" '? Вы перебираете какой-то список? –
Да. Я перебираю список элементов, который похож на '- {name: 'XYZ', type: 'ABC'}' –
Если вы зацикливаете, в сообщении об ошибке должно появиться значение элемента, например: 'failed: [localhost] (item = {u'type ': u'ABC', u'name ': u'XYZ'}) => {"failed" ... ", и вы не укажете' with_items' в своем выдержке из плей-листа. –