Базовый сценарий#

Базовый сценарий использования CLI Astra Automation Controller включает в себя следующие действия:

  1. Подготовка организационной структуры.

  2. Подготовка инвентаря.

  3. Подготовка проекта.

  4. Подготовка задания.

  5. Запуск задания и проверка его статуса.

Подготовка организационной структуры#

Для подготовки организационной структуры выполните следующие действия:

  1. Сгенерируйте персональный токен доступа с помощью команды awx login:

    CONTROLLER_HOST=<address> CONTROLLER_USERNAME=<username> CONTROLLER_PASSWORD=<password> awx login
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <address> – URL контроллера, например, https://192.168.56.11;

    • <username> – название учетной записи пользователя, например, admin;

    • <password> – пароль, например, awx.

    Эта команда возвращает токен в формате JSON, например:

    {
      "token": "70L1bQv6cj***EHkFaqSGrNZ2S5l4n"
    }
    

    Сохраните полученный токен в надежном месте – в случае утраты его нужно будет сгенерировать заново. Восстановить существующий токен невозможно.

  2. Экспортируйте токен в переменную окружения CONTROLLER_OAUTH_TOKEN с помощью команды export:

    export CONTROLLER_OAUTH_TOKEN=<token>
    
  3. Получите идентификатор среды исполнения с помощью команды awx execution_environments list:

    awx execution_environments list -f human
    

    Эта команда возвращает информацию об имеющихся средах исполнения:

    Пример ответа
    id name
    == ===================================
    2  Control Plane Execution Environment
    1  Default execution environment
    
  4. Создайте организацию с помощью команды awx organization create:

    awx organizations create \
       --name "<your_organization_name>" \
       --default_environment <execution_environment_id>
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <your_organization_name> – название организации, например, Jupiter;

    • <execution_environment_id> – идентификатор среды исполнения, например, 1.

    Эта команда возвращает информацию о созданной организации:

    Пример ответа
    {
      "id": 3,
      "type": "organization",
      "url": "/api/v2/organizations/3/",
      "summary_fields": {
        "default_environment": {
          "id": 1,
          "name": "Default execution environment",
          "description": "",
          "image": "registry.astralinux.ru/aa/aa-base-ee:0.2.1"
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "object_roles": {
          "admin_role": {
            "description": "Can manage all aspects of the organization",
            "name": "Admin",
            "id": 115,
            "user_only": true
          },
          "execute_role": {
            "description": "May run any executable resources in the organization",
            "name": "Execute",
            "id": 116
          },
          "project_admin_role": {
            "description": "Can manage all projects of the organization",
            "name": "Project Admin",
            "id": 117
          },
          "inventory_admin_role": {
            "description": "Can manage all inventories of the organization",
            "name": "Inventory Admin",
            "id": 118
          },
          "credential_admin_role": {
            "description": "Can manage all credentials of the organization",
            "name": "Credential Admin",
            "id": 119
          },
          "workflow_admin_role": {
            "description": "Can manage all workflows of the organization",
            "name": "Workflow Admin",
            "id": 120
          },
          "notification_admin_role": {
            "description": "Can manage all notifications of the organization",
            "name": "Notification Admin",
            "id": 121
          },
          "job_template_admin_role": {
            "description": "Can manage all job templates of the organization",
            "name": "Job Template Admin",
            "id": 122
          },
          "execution_environment_admin_role": {
            "description": "Can manage all execution environments of the organization",
            "name": "Execution Environment Admin",
            "id": 123
          },
          "auditor_role": {
            "description": "Can view all aspects of the organization",
            "name": "Auditor",
            "id": 124
          },
          "member_role": {
            "description": "User is a member of the organization",
            "name": "Member",
            "id": 125,
            "user_only": true
          },
          "read_role": {
            "description": "May view settings for the organization",
            "name": "Read",
            "id": 126
          },
          "approval_role": {
            "description": "Can approve or deny a workflow approval node",
            "name": "Approve",
            "id": 127
          }
        },
        "user_capabilities": {
          "edit": true,
          "delete": true
        },
        "related_field_counts": {
          "inventories": 0,
          "teams": 0,
          "users": 0,
          "job_templates": 0,
          "admins": 0,
          "projects": 0
        }
      },
      "created": "2024-06-04T20:16:52.466774Z",
      "modified": "2024-06-04T20:16:52.466805Z",
      "name": "Jupiter",
      "description": "",
      "max_hosts": 0,
      "custom_virtualenv": null,
      "default_environment": 1
    }
    
  5. Получите идентификатор полномочия Ansible Galaxy с помощью команды awx credentials list:

    awx credentials list -f human
    

    Эта команда возвращает информацию об имеющихся полномочиях:

    Пример ответа
    id name
    == ===============
    2  Ansible Galaxy
    1  Demo Credential
    
  6. Свяжите полномочие Ansible Galaxy с организацией при помощи команды awx organization associate:

    awx organizations associate \
       --galaxy_credential <credential_id> \
       <organization_id>
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <credential_id> – идентификатор полномочия для доступа к Ansible Galaxy, например, 2;

    • <organization_id> – идентификатор организации, созданной ранее, например, 3.

    Эта команда возвращает информацию о добавленном полномочии:

    Пример ответа
    {
      "count": 1,
      "next": null,
      "previous": null,
      "results": [
        {
          "id": 2,
          "type": "credential",
          "url": "/api/v2/credentials/2/",
          "related": {
            "created_by": "/api/v2/users/1/",
            "modified_by": "/api/v2/users/1/",
            "activity_stream": "/api/v2/credentials/2/activity_stream/",
            "access_list": "/api/v2/credentials/2/access_list/",
            "object_roles": "/api/v2/credentials/2/object_roles/",
            "owner_users": "/api/v2/credentials/2/owner_users/",
            "owner_teams": "/api/v2/credentials/2/owner_teams/",
            "copy": "/api/v2/credentials/2/copy/",
            "input_sources": "/api/v2/credentials/2/input_sources/",
            "credential_type": "/api/v2/credential_types/18/"
          },
          "summary_fields": {
            "credential_type": {
              "id": 18,
              "name": "Ansible Galaxy/Automation Hub API Token",
              "description": ""
            },
            "created_by": {
              "id": 1,
              "username": "admin",
              "first_name": "",
              "last_name": ""
            },
            "modified_by": {
              "id": 1,
              "username": "admin",
              "first_name": "",
              "last_name": ""
            },
            "object_roles": {
              "admin_role": {
                "description": "Can manage all aspects of the credential",
                "name": "Admin",
                "id": 29
              },
              "use_role": {
                "description": "Can use the credential in a job template",
                "name": "Use",
                "id": 30
              },
              "read_role": {
                "description": "May view settings for the credential",
                "name": "Read",
                "id": 31
              }
            },
            "user_capabilities": {
              "edit": false,
              "delete": false,
              "copy": true,
              "use": true
            },
            "owners": []
          },
          "created": "2024-02-16T00:06:03.063704Z",
          "modified": "2024-02-16T00:06:03.063729Z",
          "name": "Ansible Galaxy",
          "description": "",
          "organization": null,
          "credential_type": 18,
          "managed": true,
          "inputs": {
            "url": "https://galaxy.ansible.com/"
          },
          "kind": "galaxy_api_token",
          "cloud": false,
          "kubernetes": false
        }
      ]
    }
    

Подготовка инвентаря#

Для подготовки инвентаря выполните следующие действия:

  1. Создайте инвентарь с помощью команды awx inventories create:

    awx inventories create \
       --name "<your_inventory_name>" \
       --organization "<your_organization_name>"
    

    Подставьте собственные значения параметров вместо употребленных в примере. Здесь <your_inventory_name> – название инвентаря, например, Demo Inventory.

    Эта команда возвращает информацию об инвентаре:

    Пример ответа
    {
      "id": 3,
      "type": "inventory",
      "url": "/api/v2/inventories/3/",
      "summary_fields": {
        "organization": {
          "id": 3,
          "name": "Jupiter",
          "description": ""
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "object_roles": {
          "admin_role": {
            "description": "Can manage all aspects of the inventory",
            "name": "Admin",
            "id": 131
          },
          "update_role": {
            "description": "May update the inventory",
            "name": "Update",
            "id": 132
          },
          "adhoc_role": {
            "description": "May run ad hoc commands on the inventory",
            "name": "Ad Hoc",
            "id": 133
          },
          "use_role": {
            "description": "Can use the inventory in a job template",
            "name": "Use",
            "id": 134
          },
          "read_role": {
            "description": "May view settings for the inventory",
            "name": "Read",
            "id": 135
          }
        },
        "user_capabilities": {
          "edit": true,
          "delete": true,
          "copy": true,
          "adhoc": true
        },
        "labels": {
          "count": 0,
          "results": []
        }
      },
      "created": "2024-06-04T20:34:48.855589Z",
      "modified": "2024-06-04T20:34:48.855626Z",
      "name": "Demo Inventory",
      "description": "",
      "organization": 3,
      "kind": "",
      "host_filter": null,
      "variables": "",
      "has_active_failures": false,
      "total_hosts": 0,
      "hosts_with_active_failures": 0,
      "total_groups": 0,
      "has_inventory_sources": false,
      "total_inventory_sources": 0,
      "inventory_sources_with_failures": 0,
      "pending_deletion": false,
      "prevent_instance_group_fallback": false
    }
    
  2. Добавьте управляемый узел в инвентарь с помощью команды awx host create:

    awx host create \
       --name "<node_name>" \
       --inventory <inventory_id> \
       --variables "<node_variables>"
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <node_name> – название управляемого узла, например, node01;

    • <inventory_id> – идентификатор инвентаря, например, 3;

    • <node_variables> – переменные для доступа к управляемому узлу, например, {'ansible_host': '192.168.56.101', 'ansible_user': 'vagrant'}.

    Эта команда возвращает информацию об управляемом узле:

    Пример ответа
    {
      "id": 15,
      "type": "host",
      "url": "/api/v2/hosts/15/",
      "summary_fields": {
        "inventory": {
          "id": 3,
          "name": "Demo Inventory",
          "description": "",
          "has_active_failures": false,
          "total_hosts": 2,
          "hosts_with_active_failures": 0,
          "total_groups": 0,
          "has_inventory_sources": false,
          "total_inventory_sources": 0,
          "inventory_sources_with_failures": 0,
          "organization_id": 3,
          "kind": ""
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "user_capabilities": {
          "edit": true,
          "delete": true
        },
        "groups": {
          "count": 0,
          "results": []
        },
        "recent_jobs": []
      },
      "created": "2024-06-13T12:18:36.814082Z",
      "modified": "2024-06-13T12:18:36.814093Z",
      "name": "node01",
      "description": "",
      "inventory": 3,
      "enabled": true,
      "instance_id": "",
      "variables": "{\"ansible_host\": \"192.168.56.101\", \"ansible_user\": \"vagrant\"}",
      "has_active_failures": false,
      "has_inventory_sources": false,
      "last_job": null,
      "last_job_host_summary": null,
      "ansible_facts_modified": null
    }
    
  3. Создайте полномочие для доступа к управляемому узлу с помощью команды awx credentials create:

    awx credentials create \
       --name '<credential_name>' \
       --credential_type 'Machine' \
       --organization <organization_id> \
       --inputs '<node_inputs>'
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <credential_name> – название полномочия для доступа к управляемому узлу, например, NGINX;

    • <node_inputs> – данные для доступа к управляемому узлу, например, {"username": "vagrant", "password": "vagrant"}.

    Эта команда возвращает информацию о созданном полномочии:

    Пример ответа
    {
      "id": 4,
      "type": "credential",
      "url": "/api/v2/credentials/4/",
      "summary_fields": {
        "organization": {
          "id": 3,
          "name": "Jupiter",
          "description": ""
        },
        "credential_type": {
          "id": 1,
          "name": "Machine",
          "description": ""
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "object_roles": {
          "admin_role": {
            "description": "Can manage all aspects of the credential",
            "name": "Admin",
            "id": 197
          },
          "use_role": {
            "description": "Can use the credential in a job template",
            "name": "Use",
            "id": 198
          },
          "read_role": {
            "description": "May view settings for the credential",
            "name": "Read",
            "id": 199
          }
        },
        "user_capabilities": {
          "edit": true,
          "delete": true,
          "copy": true,
          "use": true
        },
        "owners": [
          {
            "id": 3,
            "type": "organization",
            "name": "Jupiter",
            "description": "",
            "url": "/api/v2/organizations/3/"
          }
        ]
      },
      "created": "2024-06-17T14:34:40.684019Z",
      "modified": "2024-06-17T14:34:40.684031Z",
      "name": "NGINX",
      "description": "",
      "organization": 3,
      "credential_type": 1,
      "managed": false,
      "inputs": {
        "password": "$encrypted$",
        "username": "vagrant"
      },
      "kind": "ssh",
      "cloud": false,
      "kubernetes": false
    }
    

Подготовка проекта#

Для подготовки проекта выполните следующие действия:

  1. Создайте полномочие для доступа к Astra Automation Hub с помощью команды awx credentials create

    awx credentials create \
       --name '<credential_name>' \
       --credential_type 'Source Control' \
       --organization <organization_id> \
       --inputs '<AAH_inputs>'
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <credential_name> – название полномочия для доступа к Astra Automation Hub, например, Astra Automation Hub;

    • <AAH_inputs> – данные для доступа к Astra Automation Hub, например, {"ssh_key_data": "@~/.ssh/hub.astra-automation.ru", "ssh_key_unlock": "****"}:

      • ssh_key_data – путь к файлу, в котором хранится приватный ключ для доступа к Astra Automation Hub;

      • ssh_key_unlock – пароль для защиты приватного ключа, который был установлен при его создании.

    Примечание

    С подробной информацией о создании ключа доступа можно ознакомиться в секции Доступ к реестрам Astra Automation Hub.

    Эта команда возвращает информацию о созданном полномочии:

    Пример ответа
    {
      "id": 5,
      "type": "credential",
      "url": "/api/v2/credentials/5/",
      "summary_fields": {
        "organization": {
          "id": 3,
          "name": "Jupiter",
          "description": ""
        },
        "credential_type": {
          "id": 2,
          "name": "Source Control",
          "description": ""
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "object_roles": {
          "admin_role": {
            "description": "Can manage all aspects of the credential",
            "name": "Admin",
            "id": 200
          },
          "use_role": {
            "description": "Can use the credential in a job template",
            "name": "Use",
            "id": 201
          },
          "read_role": {
            "description": "May view settings for the credential",
            "name": "Read",
            "id": 202
          }
        },
        "user_capabilities": {
          "edit": true,
          "delete": true,
          "copy": true,
          "use": true
        },
        "owners": [
          {
            "id": 3,
            "type": "organization",
            "name": "Jupiter",
            "description": "",
            "url": "/api/v2/organizations/3/"
          }
        ]
      },
      "created": "2024-06-17T15:33:12.168817Z",
      "modified": "2024-06-17T15:33:12.168837Z",
      "name": "Astra Automation Hub",
      "description": "",
      "organization": 3,
      "credential_type": 2,
      "managed": false,
      "inputs": {
        "ssh_key_data": "$encrypted$",
        "ssh_key_unlock": "$encrypted$"
      },
      "kind": "scm",
      "cloud": false,
      "kubernetes": false
    }
    
  2. Создайте проект с помощью команды awx projects create:

    awx projects create \
       --wait \
       --organization <organization_id> \
       --name='<your_project_name>' \
       --scm_type git \
       --scm_url 'ssh://git@hub.astra-automation.ru:2222/aa-gca/AA/aac-samples.git' \
       --credential <credential_id>
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <organization_id> – идентификатор организации, созданной ранее, например, 3;

    • <your_project_name> – название проекта, например, Demo NGINX Project;

    • <credential_id> – идентификатор полномочия для доступа к Astra Automation Hub, например, 5.

    Примечание

    В качестве источника при создании проекта используется репозиторий с примерами с Astra Automation Hub.

    Эта команда возвращает информацию о созданном проекте:

    Пример ответа
    {
      "id": 18,
      "type": "project",
      "url": "/api/v2/projects/18/",
      "summary_fields": {
        "organization": {
          "id": 3,
          "name": "Jupiter",
          "description": ""
        },
        "credential": {
          "id": 4,
          "name": "Astra Automation Hub",
          "description": "",
          "kind": "scm",
          "cloud": false,
          "kubernetes": false,
          "credential_type_id": 2
        },
        "current_update": {
          "id": 53,
          "name": "Demo NGINX Project",
          "description": "",
          "status": "pending",
          "failed": false
        },
        "current_job": {
          "id": 53,
          "name": "Demo NGINX Project",
          "description": "",
          "status": "pending",
          "failed": false
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "object_roles": {
          "admin_role": {
            "description": "Can manage all aspects of the project",
            "name": "Admin",
            "id": 143
          },
          "use_role": {
            "description": "Can use the project in a job template",
            "name": "Use",
            "id": 144
          },
          "update_role": {
            "description": "May update the project",
            "name": "Update",
            "id": 145
          },
          "read_role": {
            "description": "May view settings for the project",
            "name": "Read",
            "id": 146
          }
        },
        "user_capabilities": {
          "edit": true,
          "delete": true,
          "start": true,
          "schedule": true,
          "copy": true
        }
      },
      "created": "2024-06-09T21:03:24.140327Z",
      "modified": "2024-06-09T21:03:24.140351Z",
      "name": "Demo NGINX Project",
      "description": "",
      "local_path": "_18__demo_nginx_project",
      "scm_type": "git",
      "scm_url": "ssh://git@hub.astra-automation.ru:2222/aa-gca/AA/aac-samples.git",
      "scm_branch": "",
      "scm_refspec": "",
      "scm_clean": false,
      "scm_track_submodules": false,
      "scm_delete_on_update": false,
      "credential": 4,
      "timeout": 0,
      "scm_revision": "",
      "last_job_run": null,
      "last_job_failed": false,
      "next_job_run": null,
      "status": "pending",
      "organization": 3,
      "scm_update_on_launch": false,
      "scm_update_cache_timeout": 0,
      "allow_override": false,
      "custom_virtualenv": null,
      "default_environment": null,
      "signature_validation_credential": null,
      "last_update_failed": false,
      "last_updated": null
    }
    

Подготовка задания#

Для подготовки задания выполните следующие действия:

  1. Создайте шаблон задания для установки NGINX с помощью команды awx job_templates create:

    awx job_templates create \
       --name='<job_templates_name>' \
       --project '<your_project_name>' \
       --playbook nginx/site.yml \
       --inventory '<your_inventory_id>'
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <job_templates_name> – название шаблона задания, например, NGINX Deployment;

    • <your_inventory_id> – идентификатор инвентаря, созданного ранее, например, 3.

    Эта команда возвращает информацию о созданном шаблоне задания в формате:

    Пример ответа
    {
      "id": 19,
      "type": "job_template",
      "url": "/api/v2/job_templates/19/",
      "summary_fields": {
        "organization": {
          "id": 3,
          "name": "Jupiter",
          "description": ""
        },
        "inventory": {
          "id": 3,
          "name": "Demo Inventory",
          "description": "",
          "has_active_failures": false,
          "total_hosts": 1,
          "hosts_with_active_failures": 0,
          "total_groups": 0,
          "has_inventory_sources": false,
          "total_inventory_sources": 0,
          "inventory_sources_with_failures": 0,
          "organization_id": 3,
          "kind": ""
        },
        "project": {
          "id": 18,
          "name": "Demo NGINX Project",
          "description": "",
          "status": "successful",
          "scm_type": "git",
          "allow_override": false
        },
        "created_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "modified_by": {
          "id": 1,
          "username": "admin",
          "first_name": "",
          "last_name": ""
        },
        "object_roles": {
          "admin_role": {
            "description": "Can manage all aspects of the job template",
            "name": "Admin",
            "id": 147
          },
          "execute_role": {
            "description": "May run the job template",
            "name": "Execute",
            "id": 148
          },
          "read_role": {
            "description": "May view settings for the job template",
            "name": "Read",
            "id": 149
          }
        },
        "user_capabilities": {
          "edit": true,
          "delete": true,
          "start": true,
          "schedule": true,
          "copy": true
        },
        "labels": {
          "count": 0,
          "results": []
        },
        "recent_jobs": [],
        "credentials": []
      },
      "created": "2024-06-09T21:06:16.520636Z",
      "modified": "2024-06-09T21:06:16.520659Z",
      "name": "NGINX Deployment",
      "description": "",
      "job_type": "run",
      "inventory": 3,
      "project": 18,
      "playbook": "nginx/site.yml",
      "scm_branch": "",
      "forks": 0,
      "limit": "",
      "verbosity": 0,
      "extra_vars": "",
      "job_tags": "",
      "force_handlers": false,
      "skip_tags": "",
      "start_at_task": "",
      "timeout": 0,
      "use_fact_cache": false,
      "organization": 3,
      "last_job_run": null,
      "last_job_failed": false,
      "next_job_run": null,
      "status": "never updated",
      "execution_environment": null,
      "host_config_key": "",
      "ask_scm_branch_on_launch": false,
      "ask_diff_mode_on_launch": false,
      "ask_variables_on_launch": false,
      "ask_limit_on_launch": false,
      "ask_tags_on_launch": false,
      "ask_skip_tags_on_launch": false,
      "ask_job_type_on_launch": false,
      "ask_verbosity_on_launch": false,
      "ask_inventory_on_launch": false,
      "ask_credential_on_launch": false,
      "ask_execution_environment_on_launch": false,
      "ask_labels_on_launch": false,
      "ask_forks_on_launch": false,
      "ask_job_slice_count_on_launch": false,
      "ask_timeout_on_launch": false,
      "ask_instance_groups_on_launch": false,
      "survey_enabled": false,
      "become_enabled": false,
      "diff_mode": false,
      "allow_simultaneous": false,
      "custom_virtualenv": null,
      "job_slice_count": 1,
      "webhook_service": "",
      "webhook_credential": null,
      "prevent_instance_group_fallback": false
    }
    
  2. Свяжите шаблон задания с полномочием для доступа к управляемому узлу с помощью команды awx job_templates associate:

    awx job_templates associate \
       --id <job_template_id> \
       --credential <credential_id>
    

    Подставьте собственные значения параметров вместо употребленных в примере:

    • <job_template_id> – идентификатор созданного ранее шаблона задания, например, 19;

    • <credential_id> – идентификатор полномочия для доступа к управляемому узлу, например, 4.

    Эта команда возвращает информацию о добавленном полномочии:

    Пример ответа
    {
      "count": 1,
      "next": null,
      "previous": null,
      "results": [
        {
          "id": 1,
          "type": "credential",
          "url": "/api/v2/credentials/1/",
          "related": {
            "created_by": "/api/v2/users/1/",
            "modified_by": "/api/v2/users/1/",
            "activity_stream": "/api/v2/credentials/1/activity_stream/",
            "access_list": "/api/v2/credentials/1/access_list/",
            "object_roles": "/api/v2/credentials/1/object_roles/",
            "owner_users": "/api/v2/credentials/1/owner_users/",
            "owner_teams": "/api/v2/credentials/1/owner_teams/",
            "copy": "/api/v2/credentials/1/copy/",
            "input_sources": "/api/v2/credentials/1/input_sources/",
            "credential_type": "/api/v2/credential_types/1/",
            "user": "/api/v2/users/1/"
          },
          "summary_fields": {
            "credential_type": {
              "id": 1,
              "name": "Machine",
              "description": ""
            },
            "created_by": {
              "id": 1,
              "username": "admin",
              "first_name": "",
              "last_name": ""
            },
            "modified_by": {
              "id": 1,
              "username": "admin",
              "first_name": "",
              "last_name": ""
            },
            "object_roles": {
              "admin_role": {
                "description": "Can manage all aspects of the credential",
                "name": "Admin",
                "id": 26
              },
              "use_role": {
                "description": "Can use the credential in a job template",
                "name": "Use",
                "id": 27
              },
              "read_role": {
                "description": "May view settings for the credential",
                "name": "Read",
                "id": 28
              }
            },
            "user_capabilities": {
              "edit": true,
              "delete": true,
              "copy": true,
              "use": true
            },
            "owners": [
              {
                "id": 1,
                "type": "user",
                "name": "admin",
                "description": " ",
                "url": "/api/v2/users/1/"
              }
            ]
          },
          "created": "2024-02-16T00:06:02.881275Z",
          "modified": "2024-02-16T00:06:02.881304Z",
          "name": "Demo Credential",
          "description": "",
          "organization": null,
          "credential_type": 1,
          "managed": false,
          "inputs": {
            "username": "admin"
          },
          "kind": "ssh",
          "cloud": false,
          "kubernetes": false
        }
      ]
    }
    

Запуск задания и проверка его статуса#

Для запуска и проверки статуса задания воспользуйтесь командой awx job_templates launch:

awx job_templates launch '<job_templates_name>' --monitor -f human

Эта команда возвращает информацию о запущенном шаблоне задания:

Пример ответа
------Starting Standard Out Stream------
SSH password:

PLAY [Install NGINX server] ****************************************************

TASK [Gathering Facts] *********************************************************
[WARNING]: Platform linux on host node01 is using the discovered Python
interpreter at /usr/bin/python3.9, but future installation of another Python
interpreter could change the meaning of that path. See
https://docs.ansible.com/ansible-
core/2.13/reference_appendices/interpreter_discovery.html for more information.
ok: [node01]

TASK [astra.nginx.nginx : Install required nginx version.] *********************
ok: [node01]

TASK [astra.nginx.nginx : Install modules] *************************************

TASK [astra.nginx.nginx : Remove default nginx vhost config file (if configured).] ***
skipping: [node01]

TASK [astra.nginx.nginx : Ensure nginx_ssl_conf_path exists.] ******************
ok: [node01]

TASK [astra.nginx.nginx : Add ssl config file.] ********************************

TASK [astra.nginx.nginx : Remove ssl config file.] *****************************

TASK [astra.nginx.nginx : Add managed vhost config files.] *********************

TASK [astra.nginx.nginx : Remove managed vhost config files.] ******************

TASK [astra.nginx.nginx : Copy nginx configuration in place.] ******************
ok: [node01]

TASK [astra.nginx.nginx : Ensure nginx_service_config_path exists.] ************
ok: [node01]

TASK [astra.nginx.nginx : Copy nginx service config in place.] *****************
skipping: [node01]

TASK [astra.nginx.nginx : Add nginx snippets] **********************************

TASK [astra.nginx.nginx : Copy styled error pages] *****************************
ok: [node01] => (item=403.html)
ok: [node01] => (item=404.html)
ok: [node01] => (item=500.html)
ok: [node01] => (item=underconstruction.html)

TASK [astra.nginx.nginx : Ensure nginx service is running as configured.] ******
ok: [node01]

TASK [Create index.html] *******************************************************
ok: [node01]

PLAY RECAP *********************************************************************
node01                     : ok=8    changed=0    unreachable=0    failed=0    skipped=8    rescued=0    ignored=0
------End of Standard Out Stream--------

id name
== ===================
68 Nginx Job Template4

Если в поле failed указано значение 0, значит задание завершилось успешно.