Переменные Ansible playbook, используемые в качестве отображения в задачах того же playbook

#ansible

#ansible

Вопрос:

привет, я пытаюсь выполнить задание playbook, которое выглядит следующим образом:

 - name: task of tasks
  hosts: localhost
  vars:
    os_project: "supercoolproject_ng"
    os_tenant: "supercooltenant"
  tasks:
    - name: Create OS instance
      hosts: localhost
      vars:
        openstack:
          state: present
          locality: ng
          project: "{{ os_project }}"
          tenant: "{{ os_tenant }}"
          zone: row-r
          image: debian-10-amd64
          security_groups:
           - base
          server_group: wobani-servergroup
          instances:
            wobani01: t1.4c4r50d
      vars_files:
        - "{{ secrets_file }}"
      roles:
      - adm_openstack_deploy_instance
 

Я ожидаю, что это будет работать так:

  - name: Create OS instance
      hosts: localhost
      vars:
        openstack:
          state: present
          locality: ng
          project: supercoolproject_ng
          tenant: supercooltenant
 

Реальность выглядит намного хуже, чем я ожидал:

 ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

The error appears to be in '/ansible/playbooks/deploy.yml': line 9, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  tasks:
    - name: Create OS instance
      ^ here
 

Я попытался debug: msg= использовать те переменные, которые я указал в начале, и они работают и показывают эти переменные. Но когда я использую его при tasks > vars > "{{ os_project }}" сбое.

Причина, по которой я пытаюсь это сделать, заключается в том, что я повторяю их tasks в нескольких средах, таких как locality и availability_zone (зона), и все эти задачи используют одно и то же имя клиента и одно и то же имя проекта. Основная причина заключалась в том, чтобы упростить настройку playbook для каждого отдельного экземпляра и не повторять клиента и проект при написании с нуля.

Спасибо за любые советы.

Комментарии:

1. Почему у вас есть hosts определение под tasks ? Если у вас нет никаких «задач», которые нужно выполнить, вы можете пропустить этот раздел.