Экспорт объектов из AWX

Экспорт объектов из AWX#

На этом этапе объекты AWX выгружаются через REST API в файлы YAML с помощью роли filetree_create коллекции infra.controller_configuration.

Экспорт выполняет только чтение: AWX продолжает работать в штатном режиме.

Сценарий экспорта#

Создайте на управляющем узле файл сценариев (playbook) export.yml:

---
- name: Экспорт объектов AWX
  hosts: localhost
  connection: local
  gather_facts: false
  vars:
    controller_hostname: "{{ awx_url }}"
    controller_validate_certs: false
    output_path: "{{ export_dir | default('/var/tmp/awx-export') }}"
    flatten_output: true
    input_tag:
      - organizations
      - users
      - teams
      - roles
      - credential_types
      - credentials
      - execution_environments
      - notification_templates
      - projects
      - inventory
      - inventory_sources
      - hosts
      - groups
      - job_templates
      - workflow_job_templates
      - schedules
      - labels
  pre_tasks:
    - name: Создание временного токена доступа AWX
      awx.awx.token:
        description: "Экспорт объектов для миграции"
        scope: read
        state: present
        controller_host: "{{ awx_url }}"
        controller_username: "{{ awx_admin_user | default('admin') }}"
        controller_password: "{{ awx_admin_password }}"
        validate_certs: false

    - name: Использование токена для экспорта
      ansible.builtin.set_fact:
        controller_oauthtoken: "{{ controller_token.token }}"
  roles:
    - infra.controller_configuration.filetree_create
  post_tasks:
    - name: Отзыв временного токена доступа
      awx.awx.token:
        existing_token: "{{ controller_token }}"
        state: absent
        controller_host: "{{ awx_url }}"
        controller_username: "{{ awx_admin_user | default('admin') }}"
        controller_password: "{{ awx_admin_password }}"
        validate_certs: false

Здесь:

  • flatten_output: true – режим вывода, при котором все объекты одного типа записываются в один файл; такой формат удобен для правки и последующего импорта;

  • input_tag – перечень типов объектов для выгрузки; настройки AWX (тег settings) сознательно не выгружаются – они не совместимы с Astra Automation;

  • роль filetree_create принимает только аутентификацию по токену, поэтому сценарий создает временный токен доступа AWX и отзывает его по завершении.

Примечание

Отзыв токена выполняется с аутентификацией по имени пользователя и паролю: токен с областью применения read не имеет права удалить сам себя.

Запуск экспорта#

Для запуска экспорта выполните команду:

ansible-playbook export.yml \
   -e awx_url=https://<awx> \
   -e awx_admin_password=<password> \
   -e export_dir=/var/tmp/awx-export

Здесь:

  • <awx> – адрес контроллера AWX, при необходимости с портом TCP;

  • <password> – пароль администратора AWX; для рабочих сред рекомендуется передавать пароль через файл, зашифрованный Ansible Vault.

Результат экспорта#

Сценарий создает в каталоге экспорта набор файлов YAML – по одному на тип объекта:

/var/tmp/awx-export/
├── credentials.yaml
├── current_credential_types.yaml
├── current_execution_environments.yaml
├── groups.yaml
├── hosts.yaml
├── inventories.yaml
├── inventory_sources.yaml
├── job_templates.yaml
├── labels.yaml
├── notification_templates.yaml
├── organizations.yaml
├── projects.yaml
├── schedules.yaml
├── team_roles.yaml
├── teams.yaml
├── user_roles.yaml
├── users.yaml
└── workflow_job_templates.yaml

Каждый файл содержит список объектов в формате переменных коллекции infra.controller_configuration. Ссылки между объектами записаны по названиям, а не по числовым идентификаторам, поэтому файлы переносимы между инсталляциями.

Проверьте, что экспорт не оставил маркеров ToDo: – их роль filetree_create вставляет вместо значений, которые не удалось получить через API:

grep -R 'ToDo: ' /var/tmp/awx-export/

Ожидаемый результат: пустой вывод. Если маркеры найдены, исправьте отмеченные места вручную до импорта.

Рекомендуется сохранить копию каталога экспорта до внесения правок:

cp -r /var/tmp/awx-export /var/tmp/awx-export.orig