From dc0a5fd51092af2d491d076c80e6820d2e61d0ad Mon Sep 17 00:00:00 2001 From: John Best Date: Tue, 1 Sep 2026 09:06:03 -0500 Subject: [PATCH 1/6] fix(v2): standardise managed-by label across roles Replace hardcoded app.kubernetes.io/managed-by values with a configurable role variable defaulting to ansible-migration-factory. - mtv_provider: add mtv_provider_managed_by_label variable, use it in provider.yml.j2 and provider_secret.yml.j2 templates - utility_openshift_target_credential: change default from "ansible" to "ansible-migration-factory" for consistency Co-authored-by: Cursor --- .gitignore | 1 + roles/mtv_provider/defaults/main.yml | 3 +++ roles/mtv_provider/templates/provider.yml.j2 | 2 +- roles/mtv_provider/templates/provider_secret.yml.j2 | 2 +- roles/utility_openshift_target_credential/defaults/main.yml | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 852b188..8560616 100644 --- a/.gitignore +++ b/.gitignore @@ -201,3 +201,4 @@ ansible-navigator.yml # Secrets and certificates *.pem *.key +.cursor/ diff --git a/roles/mtv_provider/defaults/main.yml b/roles/mtv_provider/defaults/main.yml index f603f83..3d76ccf 100644 --- a/roles/mtv_provider/defaults/main.yml +++ b/roles/mtv_provider/defaults/main.yml @@ -45,4 +45,7 @@ mtv_provider_source_sdk_endpoint: >- {{ hostvars[source_name]['sdk_endpoint'] | default('/sdk') }} mtv_provider_source_vddk: "{{ hostvars[source_name]['vddk'] | default({}) }}" + +# Value of the app.kubernetes.io/managed-by label applied to CRs. +mtv_provider_managed_by_label: ansible-migration-factory ... diff --git a/roles/mtv_provider/templates/provider.yml.j2 b/roles/mtv_provider/templates/provider.yml.j2 index 8bbda29..2d45d86 100644 --- a/roles/mtv_provider/templates/provider.yml.j2 +++ b/roles/mtv_provider/templates/provider.yml.j2 @@ -4,7 +4,7 @@ metadata: name: {{ _mtv_provider_provider_name | to_json }} namespace: {{ mtv_provider_provider_namespace | to_json }} labels: - app.kubernetes.io/managed-by: ansible-migration-factory + app.kubernetes.io/managed-by: {{ mtv_provider_managed_by_label }} spec: type: {{ _mtv_provider_forklift_type | to_json }} url: {{ _mtv_provider_source_url | to_json }} diff --git a/roles/mtv_provider/templates/provider_secret.yml.j2 b/roles/mtv_provider/templates/provider_secret.yml.j2 index 589e27c..1f350d8 100644 --- a/roles/mtv_provider/templates/provider_secret.yml.j2 +++ b/roles/mtv_provider/templates/provider_secret.yml.j2 @@ -6,7 +6,7 @@ metadata: labels: createdForProviderType: {{ _mtv_provider_forklift_type }} createdForResourceType: providers - app.kubernetes.io/managed-by: ansible-migration-factory + app.kubernetes.io/managed-by: {{ mtv_provider_managed_by_label }} type: Opaque stringData: user: {{ mf_source_username | to_json }} diff --git a/roles/utility_openshift_target_credential/defaults/main.yml b/roles/utility_openshift_target_credential/defaults/main.yml index 79cf1d5..36f983e 100644 --- a/roles/utility_openshift_target_credential/defaults/main.yml +++ b/roles/utility_openshift_target_credential/defaults/main.yml @@ -45,7 +45,7 @@ utility_openshift_target_credential_cluster_role: "cluster-admin" # title: Managed By Label # required: False # description: Value of the app.kubernetes.io/managed-by label applied to resources. -utility_openshift_target_credential_managed_by_label: "ansible" +utility_openshift_target_credential_managed_by_label: "ansible-migration-factory" # title: Secure Logging # required: False From 49172600b75f7105b698b1847d1161d2cc4ba3ef Mon Sep 17 00:00:00 2001 From: John Best Date: Wed, 2 Sep 2026 11:48:13 -0500 Subject: [PATCH 2/6] docs(v2): regenerate utility_openshift_target_credential README Update docsible-generated README to reflect the managed-by label default change from "ansible" to "ansible-migration-factory". Co-authored-by: Cursor --- .../README.md | 306 ++++++++++-------- 1 file changed, 171 insertions(+), 135 deletions(-) diff --git a/roles/utility_openshift_target_credential/README.md b/roles/utility_openshift_target_credential/README.md index edafc18..73f3acd 100644 --- a/roles/utility_openshift_target_credential/README.md +++ b/roles/utility_openshift_target_credential/README.md @@ -1,177 +1,213 @@ - + + # 📃 Role overview - - - ## utility_openshift_target_credential -``` -Role belongs to infra/openshift_virtualization_migration -Namespace - infra -Collection - openshift_virtualization_migration -Version - 1.25.0 -Repository - https://github.com/redhat-cop/openshift_virtualization_migration -``` + Description: A utility role to manage OpenShift target cluster credentials for migration -### Argument Specifications +| Field | Value | +|--------------------- |-----------------| +| Readme update | 2026/09/02 | + + +
-🧩 Argument Specifications in `meta/argument_specs` +🧩 Argument Specifications in meta/argument_specs #### Key: main -* **Description**: Creates a long lived Service Account token in OpenShift for use by Ansible Automation Platform. -* **Options**: - * **utility_openshift_target_credential_cluster_role**: - * **Required**: False - * **Type**: str - * **Default**: cluster-admin - * **Description**: Cluster Role applied to the generated OpenShift Service Account. - * **utility_openshift_target_credential_display_credential**: - * **Required**: False - * **Type**: bool - * **Default**: False - * **Description**: Whether to display the credential. - * **utility_openshift_target_credential_managed_by_label**: - * **Required**: False - * **Type**: str - * **Default**: ansible - * **Description**: Value of the app.kubernetes.io/managed-by label applied to resources. - * **utility_openshift_target_credential_openshift_api_key**: - * **Required**: True - * **Type**: str - * **Default**: none - * **Description**: OpenShift API key. - * **utility_openshift_target_credential_openshift_ca_cert_path**: - * **Required**: False - * **Type**: str - * **Default**: none - * **Description**: Path to the OpenShift CA Certificate. - * **utility_openshift_target_credential_openshift_host**: - * **Required**: True - * **Type**: str - * **Default**: none - * **Description**: OpenShift host. - * **utility_openshift_target_credential_openshift_verify_ssl**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Whether to verify SSL certificates. - * **utility_openshift_target_credential_resource_name**: - * **Required**: False - * **Type**: str - * **Default**: migration-factory-aap-credential - * **Description**: Name applied to the OpenShift target credential resource. - * **utility_openshift_target_credential_resource_namespace**: - * **Required**: False - * **Type**: str - * **Default**: openshift-config - * **Description**: Namespace applied to the OpenShift target credential resource. - * **utility_openshift_target_credential_secure_logging**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Whether to enable secure logging. +**Description**: + + +**Options**: + + + - **utility_openshift_target_credential_openshift_host** + - **Required**: True + - **Type**: str + - **Default**: none + + - **Description**: OpenShift host. + + + + + - **utility_openshift_target_credential_openshift_api_key** + - **Required**: True + - **Type**: str + - **Default**: none + + - **Description**: OpenShift API key. + + + + + - **utility_openshift_target_credential_openshift_ca_cert_path** + - **Required**: False + - **Type**: str + - **Default**: none + + - **Description**: Path to the OpenShift CA Certificate. + + + + + - **utility_openshift_target_credential_openshift_verify_ssl** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Whether to verify SSL certificates. + + + + + - **utility_openshift_target_credential_resource_name** + - **Required**: False + - **Type**: str + - **Default**: migration-factory-aap-credential + + - **Description**: Name applied to the OpenShift target credential resource. + + + + + - **utility_openshift_target_credential_resource_namespace** + - **Required**: False + - **Type**: str + - **Default**: openshift-config + + - **Description**: Namespace applied to the OpenShift target credential resource. + + + + + - **utility_openshift_target_credential_cluster_role** + - **Required**: False + - **Type**: str + - **Default**: cluster-admin + + - **Description**: Cluster Role applied to the generated OpenShift Service Account. + + + + + - **utility_openshift_target_credential_managed_by_label** + - **Required**: False + - **Type**: str + - **Default**: ansible + + - **Description**: Value of the app.kubernetes.io/managed-by label applied to resources. + + + + + - **utility_openshift_target_credential_secure_logging** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Whether to enable secure logging. + + + + + - **utility_openshift_target_credential_display_credential** + - **Required**: False + - **Type**: bool + - **Default**: False + + - **Description**: Whether to display the credential. + + + + +
+ + + ### Defaults **These are static variables with lower priority** #### File: defaults/main.yml -| Var | Type | Value |Choices |Required | Title | -|--------------|--------------|-------------|-------------|-------------|-------------| -| [`utility_openshift_target_credential_cluster_role`](defaults/main.yml#L43) | str | `cluster-admin` | None | False | Cluster Role applied to the generated OpenShift Service Account | -| [`utility_openshift_target_credential_display_credential`](defaults/main.yml#L58) | bool | `False` | None | False | Display Credential | -| [`utility_openshift_target_credential_managed_by_label`](defaults/main.yml#L48) | str | `ansible` | None | False | Managed By Label | -| [`utility_openshift_target_credential_openshift_api_key`](defaults/main.yml#L12) | str | `` | None | True | OpenShift API Key | -| [`utility_openshift_target_credential_openshift_ca_cert_path`](defaults/main.yml#L23) | str | `{{ openshift_ca_cert_path ¦ default(omit) }}` | None | False | OpenShift CA Certificate Path | -| [`utility_openshift_target_credential_openshift_host`](defaults/main.yml#L7) | str | `{{ openshift_host }}` | None | True | OpenShift Host | -| [`utility_openshift_target_credential_openshift_verify_ssl`](defaults/main.yml#L28) | str | `{{ openshift_verify_ssl ¦ default(true) }}` | None | False | OpenShift Verify SSL | -| [`utility_openshift_target_credential_resource_name`](defaults/main.yml#L33) | str | `migration-factory-aap-credential` | None | False | Name applied to the OpenShift target credential resource | -| [`utility_openshift_target_credential_resource_namespace`](defaults/main.yml#L38) | str | `openshift-config` | None | False | Namespace applied to the OpenShift target credential resource | -| [`utility_openshift_target_credential_secure_logging`](defaults/main.yml#L53) | str | `{{ secure_logging ¦ default(true) }}` | None | False | Secure Logging | - +| Var | Type | Value |Required | Title | +|--------------|--------------|-------------|------------|-------------| +| [utility_openshift_target_credential_openshift_host](defaults/main.yml#L7) | str | `{{ openshift_host }}` | True | OpenShift Host | +| [utility_openshift_target_credential_openshift_api_key](defaults/main.yml#L12) | str | `` | True | OpenShift API Key | +| [utility_openshift_target_credential_openshift_ca_cert_path](defaults/main.yml#L23) | str | `{{ openshift_ca_cert_path ¦ default(omit) }}` | False | OpenShift CA Certificate Path | +| [utility_openshift_target_credential_openshift_verify_ssl](defaults/main.yml#L28) | str | `{{ openshift_verify_ssl ¦ default(true) }}` | False | OpenShift Verify SSL | +| [utility_openshift_target_credential_resource_name](defaults/main.yml#L33) | str | `migration-factory-aap-credential` | False | Name applied to the OpenShift target credential resource | +| [utility_openshift_target_credential_resource_namespace](defaults/main.yml#L38) | str | `openshift-config` | False | Namespace applied to the OpenShift target credential resource | +| [utility_openshift_target_credential_cluster_role](defaults/main.yml#L43) | str | `cluster-admin` | False | Cluster Role applied to the generated OpenShift Service Account | +| [utility_openshift_target_credential_managed_by_label](defaults/main.yml#L48) | str | `ansible-migration-factory` | False | Managed By Label | +| [utility_openshift_target_credential_secure_logging](defaults/main.yml#L53) | str | `{{ secure_logging ¦ default(true) }}` | False | Secure Logging | +| [utility_openshift_target_credential_display_credential](defaults/main.yml#L58) | bool | `False` | False | Display Credential | +
🖇️ Full descriptions for vars in defaults/main.yml
-`utility_openshift_target_credential_cluster_role`: Cluster Role applied to the generated OpenShift Service Account. -
-`utility_openshift_target_credential_display_credential`: Whether to display the credential. -
-`utility_openshift_target_credential_managed_by_label`: Value of the app.kubernetes.io/managed-by label applied to resources. -
-`utility_openshift_target_credential_openshift_api_key`: OpenShift API key. -
-`utility_openshift_target_credential_openshift_ca_cert_path`: Path to the OpenShift CA Certificate. -
-`utility_openshift_target_credential_openshift_host`: OpenShift host. -
-`utility_openshift_target_credential_openshift_verify_ssl`: Whether to verify SSL certificates. -
-`utility_openshift_target_credential_resource_name`: Name applied to the OpenShift target credential resource. -
-`utility_openshift_target_credential_resource_namespace`: Namespace applied to the OpenShift target credential resource. -
-`utility_openshift_target_credential_secure_logging`: Whether to enable secure logging. -
+ + + + + + + + + + + + +
VarDescription
utility_openshift_target_credential_openshift_hostOpenShift host.
utility_openshift_target_credential_openshift_api_keyOpenShift API key.
utility_openshift_target_credential_openshift_ca_cert_pathPath to the OpenShift CA Certificate.
utility_openshift_target_credential_openshift_verify_sslWhether to verify SSL certificates.
utility_openshift_target_credential_resource_nameName applied to the OpenShift target credential resource.
utility_openshift_target_credential_resource_namespaceNamespace applied to the OpenShift target credential resource.
utility_openshift_target_credential_cluster_roleCluster Role applied to the generated OpenShift Service Account.
utility_openshift_target_credential_managed_by_labelValue of the app.kubernetes.io/managed-by label applied to resources.
utility_openshift_target_credential_secure_loggingWhether to enable secure logging.
utility_openshift_target_credential_display_credentialWhether to display the credential.

+
+ + + + ### Tasks + #### File: tasks/main.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| Create OpenShift target credential resources | `redhat.openshift.k8s` | False | -| Display credential | `block` | True | -| Wait for credential token to be populated | `kubernetes.core.k8s_info` | False | -| Display credential token which can be used to authenticate to the target OpenShift cluster | `ansible.builtin.debug` | False | - -## Task Flow Graphs - -### Graph for main.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| Create_OpenShift_target_credential_resources0[create openshift target credential resources]:::task - Create_OpenShift_target_credential_resources0-->|Block Start| Display_credential1_block_start_0[[display credential
When: **utility openshift target credential display
credential bool**]]:::block - Display_credential1_block_start_0-->|Task| Wait_for_credential_token_to_be_populated0[wait for credential token to be populated]:::task - Wait_for_credential_token_to_be_populated0-->|Task| Display_credential_token_which_can_be_used_to_authenticate_to_the_target_OpenShift_cluster1[display credential token which can be used to
authenticate to the target openshift cluster]:::task - Display_credential_token_which_can_be_used_to_authenticate_to_the_target_OpenShift_cluster1-.->|End of Block| Display_credential1_block_start_0 - Display_credential_token_which_can_be_used_to_authenticate_to_the_target_OpenShift_cluster1-->End -``` +| ---- | ------ | -------------- | +| Create OpenShift target credential resources | redhat.openshift.k8s | False | +| Display credential | block | True | +| Wait for credential token to be populated | kubernetes.core.k8s_info | False | +| Display credential token which can be used to authenticate to the target OpenShift cluster | ansible.builtin.debug | False | + + + -## Author Information -OpenShift Virtualization Migration Contributors -## License + +## Author Information +Unknown Author + +#### License GPL-3.0-only -## Minimum Ansible Version +#### Minimum Ansible Version 2.15.0 -## Platforms +#### Platforms No platforms specified. - \ No newline at end of file +#### Dependencies + +No dependencies specified. + From 9584d63c12db58058a30f4b0fdb8621f2b29d5d8 Mon Sep 17 00:00:00 2001 From: John Best Date: Wed, 2 Sep 2026 11:52:12 -0500 Subject: [PATCH 3/6] style(v2): add docsible headings to aap_seed and mtv_provider defaults Add title, required, and description comment blocks above each variable in defaults/main.yml for both roles. Regenerate READMEs via docsible. Add .docsible to .gitignore. All roles now have standardised docsible headings: - aap_seed (41 variables) - mtv_provider (14 variables) - mtv_query_inventory (already done) - utility_aap_deploy (already done) - utility_openshift_target_credential (already done) Co-authored-by: Cursor --- .gitignore | 1 + roles/aap_seed/README.md | 1589 ++++++++++---------------- roles/aap_seed/defaults/main.yml | 177 ++- roles/mtv_provider/README.md | 483 ++++---- roles/mtv_provider/defaults/main.yml | 69 +- 5 files changed, 1066 insertions(+), 1253 deletions(-) diff --git a/.gitignore b/.gitignore index 8560616..35eae3b 100644 --- a/.gitignore +++ b/.gitignore @@ -202,3 +202,4 @@ ansible-navigator.yml *.pem *.key .cursor/ +.docsible diff --git a/roles/aap_seed/README.md b/roles/aap_seed/README.md index 21b609b..67cba70 100644 --- a/roles/aap_seed/README.md +++ b/roles/aap_seed/README.md @@ -1,1020 +1,687 @@ -# aap_seed - -Seeds Ansible Automation Platform with Migration Factory Configuration as Code content. - -The role dynamically builds all AAP objects from the Ansible inventory and role defaults at runtime: - -- **Credential types** -- custom type for source hypervisor environments -- **Credentials** -- one per source (vSphere/RHV), one per target (OpenShift bearer token), and optionally a Git credential for private repos -- **Inventory, hosts, groups** -- source and target hosts with non-sensitive metadata -- **Execution environments** -- optional custom EE definitions -- **Project** -- SCM-backed project synced from Git -- **Job templates** -- default migrate template - -Target cluster credentials use the built-in AAP credential type -"OpenShift or Kubernetes API Bearer Token". - -## Architecture - -All object shapes are defined in `defaults/main.yml` as `aap_seed_controller_*` -lists. During execution the role: - -1. Applies `_create` toggles to skip disabled categories -2. Validates inventory host variables -3. Renders credentials from Jinja2 templates in `templates/` -4. Builds hosts and groups by looping over inventory groups -5. Syncs the SCM project -6. Copies `aap_seed_controller_*` to `controller_*` (handoff) -7. Calls `infra.aap_configuration.dispatch` - -Users can override any object list by redefining the corresponding -`aap_seed_controller_*` variable, or disable an entire category with its -`_create` toggle. - -## Requirements - -- `infra.aap_configuration` collection (>= 4.x) -- `ansible.controller` collection - -## Role Variables - -### AAP Connection - -Set these in your inventory under the `migration_aap` host. The role cascades -from generic `aap_*` variables so they can be shared with other roles. - -| Inventory Variable | Role Variable | Type | Description | -|--------------------|---------------|------|-------------| -| `aap_hostname` | `aap_seed_hostname` | str | FQDN or URL of the AAP controller API endpoint | -| `aap_username` | `aap_seed_username` | str | Username for AAP authentication (mutually exclusive with token) | -| `aap_password` | `aap_seed_password` | str | Password for AAP authentication (mutually exclusive with token) | -| `aap_token` | `aap_seed_token` | str | OAuth token for AAP authentication | -| `aap_validate_certs` | `aap_seed_validate_certs` | bool | Validate TLS certificates (default: `true`) | -| — | `aap_seed_secure_logging` | bool | Suppress credential loop output (default: `true`; set to `false` for debugging) | - -### AAP Content Configuration - -| Variable | Default | Description | -|----------|---------|-------------| -| `aap_seed_org_name` | `Default` | AAP organization for all objects | -| `aap_seed_project_name` | `OpenShift Virtualization Migration` | SCM project name | -| `aap_seed_project_scm_url` | cascades from `aap_project_scm_url` | Git URL | -| `aap_seed_project_scm_branch` | cascades from `aap_project_scm_branch` | Git branch or tag | -| `aap_seed_project_sync_timeout` | `120` | SCM sync timeout in seconds | -| `aap_seed_project_credential` | cascades from `aap_project_credential` | Name of the Git credential to create and attach to the project (leave empty to skip) | -| `aap_seed_inventory_name` | `OpenShift Virtualization Migration` | AAP inventory name | -| `aap_seed_execution_environment` | `Default execution environment` | Execution environment for job templates | -| `aap_seed_migrate_template_name` | `OpenShift Virtualization Migration - Migrate` | Name of the default job template | -| `aap_seed_migrate_playbook` | `playbooks/vmf_migrate.yml` | Playbook path for the default job template | - -### Git Credential (optional) - -When `aap_project_credential` (or `aap_seed_project_credential`) is set, the -role creates a Source Control credential in AAP. Provide either -username/password or an SSH key in the inventory. - -| Inventory Variable | Role Variable | Default | Description | -|--------------------|---------------|---------|-------------| -| `aap_git_username` | `aap_seed_git_username` | `""` | Git username for HTTPS authentication | -| `aap_git_password` | `aap_seed_git_password` | `""` | Git password or personal access token | -| `aap_git_ssh_key` | `aap_seed_git_ssh_key` | `""` | SSH private key for Git authentication | -| `aap_git_ssh_key_unlock` | `aap_seed_git_ssh_key_unlock` | `""` | Passphrase to unlock the SSH key | - -### Credential and Inventory Group Names - -| Variable | Default | Description | -|----------|---------|-------------| -| `aap_seed_source_credential_type` | `Migration Factory - Source Environment` | Custom credential type for sources | -| `aap_seed_target_credential_type` | `OpenShift or Kubernetes API Bearer Token` | Credential type for targets (built-in) | -| `aap_seed_source_inventory_group` | `vm_sources` | Inventory group containing source hosts | -| `aap_seed_target_inventory_group` | `migration_clusters` | Inventory group containing target hosts | - -### Create Toggles - -Set any toggle to `false` to skip that object category entirely. - -| Variable | Default | Description | -|----------|---------|-------------| -| `aap_seed_organizations_create` | `true` | Create organizations (only when list is non-empty) | -| `aap_seed_credential_types_create` | `true` | Create custom source credential type | -| `aap_seed_credentials_create` | `true` | Build and push all credentials | -| `aap_seed_inventories_create` | `true` | Create the AAP inventory | -| `aap_seed_hosts_create` | `true` | Build and push inventory hosts and groups | -| `aap_seed_execution_environments_create` | `true` | Create execution environments (only when list is non-empty) | -| `aap_seed_projects_create` | `true` | Create and sync the SCM project | -| `aap_seed_templates_create` | `true` | Create job templates | - -### Overridable Object Lists - -Override these to completely replace the role's default object definitions. - -| Variable | Description | -|----------|-------------| -| `aap_seed_controller_organizations` | Organization definitions (default: `[]`) | -| `aap_seed_controller_credential_types` | Custom credential type definitions | -| `aap_seed_controller_execution_environments` | Execution environment definitions (default: `[]`) | -| `aap_seed_controller_inventories` | AAP inventory definitions | -| `aap_seed_controller_projects` | AAP project definitions | -| `aap_seed_controller_templates` | AAP job template definitions | - -## Inventory Host Variables - -### Source hosts (`vm_sources` group) - -```yaml -vcenter-prod: - type: vmware # vmware or ovirt - host: vcenter.example.com - sdk_endpoint: /sdk - username: administrator@vsphere.local - password: changeme # use ansible-vault - # insecure_skip_tls_verify: true # default: false -``` - -### Target hosts (`migration_clusters` group) - -Provide one of `openshift_api_key` (permanent) or `openshift_temporary_api_key` (short-lived): - -```yaml -ocp-prod: - openshift_host: https://api.ocp-prod.example.com:6443 - openshift_api_key: sha256~XXXXXXXXXXX - # openshift_verify_ssl: false # default: true - vm_sources: - - vcenter-prod - aap_hosts: - - aap-instance - mtv_namespace: openshift-mtv - default_target_namespace: vm-workloads - configure_mtv: true -``` - -## Example Playbook - -```yaml ---- -- name: Seed AAP with Migration Factory content - hosts: migration_aap - connection: local - gather_facts: false - - tasks: - - name: Sync project and push CaC objects to AAP - ansible.builtin.import_role: - name: aap_seed -``` - -### Add a custom execution environment - -```yaml -aap_seed_controller_execution_environments: - - name: Migration Factory EE - image: quay.io/org/migration-factory-ee:latest -``` - -### Skip specific object types - -```yaml -- name: Only push credentials (no project, templates, or inventory) - hosts: migration_aap - connection: local - gather_facts: false - - tasks: - - name: Push credentials only - ansible.builtin.import_role: - name: aap_seed - vars: - aap_seed_projects_create: false - aap_seed_templates_create: false - aap_seed_inventories_create: false - aap_seed_hosts_create: false -``` + +# 📃 Role overview + ## aap_seed -``` -Role belongs to infra/openshift_virtualization_migration -Namespace - infra -Collection - openshift_virtualization_migration -Version - 1.25.0 -Repository - https://github.com/redhat-cop/openshift_virtualization_migration -``` + Description: Seed AAP with Migration Factory Configuration as Code content -### Argument Specifications +| Field | Value | +|--------------------- |-----------------| +| Readme update | 2026/09/02 | + + +
-🧩 Argument Specifications in `meta/argument_specs` +🧩 Argument Specifications in meta/argument_specs #### Key: main -* **Description**: ['Dynamically builds all AAP Configuration as Code objects from the Ansible inventory and role defaults, syncs the SCM project, and pushes everything to AAP via infra.aap_configuration.dispatch.', 'Object types managed include credential types, credentials, inventories, hosts, groups, projects, job templates, execution environments, and organizations.', 'Target cluster credentials use the built-in AAP credential type "OpenShift or Kubernetes API Bearer Token".', 'Each object type can be skipped with a C(_create) toggle or replaced entirely by overriding the corresponding C(aap_seed_controller_*) variable.'] -* **Options**: - * **aap_seed_controller_execution_environments**: - * **Required**: False - * **Type**: list - * **Default**: [] - * **Description**: List of AAP execution environment definitions. Empty by default; populate to create custom EEs. Each entry follows the C(infra.aap_configuration.controller_execution_environments) schema (name, image, etc.). - * **aap_seed_controller_inventories**: - * **Required**: False - * **Type**: list - * **Default**: none - * **Description**: List of AAP inventory definitions. Override to replace the default Migration Factory inventory. - * **aap_seed_controller_organizations**: - * **Required**: False - * **Type**: list - * **Default**: [] - * **Description**: List of AAP organization definitions. Empty by default; populate to create organizations before other objects. Each entry follows the C(infra.aap_configuration.gateway_organizations) schema. - * **aap_seed_controller_projects**: - * **Required**: False - * **Type**: list - * **Default**: none - * **Description**: List of AAP project definitions. Override to replace the default SCM project. - * **aap_seed_controller_templates**: - * **Required**: False - * **Type**: list - * **Default**: none - * **Description**: List of AAP job template definitions. Override to replace the default migrate template. - * **aap_seed_credential_types_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Create the custom source credential type in AAP. Set to C(false) to skip. - * **aap_seed_credentials_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Build and push credentials for source and target hosts. Set to C(false) to skip. - * **aap_seed_execution_environment**: - * **Required**: False - * **Type**: str - * **Default**: Default execution environment - * **Description**: Execution environment assigned to job templates. - * **aap_seed_execution_environments_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Create execution environments in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_execution_environments) is non-empty. - * **aap_seed_git_password**: - * **Required**: False - * **Type**: str - * **Default**: - * **Description**: Git password or personal access token. Defaults to C(aap_git_password) from inventory. - * **aap_seed_git_ssh_key**: - * **Required**: False - * **Type**: str - * **Default**: - * **Description**: SSH private key for Git authentication. Defaults to C(aap_git_ssh_key) from inventory. - * **aap_seed_git_ssh_key_unlock**: - * **Required**: False - * **Type**: str - * **Default**: - * **Description**: Passphrase to unlock the SSH key. Defaults to C(aap_git_ssh_key_unlock) from inventory. - * **aap_seed_git_username**: - * **Required**: False - * **Type**: str - * **Default**: - * **Description**: Git username for HTTPS authentication. Defaults to C(aap_git_username) from inventory. - * **aap_seed_hostname**: - * **Required**: False - * **Type**: str - * **Default**: none - * **Description**: FQDN or URL of the AAP controller API endpoint. Defaults to C(aap_hostname) from inventory. - * **aap_seed_hosts_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Build and push inventory hosts and groups from the Ansible inventory. Set to C(false) to skip. - * **aap_seed_inventories_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Create the AAP inventory. Set to C(false) to skip. - * **aap_seed_inventory_name**: - * **Required**: False - * **Type**: str - * **Default**: OpenShift Virtualization Migration - * **Description**: Name of the inventory created in AAP. Source and target hosts are added to this inventory. - * **aap_seed_mtv_provider_playbook**: - * **Required**: False - * **Type**: str - * **Default**: playbooks/vmf_mtv_provider.yml - * **Description**: Playbook path for the MTV Provider job template. - * **aap_seed_mtv_provider_template_name**: - * **Required**: False - * **Type**: str - * **Default**: OpenShift Virtualization Migration - MTV Provider - * **Description**: Name of the MTV Provider job template created in AAP. - * **aap_seed_org_name**: - * **Required**: False - * **Type**: str - * **Default**: Default - * **Description**: AAP organization that owns the project, inventory, and credentials. - * **aap_seed_organizations_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Create organizations in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_organizations) is non-empty. - * **aap_seed_password**: - * **Required**: False - * **Type**: str - * **Default**: none - * **Description**: Password for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_password) from inventory. - * **aap_seed_project_credential**: - * **Required**: False - * **Type**: str - * **Default**: - * **Description**: Name of the Git credential to create and attach to the SCM project. Leave empty to skip. Defaults to C(aap_project_credential) from inventory. - * **aap_seed_project_name**: - * **Required**: False - * **Type**: str - * **Default**: OpenShift Virtualization Migration - * **Description**: Name of the SCM-backed project created in AAP. - * **aap_seed_project_scm_branch**: - * **Required**: False - * **Type**: str - * **Default**: v2 - * **Description**: Git branch or tag to checkout for the project. Defaults to C(aap_project_scm_branch) from inventory. - * **aap_seed_project_scm_url**: - * **Required**: False - * **Type**: str - * **Default**: https://github.com/redhat-cop/openshift_virtualization_migration.git - * **Description**: Git URL used as the project SCM source. Defaults to C(aap_project_scm_url) from inventory. - * **aap_seed_project_sync_timeout**: - * **Required**: False - * **Type**: int - * **Default**: 120 - * **Description**: Maximum seconds to wait for the SCM project sync to complete. - * **aap_seed_projects_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Create and sync the SCM project. Set to C(false) to skip. - * **aap_seed_secure_logging**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Suppress task output for credential loops to prevent secrets from leaking to logs. Set to C(false) when debugging credential construction. - * **aap_seed_source_credential_type**: - * **Required**: False - * **Type**: str - * **Default**: Migration Factory - Source Environment - * **Description**: Name of the custom credential type created in AAP for source hypervisor environments (vSphere, RHV). - * **aap_seed_source_inventory_group**: - * **Required**: False - * **Type**: str - * **Default**: vm_sources - * **Description**: Ansible inventory group containing source hypervisor hosts. Each host in this group becomes an AAP inventory host and a source-environment credential. - * **aap_seed_target_credential_type**: - * **Required**: False - * **Type**: str - * **Default**: OpenShift or Kubernetes API Bearer Token - * **Description**: AAP credential type used for target OpenShift clusters. Defaults to the built-in bearer token type. Each target host should set I(openshift_api_key) or I(openshift_temporary_api_key). - * **aap_seed_target_inventory_group**: - * **Required**: False - * **Type**: str - * **Default**: migration_clusters - * **Description**: Ansible inventory group containing target OpenShift cluster hosts. Each host in this group becomes an AAP inventory host and a target-cluster credential. - * **aap_seed_templates_create**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Create job templates. Set to C(false) to skip. - * **aap_seed_token**: - * **Required**: False - * **Type**: str - * **Default**: none - * **Description**: OAuth token for AAP controller authentication. Mutually exclusive with I(aap_seed_username)/I(aap_seed_password). Defaults to C(aap_token) from inventory. - * **aap_seed_username**: - * **Required**: False - * **Type**: str - * **Default**: none - * **Description**: Username for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_username) from inventory. - * **aap_seed_validate_certs**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Whether to validate TLS certificates when connecting to AAP. Defaults to C(aap_validate_certs) from inventory, or C(true) if unset. +**Description**: +- Dynamically builds all AAP Configuration as Code objects from the Ansible inventory and role defaults, syncs the SCM project, and pushes everything to AAP via infra.aap_configuration.dispatch. +- Object types managed include credential types, credentials, inventories, hosts, groups, projects, job templates, execution environments, and organizations. +- Target cluster credentials use the built-in AAP credential type "OpenShift or Kubernetes API Bearer Token". +- Each object type can be skipped with a C(_create) toggle or replaced entirely by overriding the corresponding C(aap_seed_controller_*) variable. + + +**Options**: + + + - **aap_seed_hostname** + - **Required**: False + - **Type**: str + - **Default**: none + + - **Description**: FQDN or URL of the AAP controller API endpoint. Defaults to C(aap_hostname) from inventory. + + + + + - **aap_seed_username** + - **Required**: False + - **Type**: str + - **Default**: none + + - **Description**: Username for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_username) from inventory. + + + + + - **aap_seed_password** + - **Required**: False + - **Type**: str + - **Default**: none + + - **Description**: Password for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_password) from inventory. + + + + + - **aap_seed_token** + - **Required**: False + - **Type**: str + - **Default**: none + + - **Description**: OAuth token for AAP controller authentication. Mutually exclusive with I(aap_seed_username)/I(aap_seed_password). Defaults to C(aap_token) from inventory. + + + + + - **aap_seed_validate_certs** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Whether to validate TLS certificates when connecting to AAP. Defaults to C(aap_validate_certs) from inventory, or C(true) if unset. + + + + + - **aap_seed_secure_logging** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Suppress task output for credential loops to prevent secrets from leaking to logs. Set to C(false) when debugging credential construction. + + + + + - **aap_seed_org_name** + - **Required**: False + - **Type**: str + - **Default**: Default + + - **Description**: AAP organization that owns the project, inventory, and credentials. + + + + + - **aap_seed_project_name** + - **Required**: False + - **Type**: str + - **Default**: OpenShift Virtualization Migration + + - **Description**: Name of the SCM-backed project created in AAP. + + + + + - **aap_seed_project_scm_url** + - **Required**: False + - **Type**: str + - **Default**: https://github.com/redhat-cop/openshift_virtualization_migration.git + + - **Description**: Git URL used as the project SCM source. Defaults to C(aap_project_scm_url) from inventory. + + + + + - **aap_seed_project_scm_branch** + - **Required**: False + - **Type**: str + - **Default**: v2 + + - **Description**: Git branch or tag to checkout for the project. Defaults to C(aap_project_scm_branch) from inventory. + + + + + - **aap_seed_project_sync_timeout** + - **Required**: False + - **Type**: int + - **Default**: 120 + + - **Description**: Maximum seconds to wait for the SCM project sync to complete. + + + + + - **aap_seed_inventory_name** + - **Required**: False + - **Type**: str + - **Default**: OpenShift Virtualization Migration + + - **Description**: Name of the inventory created in AAP. Source and target hosts are added to this inventory. + + + + + - **aap_seed_execution_environment** + - **Required**: False + - **Type**: str + - **Default**: Default execution environment + + - **Description**: Execution environment assigned to job templates. + + + + + - **aap_seed_source_credential_type** + - **Required**: False + - **Type**: str + - **Default**: Migration Factory - Source Environment + + - **Description**: Name of the custom credential type created in AAP for source hypervisor environments (vSphere, RHV). + + + + + - **aap_seed_target_credential_type** + - **Required**: False + - **Type**: str + - **Default**: OpenShift or Kubernetes API Bearer Token + + - **Description**: AAP credential type used for target OpenShift clusters. Defaults to the built-in bearer token type. Each target host should set I(openshift_api_key) or I(openshift_temporary_api_key). + + + + + - **aap_seed_project_credential** + - **Required**: False + - **Type**: str + - **Default**: + + - **Description**: Name of the Git credential to create and attach to the SCM project. Leave empty to skip. Defaults to C(aap_project_credential) from inventory. + + + + + - **aap_seed_git_username** + - **Required**: False + - **Type**: str + - **Default**: + + - **Description**: Git username for HTTPS authentication. Defaults to C(aap_git_username) from inventory. + + + + + - **aap_seed_git_password** + - **Required**: False + - **Type**: str + - **Default**: + + - **Description**: Git password or personal access token. Defaults to C(aap_git_password) from inventory. + + + + + - **aap_seed_git_ssh_key** + - **Required**: False + - **Type**: str + - **Default**: + + - **Description**: SSH private key for Git authentication. Defaults to C(aap_git_ssh_key) from inventory. + + + + + - **aap_seed_git_ssh_key_unlock** + - **Required**: False + - **Type**: str + - **Default**: + + - **Description**: Passphrase to unlock the SSH key. Defaults to C(aap_git_ssh_key_unlock) from inventory. + + + + + - **aap_seed_mtv_provider_template_name** + - **Required**: False + - **Type**: str + - **Default**: OpenShift Virtualization Migration - MTV Provider + + - **Description**: Name of the MTV Provider job template created in AAP. + + + + + - **aap_seed_mtv_provider_playbook** + - **Required**: False + - **Type**: str + - **Default**: playbooks/vmf_mtv_provider.yml + + - **Description**: Playbook path for the MTV Provider job template. + + + + + - **aap_seed_source_inventory_group** + - **Required**: False + - **Type**: str + - **Default**: vm_sources + + - **Description**: Ansible inventory group containing source hypervisor hosts. Each host in this group becomes an AAP inventory host and a source-environment credential. + + + + + - **aap_seed_target_inventory_group** + - **Required**: False + - **Type**: str + - **Default**: migration_clusters + + - **Description**: Ansible inventory group containing target OpenShift cluster hosts. Each host in this group becomes an AAP inventory host and a target-cluster credential. + + + + + - **aap_seed_organizations_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Create organizations in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_organizations) is non-empty. + + + + + - **aap_seed_credential_types_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Create the custom source credential type in AAP. Set to C(false) to skip. + + + + + - **aap_seed_credentials_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Build and push credentials for source and target hosts. Set to C(false) to skip. + + + + + - **aap_seed_inventories_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Create the AAP inventory. Set to C(false) to skip. + + + + + - **aap_seed_hosts_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Build and push inventory hosts and groups from the Ansible inventory. Set to C(false) to skip. + + + + + - **aap_seed_projects_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Create and sync the SCM project. Set to C(false) to skip. + + + + + - **aap_seed_execution_environments_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Create execution environments in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_execution_environments) is non-empty. + + + + + - **aap_seed_templates_create** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Create job templates. Set to C(false) to skip. + + + + + - **aap_seed_controller_organizations** + - **Required**: False + - **Type**: list + - **Default**: [] + + - **Description**: List of AAP organization definitions. Empty by default; populate to create organizations before other objects. Each entry follows the C(infra.aap_configuration.gateway_organizations) schema. + + + + + - **aap_seed_controller_execution_environments** + - **Required**: False + - **Type**: list + - **Default**: [] + + - **Description**: List of AAP execution environment definitions. Empty by default; populate to create custom EEs. Each entry follows the C(infra.aap_configuration.controller_execution_environments) schema (name, image, etc.). + + + + + - **aap_seed_controller_inventories** + - **Required**: False + - **Type**: list + - **Default**: none + + - **Description**: List of AAP inventory definitions. Override to replace the default Migration Factory inventory. + + + + + - **aap_seed_controller_projects** + - **Required**: False + - **Type**: list + - **Default**: none + + - **Description**: List of AAP project definitions. Override to replace the default SCM project. + + + + + - **aap_seed_controller_templates** + - **Required**: False + - **Type**: list + - **Default**: none + + - **Description**: List of AAP job template definitions. Override to replace the default migrate template. + + + + +
+ + + ### Defaults **These are static variables with lower priority** #### File: defaults/main.yml -| Var | Type | Value |Choices |Required | Title | -|--------------|--------------|-------------|-------------|-------------|-------------| -| [`aap_seed_common_survey_spec`](defaults/main.yml#L43) | dict | `{}` | None | None | None | -| [`aap_seed_common_survey_spec.description`](defaults/main.yml#L45) | str | `` | None | None | None | -| [`aap_seed_common_survey_spec.name`](defaults/main.yml#L44) | str | `` | None | None | None | -| [`aap_seed_common_survey_spec.spec`](defaults/main.yml#L46) | list | `[]` | None | None | None | -| [`aap_seed_common_survey_spec.spec.0`](defaults/main.yml#L47) | dict | `{}` | None | None | None | -| [`aap_seed_common_survey_spec.spec.0.question_description`](defaults/main.yml#L48) | str | `` | None | None | None | -| [`aap_seed_common_survey_spec.spec.0.question_name`](defaults/main.yml#L47) | str | `Source Name` | None | None | None | -| [`aap_seed_common_survey_spec.spec.0.required`](defaults/main.yml#L54) | bool | `True` | None | None | None | -| [`aap_seed_common_survey_spec.spec.0.type`](defaults/main.yml#L53) | str | `text` | None | None | None | -| [`aap_seed_common_survey_spec.spec.0.variable`](defaults/main.yml#L52) | str | `source_name` | None | None | None | -| [`aap_seed_common_survey_spec.spec.1`](defaults/main.yml#L55) | dict | `{}` | None | None | None | -| [`aap_seed_common_survey_spec.spec.1.question_description`](defaults/main.yml#L56) | str | `` | None | None | None | -| [`aap_seed_common_survey_spec.spec.1.question_name`](defaults/main.yml#L55) | str | `Target Name` | None | None | None | -| [`aap_seed_common_survey_spec.spec.1.required`](defaults/main.yml#L62) | bool | `True` | None | None | None | -| [`aap_seed_common_survey_spec.spec.1.type`](defaults/main.yml#L61) | str | `text` | None | None | None | -| [`aap_seed_common_survey_spec.spec.1.variable`](defaults/main.yml#L60) | str | `target_name` | None | None | None | -| [`aap_seed_controller_credential_types`](defaults/main.yml#L86) | list | `[]` | None | None | None | -| [`aap_seed_controller_credential_types.0`](defaults/main.yml#L87) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors`](defaults/main.yml#L114) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors.extra_vars`](defaults/main.yml#L115) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_insecure_skip_tls_verify`](defaults/main.yml#L120) | str | `{% raw %}{ { insecure_skip_tls_verify }}{% endraw %}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_certificate`](defaults/main.yml#L119) | str | `{% raw %}{ { certificate }}{% endraw %}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_host`](defaults/main.yml#L116) | str | `{% raw %}{ { host }}{% endraw %}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_password`](defaults/main.yml#L118) | str | `{% raw %}{ { password }}{% endraw %}` | None | None | None | -| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_username`](defaults/main.yml#L117) | str | `{% raw %}{ { username }}{% endraw %}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs`](defaults/main.yml#L90) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields`](defaults/main.yml#L91) | list | `[]` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.0`](defaults/main.yml#L92) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.0.id`](defaults/main.yml#L92) | str | `host` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.0.label`](defaults/main.yml#L94) | str | `Hostname or IP` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.0.type`](defaults/main.yml#L93) | str | `string` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.1`](defaults/main.yml#L95) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.1.id`](defaults/main.yml#L95) | str | `username` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.1.label`](defaults/main.yml#L97) | str | `Username` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.1.type`](defaults/main.yml#L96) | str | `string` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.2`](defaults/main.yml#L98) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.2.id`](defaults/main.yml#L98) | str | `password` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.2.label`](defaults/main.yml#L100) | str | `Password` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.2.secret`](defaults/main.yml#L101) | bool | `True` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.2.type`](defaults/main.yml#L99) | str | `string` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.3`](defaults/main.yml#L102) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.3.id`](defaults/main.yml#L102) | str | `certificate` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.3.label`](defaults/main.yml#L104) | str | `SSL/TLS CA Certificate` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.3.multiline`](defaults/main.yml#L105) | bool | `True` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.3.secret`](defaults/main.yml#L106) | bool | `True` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.3.type`](defaults/main.yml#L103) | str | `string` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.4`](defaults/main.yml#L107) | dict | `{}` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.4.id`](defaults/main.yml#L107) | str | `insecure_skip_tls_verify` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.4.label`](defaults/main.yml#L109) | str | `Insecure Skip TLS Verify` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.fields.4.type`](defaults/main.yml#L108) | str | `boolean` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.required`](defaults/main.yml#L110) | list | `[]` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.required.0`](defaults/main.yml#L111) | str | `host` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.required.1`](defaults/main.yml#L112) | str | `username` | None | None | None | -| [`aap_seed_controller_credential_types.0.inputs.required.2`](defaults/main.yml#L113) | str | `password` | None | None | None | -| [`aap_seed_controller_credential_types.0.kind`](defaults/main.yml#L89) | str | `cloud` | None | None | None | -| [`aap_seed_controller_credential_types.0.name`](defaults/main.yml#L87) | str | `{{ aap_seed_source_credential_type }}` | None | None | None | -| [`aap_seed_controller_credential_types.0.organization`](defaults/main.yml#L88) | str | `{{ aap_seed_org_name }}` | None | None | None | -| [`aap_seed_controller_execution_environments`](defaults/main.yml#L135) | list | `[]` | None | None | None | -| [`aap_seed_controller_inventories`](defaults/main.yml#L122) | list | `[]` | None | None | None | -| [`aap_seed_controller_inventories.0`](defaults/main.yml#L123) | dict | `{}` | None | None | None | -| [`aap_seed_controller_inventories.0.name`](defaults/main.yml#L123) | str | `{{ aap_seed_inventory_name }}` | None | None | None | -| [`aap_seed_controller_inventories.0.organization`](defaults/main.yml#L124) | str | `{{ aap_seed_org_name }}` | None | None | None | -| [`aap_seed_controller_organizations`](defaults/main.yml#L84) | list | `[]` | None | None | None | -| [`aap_seed_controller_projects`](defaults/main.yml#L126) | list | `[]` | None | None | None | -| [`aap_seed_controller_projects.0`](defaults/main.yml#L127) | dict | `{}` | None | None | None | -| [`aap_seed_controller_projects.0.credential`](defaults/main.yml#L133) | str | `{{ aap_seed_project_credential ¦ default(omit, true) }}` | None | None | None | -| [`aap_seed_controller_projects.0.name`](defaults/main.yml#L127) | str | `{{ aap_seed_project_name }}` | None | None | None | -| [`aap_seed_controller_projects.0.organization`](defaults/main.yml#L128) | str | `{{ aap_seed_org_name }}` | None | None | None | -| [`aap_seed_controller_projects.0.scm_branch`](defaults/main.yml#L131) | str | `{{ aap_seed_project_scm_branch }}` | None | None | None | -| [`aap_seed_controller_projects.0.scm_type`](defaults/main.yml#L129) | str | `git` | None | None | None | -| [`aap_seed_controller_projects.0.scm_update_on_launch`](defaults/main.yml#L132) | bool | `True` | None | None | None | -| [`aap_seed_controller_projects.0.scm_url`](defaults/main.yml#L130) | str | `{{ aap_seed_project_scm_url }}` | None | None | None | -| [`aap_seed_controller_templates`](defaults/main.yml#L137) | list | `[]` | None | None | None | -| [`aap_seed_controller_templates.0`](defaults/main.yml#L138) | dict | `{}` | None | None | None | -| [`aap_seed_controller_templates.0.ask_credential_on_launch`](defaults/main.yml#L144) | bool | `True` | None | None | None | -| [`aap_seed_controller_templates.0.ask_variables_on_launch`](defaults/main.yml#L145) | bool | `True` | None | None | None | -| [`aap_seed_controller_templates.0.execution_environment`](defaults/main.yml#L143) | str | `{{ aap_seed_execution_environment }}` | None | None | None | -| [`aap_seed_controller_templates.0.inventory`](defaults/main.yml#L142) | str | `{{ aap_seed_inventory_name }}` | None | None | None | -| [`aap_seed_controller_templates.0.name`](defaults/main.yml#L138) | str | `{{ aap_seed_migrate_template_name }}` | None | None | None | -| [`aap_seed_controller_templates.0.organization`](defaults/main.yml#L139) | str | `{{ aap_seed_org_name }}` | None | None | None | -| [`aap_seed_controller_templates.0.playbook`](defaults/main.yml#L141) | str | `{{ aap_seed_migrate_playbook }}` | None | None | None | -| [`aap_seed_controller_templates.0.project`](defaults/main.yml#L140) | str | `{{ aap_seed_project_name }}` | None | None | None | -| [`aap_seed_controller_templates.0.survey_enabled`](defaults/main.yml#L147) | bool | `True` | None | None | None | -| [`aap_seed_controller_templates.0.survey_spec`](defaults/main.yml#L148) | str | `{{ aap_seed_common_survey_spec }}` | None | None | None | -| [`aap_seed_controller_templates.0.verbosity`](defaults/main.yml#L146) | int | `0` | None | None | None | -| [`aap_seed_controller_templates.1`](defaults/main.yml#L149) | dict | `{}` | None | None | None | -| [`aap_seed_controller_templates.1.ask_credential_on_launch`](defaults/main.yml#L155) | bool | `True` | None | None | None | -| [`aap_seed_controller_templates.1.ask_variables_on_launch`](defaults/main.yml#L156) | bool | `True` | None | None | None | -| [`aap_seed_controller_templates.1.execution_environment`](defaults/main.yml#L154) | str | `{{ aap_seed_execution_environment }}` | None | None | None | -| [`aap_seed_controller_templates.1.inventory`](defaults/main.yml#L153) | str | `{{ aap_seed_inventory_name }}` | None | None | None | -| [`aap_seed_controller_templates.1.name`](defaults/main.yml#L149) | str | `{{ aap_seed_mtv_provider_template_name }}` | None | None | None | -| [`aap_seed_controller_templates.1.organization`](defaults/main.yml#L150) | str | `{{ aap_seed_org_name }}` | None | None | None | -| [`aap_seed_controller_templates.1.playbook`](defaults/main.yml#L152) | str | `{{ aap_seed_mtv_provider_playbook }}` | None | None | None | -| [`aap_seed_controller_templates.1.project`](defaults/main.yml#L151) | str | `{{ aap_seed_project_name }}` | None | None | None | -| [`aap_seed_controller_templates.1.survey_enabled`](defaults/main.yml#L158) | bool | `True` | None | None | None | -| [`aap_seed_controller_templates.1.survey_spec`](defaults/main.yml#L159) | str | `{{ aap_seed_common_survey_spec }}` | None | None | None | -| [`aap_seed_controller_templates.1.verbosity`](defaults/main.yml#L157) | int | `0` | None | None | None | -| [`aap_seed_credential_types_create`](defaults/main.yml#L68) | bool | `True` | None | None | None | -| [`aap_seed_credentials_create`](defaults/main.yml#L69) | bool | `True` | None | None | None | -| [`aap_seed_execution_environment`](defaults/main.yml#L23) | str | `{{ aap_execution_environment ¦ default('Default execution environment') }}` | None | None | None | -| [`aap_seed_execution_environments_create`](defaults/main.yml#L73) | bool | `True` | None | None | None | -| [`aap_seed_git_password`](defaults/main.yml#L33) | str | `{{ aap_git_password ¦ default('') }}` | None | None | None | -| [`aap_seed_git_ssh_key`](defaults/main.yml#L34) | str | `{{ aap_git_ssh_key ¦ default('') }}` | None | None | None | -| [`aap_seed_git_ssh_key_unlock`](defaults/main.yml#L35) | str | `{{ aap_git_ssh_key_unlock ¦ default('') }}` | None | None | None | -| [`aap_seed_git_username`](defaults/main.yml#L32) | str | `{{ aap_git_username ¦ default('') }}` | None | None | None | -| [`aap_seed_hostname`](defaults/main.yml#L5) | str | `{{ aap_hostname }}` | None | None | None | -| [`aap_seed_hosts_create`](defaults/main.yml#L71) | bool | `True` | None | None | None | -| [`aap_seed_inventories_create`](defaults/main.yml#L70) | bool | `True` | None | None | None | -| [`aap_seed_inventory_name`](defaults/main.yml#L22) | str | `OpenShift Virtualization Migration` | None | None | None | -| [`aap_seed_migrate_playbook`](defaults/main.yml#L38) | str | `playbooks/vmf_migrate.yml` | None | None | None | -| [`aap_seed_migrate_template_name`](defaults/main.yml#L37) | str | `OpenShift Virtualization Migration - Migrate` | None | None | None | -| [`aap_seed_mtv_provider_playbook`](defaults/main.yml#L41) | str | `playbooks/vmf_mtv_provider.yml` | None | None | None | -| [`aap_seed_mtv_provider_template_name`](defaults/main.yml#L40) | str | `OpenShift Virtualization Migration - MTV Provider` | None | None | None | -| [`aap_seed_org_name`](defaults/main.yml#L15) | str | `Default` | None | None | None | -| [`aap_seed_organizations_create`](defaults/main.yml#L67) | bool | `True` | None | None | None | -| [`aap_seed_password`](defaults/main.yml#L7) | str | `{{ aap_password ¦ default(omit) }}` | None | None | None | -| [`aap_seed_project_credential`](defaults/main.yml#L31) | str | `{{ aap_project_credential ¦ default('') }}` | None | None | None | -| [`aap_seed_project_name`](defaults/main.yml#L16) | str | `OpenShift Virtualization Migration` | None | None | None | -| [`aap_seed_project_scm_branch`](defaults/main.yml#L20) | str | `{{ aap_project_scm_branch ¦ default('v2') }}` | None | None | None | -| [`aap_seed_project_scm_url`](defaults/main.yml#L17) | str | `` | None | None | None | -| [`aap_seed_project_sync_timeout`](defaults/main.yml#L21) | int | `120` | None | None | None | -| [`aap_seed_projects_create`](defaults/main.yml#L72) | bool | `True` | None | None | None | -| [`aap_seed_secure_logging`](defaults/main.yml#L10) | bool | `True` | None | None | None | -| [`aap_seed_source_credential_type`](defaults/main.yml#L25) | str | `Migration Factory - Source Environment` | None | None | None | -| [`aap_seed_source_inventory_group`](defaults/main.yml#L28) | str | `vm_sources` | None | None | None | -| [`aap_seed_target_credential_type`](defaults/main.yml#L26) | str | `OpenShift or Kubernetes API Bearer Token` | None | None | None | -| [`aap_seed_target_inventory_group`](defaults/main.yml#L29) | str | `migration_clusters` | None | None | None | -| [`aap_seed_templates_create`](defaults/main.yml#L74) | bool | `True` | None | None | None | -| [`aap_seed_token`](defaults/main.yml#L8) | str | `{{ aap_token ¦ default(omit) }}` | None | None | None | -| [`aap_seed_username`](defaults/main.yml#L6) | str | `{{ aap_username ¦ default(omit) }}` | None | None | None | -| [`aap_seed_validate_certs`](defaults/main.yml#L9) | str | `{{ aap_validate_certs ¦ default(true) }}` | None | None | None | - +| Var | Type | Value |Required | Title | +|--------------|--------------|-------------|------------|-------------| +| [aap_seed_hostname](defaults/main.yml#L6) | str | `{{ aap_hostname }}` | True | AAP Hostname | +| [aap_seed_username](defaults/main.yml#L11) | str | `{{ aap_username ¦ default(omit) }}` | False | AAP Username | +| [aap_seed_password](defaults/main.yml#L16) | str | `{{ aap_password ¦ default(omit) }}` | False | AAP Password | +| [aap_seed_token](defaults/main.yml#L21) | str | `{{ aap_token ¦ default(omit) }}` | False | AAP Token | +| [aap_seed_validate_certs](defaults/main.yml#L26) | str | `{{ aap_validate_certs ¦ default(true) }}` | False | Validate Certificates | +| [aap_seed_secure_logging](defaults/main.yml#L33) | bool | `True` | False | Secure Logging | +| [aap_seed_org_name](defaults/main.yml#L38) | str | `Default` | False | Organization Name | +| [aap_seed_project_name](defaults/main.yml#L43) | str | `OpenShift Virtualization Migration` | False | Project Name | +| [aap_seed_project_scm_url](defaults/main.yml#L48) | str | `` | False | Project SCM URL | +| [aap_seed_project_scm_branch](defaults/main.yml#L55) | str | `{{ aap_project_scm_branch ¦ default('v2') }}` | False | Project SCM Branch | +| [aap_seed_project_sync_timeout](defaults/main.yml#L60) | int | `120` | False | Project Sync Timeout | +| [aap_seed_inventory_name](defaults/main.yml#L65) | str | `OpenShift Virtualization Migration` | False | Inventory Name | +| [aap_seed_execution_environment](defaults/main.yml#L70) | str | `{{ aap_execution_environment ¦ default('Default execution environment') }}` | False | Execution Environment | +| [aap_seed_source_credential_type](defaults/main.yml#L75) | str | `Migration Factory - Source Environment` | False | Source Credential Type | +| [aap_seed_target_credential_type](defaults/main.yml#L80) | str | `OpenShift or Kubernetes API Bearer Token` | False | Target Credential Type | +| [aap_seed_source_inventory_group](defaults/main.yml#L85) | str | `vm_sources` | False | Source Inventory Group | +| [aap_seed_target_inventory_group](defaults/main.yml#L90) | str | `migration_clusters` | False | Target Inventory Group | +| [aap_seed_project_credential](defaults/main.yml#L95) | str | `{{ aap_project_credential ¦ default('') }}` | False | Project Credential | +| [aap_seed_git_username](defaults/main.yml#L100) | str | `{{ aap_git_username ¦ default('') }}` | False | Git Username | +| [aap_seed_git_password](defaults/main.yml#L105) | str | `{{ aap_git_password ¦ default('') }}` | False | Git Password | +| [aap_seed_git_ssh_key](defaults/main.yml#L110) | str | `{{ aap_git_ssh_key ¦ default('') }}` | False | Git SSH Key | +| [aap_seed_git_ssh_key_unlock](defaults/main.yml#L115) | str | `{{ aap_git_ssh_key_unlock ¦ default('') }}` | False | Git SSH Key Unlock | +| [aap_seed_migrate_template_name](defaults/main.yml#L120) | str | `OpenShift Virtualization Migration - Migrate` | False | Migrate Template Name | +| [aap_seed_migrate_playbook](defaults/main.yml#L125) | str | `playbooks/vmf_migrate.yml` | False | Migrate Playbook | +| [aap_seed_mtv_provider_template_name](defaults/main.yml#L130) | str | `OpenShift Virtualization Migration - MTV Provider` | False | MTV Provider Template Name | +| [aap_seed_mtv_provider_playbook](defaults/main.yml#L135) | str | `playbooks/vmf_mtv_provider.yml` | False | MTV Provider Playbook | +| [aap_seed_common_survey_spec](defaults/main.yml#L142) | dict | `{}` | False | Common Survey Spec | +| [aap_seed_common_survey_spec.**name**](defaults/main.yml#L143) | str | | None | None | +| [aap_seed_common_survey_spec.**description**](defaults/main.yml#L144) | str | | None | None | +| [aap_seed_common_survey_spec.**spec**](defaults/main.yml#L145) | list | `[]` | None | None | +| [aap_seed_common_survey_spec.spec.**0**](defaults/main.yml#L146) | dict | `{}` | None | None | +| [aap_seed_common_survey_spec.spec.0.**question_name**](defaults/main.yml#L146) | str | `Source Name` | None | None | +| [aap_seed_common_survey_spec.spec.0.**question_description**](defaults/main.yml#L147) | str | `` | None | None | +| [aap_seed_common_survey_spec.spec.0.**variable**](defaults/main.yml#L151) | str | `source_name` | None | None | +| [aap_seed_common_survey_spec.spec.0.**type**](defaults/main.yml#L152) | str | `text` | None | None | +| [aap_seed_common_survey_spec.spec.0.**required**](defaults/main.yml#L153) | bool | `True` | None | None | +| [aap_seed_common_survey_spec.spec.**1**](defaults/main.yml#L154) | dict | `{}` | None | None | +| [aap_seed_common_survey_spec.spec.1.**question_name**](defaults/main.yml#L154) | str | `Target Name` | None | None | +| [aap_seed_common_survey_spec.spec.1.**question_description**](defaults/main.yml#L155) | str | `` | None | None | +| [aap_seed_common_survey_spec.spec.1.**variable**](defaults/main.yml#L159) | str | `target_name` | None | None | +| [aap_seed_common_survey_spec.spec.1.**type**](defaults/main.yml#L160) | str | `text` | None | None | +| [aap_seed_common_survey_spec.spec.1.**required**](defaults/main.yml#L161) | bool | `True` | None | None | +| [aap_seed_organizations_create](defaults/main.yml#L166) | bool | `True` | False | Create Organizations | +| [aap_seed_credential_types_create](defaults/main.yml#L171) | bool | `True` | False | Create Credential Types | +| [aap_seed_credentials_create](defaults/main.yml#L176) | bool | `True` | False | Create Credentials | +| [aap_seed_inventories_create](defaults/main.yml#L181) | bool | `True` | False | Create Inventories | +| [aap_seed_hosts_create](defaults/main.yml#L186) | bool | `True` | False | Create Hosts | +| [aap_seed_projects_create](defaults/main.yml#L191) | bool | `True` | False | Create Projects | +| [aap_seed_execution_environments_create](defaults/main.yml#L196) | bool | `True` | False | Create Execution Environments | +| [aap_seed_templates_create](defaults/main.yml#L201) | bool | `True` | False | Create Templates | +| [aap_seed_controller_organizations](defaults/main.yml#L206) | list | `[]` | False | Controller Organizations | +| [aap_seed_controller_credential_types](defaults/main.yml#L213) | list | `[]` | False | Controller Credential Types | +| [aap_seed_controller_credential_types.**0**](defaults/main.yml#L214) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.**name**](defaults/main.yml#L214) | str | `{{ aap_seed_source_credential_type }}` | None | None | +| [aap_seed_controller_credential_types.0.**organization**](defaults/main.yml#L215) | str | `{{ aap_seed_org_name }}` | None | None | +| [aap_seed_controller_credential_types.0.**kind**](defaults/main.yml#L216) | str | `cloud` | None | None | +| [aap_seed_controller_credential_types.0.**inputs**](defaults/main.yml#L217) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.inputs.**fields**](defaults/main.yml#L218) | list | `[]` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.**0**](defaults/main.yml#L219) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.0.**id**](defaults/main.yml#L219) | str | `host` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.0.**type**](defaults/main.yml#L220) | str | `string` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.0.**label**](defaults/main.yml#L221) | str | `Hostname or IP` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.**1**](defaults/main.yml#L222) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.1.**id**](defaults/main.yml#L222) | str | `username` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.1.**type**](defaults/main.yml#L223) | str | `string` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.1.**label**](defaults/main.yml#L224) | str | `Username` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.**2**](defaults/main.yml#L225) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.2.**id**](defaults/main.yml#L225) | str | `password` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.2.**type**](defaults/main.yml#L226) | str | `string` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.2.**label**](defaults/main.yml#L227) | str | `Password` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.2.**secret**](defaults/main.yml#L228) | bool | `True` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.**3**](defaults/main.yml#L229) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.3.**id**](defaults/main.yml#L229) | str | `certificate` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.3.**type**](defaults/main.yml#L230) | str | `string` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.3.**label**](defaults/main.yml#L231) | str | `SSL/TLS CA Certificate` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.3.**multiline**](defaults/main.yml#L232) | bool | `True` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.3.**secret**](defaults/main.yml#L233) | bool | `True` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.**4**](defaults/main.yml#L234) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.4.**id**](defaults/main.yml#L234) | str | `insecure_skip_tls_verify` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.4.**type**](defaults/main.yml#L235) | str | `boolean` | None | None | +| [aap_seed_controller_credential_types.0.inputs.fields.4.**label**](defaults/main.yml#L236) | str | `Insecure Skip TLS Verify` | None | None | +| [aap_seed_controller_credential_types.0.inputs.**required**](defaults/main.yml#L237) | list | `[]` | None | None | +| [aap_seed_controller_credential_types.0.inputs.required.**0**](defaults/main.yml#L238) | str | `host` | None | None | +| [aap_seed_controller_credential_types.0.inputs.required.**1**](defaults/main.yml#L239) | str | `username` | None | None | +| [aap_seed_controller_credential_types.0.inputs.required.**2**](defaults/main.yml#L240) | str | `password` | None | None | +| [aap_seed_controller_credential_types.0.**injectors**](defaults/main.yml#L241) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.injectors.**extra_vars**](defaults/main.yml#L242) | dict | `{}` | None | None | +| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_host**](defaults/main.yml#L243) | str | `{% raw %}{ { host }}{% endraw %}` | None | None | +| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_username**](defaults/main.yml#L244) | str | `{% raw %}{ { username }}{% endraw %}` | None | None | +| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_password**](defaults/main.yml#L245) | str | `{% raw %}{ { password }}{% endraw %}` | None | None | +| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_certificate**](defaults/main.yml#L246) | str | `{% raw %}{ { certificate }}{% endraw %}` | None | None | +| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_insecure_skip_tls_verify**](defaults/main.yml#L247) | str | `{% raw %}{ { insecure_skip_tls_verify }}{% endraw %}` | None | None | +| [aap_seed_controller_inventories](defaults/main.yml#L252) | list | `[]` | False | Controller Inventories | +| [aap_seed_controller_inventories.**0**](defaults/main.yml#L253) | dict | `{}` | None | None | +| [aap_seed_controller_inventories.0.**name**](defaults/main.yml#L253) | str | `{{ aap_seed_inventory_name }}` | None | None | +| [aap_seed_controller_inventories.0.**organization**](defaults/main.yml#L254) | str | `{{ aap_seed_org_name }}` | None | None | +| [aap_seed_controller_projects](defaults/main.yml#L259) | list | `[]` | False | Controller Projects | +| [aap_seed_controller_projects.**0**](defaults/main.yml#L260) | dict | `{}` | None | None | +| [aap_seed_controller_projects.0.**name**](defaults/main.yml#L260) | str | `{{ aap_seed_project_name }}` | None | None | +| [aap_seed_controller_projects.0.**organization**](defaults/main.yml#L261) | str | `{{ aap_seed_org_name }}` | None | None | +| [aap_seed_controller_projects.0.**scm_type**](defaults/main.yml#L262) | str | `git` | None | None | +| [aap_seed_controller_projects.0.**scm_url**](defaults/main.yml#L263) | str | `{{ aap_seed_project_scm_url }}` | None | None | +| [aap_seed_controller_projects.0.**scm_branch**](defaults/main.yml#L264) | str | `{{ aap_seed_project_scm_branch }}` | None | None | +| [aap_seed_controller_projects.0.**scm_update_on_launch**](defaults/main.yml#L265) | bool | `True` | None | None | +| [aap_seed_controller_projects.0.**credential**](defaults/main.yml#L266) | str | `{{ aap_seed_project_credential ¦ default(omit, true) }}` | None | None | +| [aap_seed_controller_execution_environments](defaults/main.yml#L273) | list | `[]` | False | Controller Execution Environments | +| [aap_seed_controller_templates](defaults/main.yml#L280) | list | `[]` | False | Controller Templates | +| [aap_seed_controller_templates.**0**](defaults/main.yml#L281) | dict | `{}` | None | None | +| [aap_seed_controller_templates.0.**name**](defaults/main.yml#L281) | str | `{{ aap_seed_migrate_template_name }}` | None | None | +| [aap_seed_controller_templates.0.**organization**](defaults/main.yml#L282) | str | `{{ aap_seed_org_name }}` | None | None | +| [aap_seed_controller_templates.0.**project**](defaults/main.yml#L283) | str | `{{ aap_seed_project_name }}` | None | None | +| [aap_seed_controller_templates.0.**playbook**](defaults/main.yml#L284) | str | `{{ aap_seed_migrate_playbook }}` | None | None | +| [aap_seed_controller_templates.0.**inventory**](defaults/main.yml#L285) | str | `{{ aap_seed_inventory_name }}` | None | None | +| [aap_seed_controller_templates.0.**execution_environment**](defaults/main.yml#L286) | str | `{{ aap_seed_execution_environment }}` | None | None | +| [aap_seed_controller_templates.0.**ask_credential_on_launch**](defaults/main.yml#L287) | bool | `True` | None | None | +| [aap_seed_controller_templates.0.**ask_variables_on_launch**](defaults/main.yml#L288) | bool | `True` | None | None | +| [aap_seed_controller_templates.0.**verbosity**](defaults/main.yml#L289) | int | `0` | None | None | +| [aap_seed_controller_templates.0.**survey_enabled**](defaults/main.yml#L290) | bool | `True` | None | None | +| [aap_seed_controller_templates.0.**survey_spec**](defaults/main.yml#L291) | str | `{{ aap_seed_common_survey_spec }}` | None | None | +| [aap_seed_controller_templates.**1**](defaults/main.yml#L292) | dict | `{}` | None | None | +| [aap_seed_controller_templates.1.**name**](defaults/main.yml#L292) | str | `{{ aap_seed_mtv_provider_template_name }}` | None | None | +| [aap_seed_controller_templates.1.**organization**](defaults/main.yml#L293) | str | `{{ aap_seed_org_name }}` | None | None | +| [aap_seed_controller_templates.1.**project**](defaults/main.yml#L294) | str | `{{ aap_seed_project_name }}` | None | None | +| [aap_seed_controller_templates.1.**playbook**](defaults/main.yml#L295) | str | `{{ aap_seed_mtv_provider_playbook }}` | None | None | +| [aap_seed_controller_templates.1.**inventory**](defaults/main.yml#L296) | str | `{{ aap_seed_inventory_name }}` | None | None | +| [aap_seed_controller_templates.1.**execution_environment**](defaults/main.yml#L297) | str | `{{ aap_seed_execution_environment }}` | None | None | +| [aap_seed_controller_templates.1.**ask_credential_on_launch**](defaults/main.yml#L298) | bool | `True` | None | None | +| [aap_seed_controller_templates.1.**ask_variables_on_launch**](defaults/main.yml#L299) | bool | `True` | None | None | +| [aap_seed_controller_templates.1.**verbosity**](defaults/main.yml#L300) | int | `0` | None | None | +| [aap_seed_controller_templates.1.**survey_enabled**](defaults/main.yml#L301) | bool | `True` | None | None | +| [aap_seed_controller_templates.1.**survey_spec**](defaults/main.yml#L302) | str | `{{ aap_seed_common_survey_spec }}` | None | None | +
🖇️ Full descriptions for vars in defaults/main.yml
-`aap_seed_common_survey_spec`: None -
-`aap_seed_common_survey_spec.description`: None -
-`aap_seed_common_survey_spec.name`: None -
-`aap_seed_common_survey_spec.spec`: None -
-`aap_seed_common_survey_spec.spec.0`: None -
-`aap_seed_common_survey_spec.spec.0.question_description`: None -
-`aap_seed_common_survey_spec.spec.0.question_name`: None -
-`aap_seed_common_survey_spec.spec.0.required`: None -
-`aap_seed_common_survey_spec.spec.0.type`: None -
-`aap_seed_common_survey_spec.spec.0.variable`: None -
-`aap_seed_common_survey_spec.spec.1`: None -
-`aap_seed_common_survey_spec.spec.1.question_description`: None -
-`aap_seed_common_survey_spec.spec.1.question_name`: None -
-`aap_seed_common_survey_spec.spec.1.required`: None -
-`aap_seed_common_survey_spec.spec.1.type`: None -
-`aap_seed_common_survey_spec.spec.1.variable`: None -
-`aap_seed_controller_credential_types`: None -
-`aap_seed_controller_credential_types.0`: None -
-`aap_seed_controller_credential_types.0.injectors`: None -
-`aap_seed_controller_credential_types.0.injectors.extra_vars`: None -
-`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_insecure_skip_tls_verify`: None -
-`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_certificate`: None -
-`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_host`: None -
-`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_password`: None -
-`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_username`: None -
-`aap_seed_controller_credential_types.0.inputs`: None -
-`aap_seed_controller_credential_types.0.inputs.fields`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.0`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.0.id`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.0.label`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.0.type`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.1`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.1.id`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.1.label`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.1.type`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.2`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.2.id`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.2.label`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.2.secret`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.2.type`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.3`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.3.id`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.3.label`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.3.multiline`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.3.secret`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.3.type`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.4`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.4.id`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.4.label`: None -
-`aap_seed_controller_credential_types.0.inputs.fields.4.type`: None -
-`aap_seed_controller_credential_types.0.inputs.required`: None -
-`aap_seed_controller_credential_types.0.inputs.required.0`: None -
-`aap_seed_controller_credential_types.0.inputs.required.1`: None -
-`aap_seed_controller_credential_types.0.inputs.required.2`: None -
-`aap_seed_controller_credential_types.0.kind`: None -
-`aap_seed_controller_credential_types.0.name`: None -
-`aap_seed_controller_credential_types.0.organization`: None -
-`aap_seed_controller_execution_environments`: None -
-`aap_seed_controller_inventories`: None -
-`aap_seed_controller_inventories.0`: None -
-`aap_seed_controller_inventories.0.name`: None -
-`aap_seed_controller_inventories.0.organization`: None -
-`aap_seed_controller_organizations`: None -
-`aap_seed_controller_projects`: None -
-`aap_seed_controller_projects.0`: None -
-`aap_seed_controller_projects.0.credential`: None -
-`aap_seed_controller_projects.0.name`: None -
-`aap_seed_controller_projects.0.organization`: None -
-`aap_seed_controller_projects.0.scm_branch`: None -
-`aap_seed_controller_projects.0.scm_type`: None -
-`aap_seed_controller_projects.0.scm_update_on_launch`: None -
-`aap_seed_controller_projects.0.scm_url`: None -
-`aap_seed_controller_templates`: None -
-`aap_seed_controller_templates.0`: None -
-`aap_seed_controller_templates.0.ask_credential_on_launch`: None -
-`aap_seed_controller_templates.0.ask_variables_on_launch`: None -
-`aap_seed_controller_templates.0.execution_environment`: None -
-`aap_seed_controller_templates.0.inventory`: None -
-`aap_seed_controller_templates.0.name`: None -
-`aap_seed_controller_templates.0.organization`: None -
-`aap_seed_controller_templates.0.playbook`: None -
-`aap_seed_controller_templates.0.project`: None -
-`aap_seed_controller_templates.0.survey_enabled`: None -
-`aap_seed_controller_templates.0.survey_spec`: None -
-`aap_seed_controller_templates.0.verbosity`: None -
-`aap_seed_controller_templates.1`: None -
-`aap_seed_controller_templates.1.ask_credential_on_launch`: None -
-`aap_seed_controller_templates.1.ask_variables_on_launch`: None -
-`aap_seed_controller_templates.1.execution_environment`: None -
-`aap_seed_controller_templates.1.inventory`: None -
-`aap_seed_controller_templates.1.name`: None -
-`aap_seed_controller_templates.1.organization`: None -
-`aap_seed_controller_templates.1.playbook`: None -
-`aap_seed_controller_templates.1.project`: None -
-`aap_seed_controller_templates.1.survey_enabled`: None -
-`aap_seed_controller_templates.1.survey_spec`: None -
-`aap_seed_controller_templates.1.verbosity`: None -
-`aap_seed_credential_types_create`: None -
-`aap_seed_credentials_create`: None -
-`aap_seed_execution_environment`: None -
-`aap_seed_execution_environments_create`: None -
-`aap_seed_git_password`: None -
-`aap_seed_git_ssh_key`: None -
-`aap_seed_git_ssh_key_unlock`: None -
-`aap_seed_git_username`: None -
-`aap_seed_hostname`: None -
-`aap_seed_hosts_create`: None -
-`aap_seed_inventories_create`: None -
-`aap_seed_inventory_name`: None -
-`aap_seed_migrate_playbook`: None -
-`aap_seed_migrate_template_name`: None -
-`aap_seed_mtv_provider_playbook`: None -
-`aap_seed_mtv_provider_template_name`: None -
-`aap_seed_org_name`: None -
-`aap_seed_organizations_create`: None -
-`aap_seed_password`: None -
-`aap_seed_project_credential`: None -
-`aap_seed_project_name`: None -
-`aap_seed_project_scm_branch`: None -
-`aap_seed_project_scm_url`: None -
-`aap_seed_project_sync_timeout`: None -
-`aap_seed_projects_create`: None -
-`aap_seed_secure_logging`: None -
-`aap_seed_source_credential_type`: None -
-`aap_seed_source_inventory_group`: None -
-`aap_seed_target_credential_type`: None -
-`aap_seed_target_inventory_group`: None -
-`aap_seed_templates_create`: None -
-`aap_seed_token`: None -
-`aap_seed_username`: None -
-`aap_seed_validate_certs`: None -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VarDescription
aap_seed_hostnameHostname of the AAP instance. Cascades from aap_hostname inventory variable.
aap_seed_usernameUsername for AAP authentication. Cascades from aap_username inventory variable.
aap_seed_passwordPassword for AAP authentication. Cascades from aap_password inventory variable.
aap_seed_tokenOAuth token for AAP authentication. Cascades from aap_token inventory variable.
aap_seed_validate_certsWhether to validate TLS certificates for AAP connections.
aap_seed_secure_logging>-
aap_seed_org_nameAAP organization name used for all created objects.
aap_seed_project_nameName of the AAP project created for the migration collection.
aap_seed_project_scm_urlGit repository URL for the AAP project. Cascades from aap_project_scm_url.
aap_seed_project_scm_branchGit branch for the AAP project. Cascades from aap_project_scm_branch.
aap_seed_project_sync_timeoutTimeout in seconds for AAP project sync operations.
aap_seed_inventory_nameName of the AAP inventory created for migration hosts.
aap_seed_execution_environmentExecution environment assigned to job templates. Cascades from aap_execution_environment.
aap_seed_source_credential_typeName of the custom credential type created for source hypervisor environments.
aap_seed_target_credential_typeName of the built-in credential type used for OpenShift target clusters.
aap_seed_source_inventory_groupAAP inventory group name containing source hypervisor hosts.
aap_seed_target_inventory_groupAAP inventory group name containing target OpenShift cluster hosts.
aap_seed_project_credentialName of the Git credential to attach to the AAP project. Leave empty to skip.
aap_seed_git_usernameUsername for Git authentication (HTTPS). Cascades from aap_git_username.
aap_seed_git_passwordPassword or token for Git authentication (HTTPS). Cascades from aap_git_password.
aap_seed_git_ssh_keySSH private key for Git authentication. Cascades from aap_git_ssh_key.
aap_seed_git_ssh_key_unlockPassphrase to unlock the SSH key. Cascades from aap_git_ssh_key_unlock.
aap_seed_migrate_template_nameName of the migration job template created in AAP.
aap_seed_migrate_playbookPlaybook path for the migration job template.
aap_seed_mtv_provider_template_nameName of the MTV provider job template created in AAP.
aap_seed_mtv_provider_playbookPlaybook path for the MTV provider job template.
aap_seed_common_survey_spec>-
aap_seed_organizations_createWhether to create organization objects in AAP.
aap_seed_credential_types_createWhether to create custom credential type objects in AAP.
aap_seed_credentials_createWhether to create credential objects in AAP.
aap_seed_inventories_createWhether to create inventory objects in AAP.
aap_seed_hosts_createWhether to create host objects in AAP.
aap_seed_projects_createWhether to create project objects in AAP.
aap_seed_execution_environments_createWhether to create execution environment objects in AAP.
aap_seed_templates_createWhether to create job template objects in AAP.
aap_seed_controller_organizationsList of AAP organization definitions.
aap_seed_controller_credential_types>-
aap_seed_controller_inventoriesList of AAP inventory definitions.
aap_seed_controller_projectsList of AAP project definitions.
aap_seed_controller_execution_environments>-
aap_seed_controller_templates>-

+
+ -### Tasks -#### File: tasks/main.yml -| Name | Module | Has Conditions | -| ---- | ------ | --------- | -| Seed AAP with Migration Factory content | `block` | False | -| Build simple AAP objects from defaults | `ansible.builtin.include_tasks` | False | -| Validate inventory host variables | `ansible.builtin.include_tasks` | False | -| Build credentials from inventory | `ansible.builtin.include_tasks` | False | -| Build hosts and groups from inventory | `ansible.builtin.include_tasks` | True | -| Create project and sync from SCM | `block` | True | -| Sync SCM project | `ansible.builtin.include_tasks` | False | -| Copy aap_seed_controller_* to controller_* for dispatch | `ansible.builtin.set_fact` | False | -| Push CaC content to AAP | `ansible.builtin.include_role` | False | + +### Tasks + #### File: tasks/build_credentials.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| build_credentials ¦ Apply credential type toggle | `ansible.builtin.set_fact` | False | -| build_credentials ¦ Initialize credential list | `ansible.builtin.set_fact` | True | -| build_credentials ¦ Build source environment credentials | `ansible.builtin.set_fact` | True | -| build_credentials ¦ Build target cluster credentials | `ansible.builtin.set_fact` | True | -| build_credentials ¦ Build Git credential for SCM project | `ansible.builtin.set_fact` | True | -| build_credentials ¦ Disable credentials when toggle is off | `ansible.builtin.set_fact` | True | +| ---- | ------ | -------------- | +| build_credentials ¦ Apply credential type toggle | ansible.builtin.set_fact | False | +| build_credentials ¦ Initialize credential list | ansible.builtin.set_fact | True | +| build_credentials ¦ Build source environment credentials | ansible.builtin.set_fact | True | +| build_credentials ¦ Build target cluster credentials | ansible.builtin.set_fact | True | +| build_credentials ¦ Build Git credential for SCM project | ansible.builtin.set_fact | True | +| build_credentials ¦ Disable credentials when toggle is off | ansible.builtin.set_fact | True | #### File: tasks/build_hosts.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| build_hosts ¦ Initialize host list | `ansible.builtin.set_fact` | False | -| build_hosts ¦ Build source environment hosts | `ansible.builtin.set_fact` | False | -| build_hosts ¦ Build target cluster hosts | `ansible.builtin.set_fact` | False | -| build_hosts ¦ Build inventory groups | `ansible.builtin.set_fact` | False | +| ---- | ------ | -------------- | +| build_hosts ¦ Initialize host list | ansible.builtin.set_fact | False | +| build_hosts ¦ Build source environment hosts | ansible.builtin.set_fact | False | +| build_hosts ¦ Build target cluster hosts | ansible.builtin.set_fact | False | +| build_hosts ¦ Build inventory groups | ansible.builtin.set_fact | False | #### File: tasks/build_objects.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| build_objects ¦ Set organizations | `ansible.builtin.set_fact` | False | -| build_objects ¦ Set inventories | `ansible.builtin.set_fact` | False | -| build_objects ¦ Set projects | `ansible.builtin.set_fact` | False | -| build_objects ¦ Set execution environments | `ansible.builtin.set_fact` | False | -| build_objects ¦ Set job templates | `ansible.builtin.set_fact` | False | +| ---- | ------ | -------------- | +| build_objects ¦ Set organizations | ansible.builtin.set_fact | False | +| build_objects ¦ Set inventories | ansible.builtin.set_fact | False | +| build_objects ¦ Set projects | ansible.builtin.set_fact | False | +| build_objects ¦ Set execution environments | ansible.builtin.set_fact | False | +| build_objects ¦ Set job templates | ansible.builtin.set_fact | False | + +#### File: tasks/main.yml + +| Name | Module | Has Conditions | +| ---- | ------ | -------------- | +| Seed AAP with Migration Factory content | block | False | +| Build simple AAP objects from defaults | ansible.builtin.include_tasks | False | +| Validate inventory host variables | ansible.builtin.include_tasks | False | +| Build credentials from inventory | ansible.builtin.include_tasks | False | +| Build hosts and groups from inventory | ansible.builtin.include_tasks | True | +| Create project and sync from SCM | block | True | +| Sync SCM project | ansible.builtin.include_tasks | False | +| Copy aap_seed_controller_* to controller_* for dispatch | ansible.builtin.set_fact | False | +| Push CaC content to AAP | ansible.builtin.include_role | False | #### File: tasks/sync_project.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| sync_project ¦ Create or update the project in AAP | `ansible.builtin.include_role` | False | -| sync_project ¦ Sync project from SCM and wait for completion | `ansible.builtin.include_role` | False | +| ---- | ------ | -------------- | +| sync_project ¦ Create or update the project in AAP | ansible.builtin.include_role | False | +| sync_project ¦ Sync project from SCM and wait for completion | ansible.builtin.include_role | False | #### File: tasks/validate.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| validate ¦ Target hosts must define a non-empty bearer token | `ansible.builtin.assert` | False | - -## Task Flow Graphs - -### Graph for build_credentials.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| build_credentials___Apply_credential_type_toggle0[build credentials apply credential type toggle]:::task - build_credentials___Apply_credential_type_toggle0-->|Task| build_credentials___Initialize_credential_list1[build credentials initialize credential list
When: **aap seed credentials create bool**]:::task - build_credentials___Initialize_credential_list1-->|Task| build_credentials___Build_source_environment_credentials2[build credentials build source environment
credentials
When: **aap seed credentials create bool**]:::task - build_credentials___Build_source_environment_credentials2-->|Task| build_credentials___Build_target_cluster_credentials3[build credentials build target cluster
credentials
When: **aap seed credentials create bool**]:::task - build_credentials___Build_target_cluster_credentials3-->|Task| build_credentials___Build_Git_credential_for_SCM_project4[build credentials build git credential for scm
project
When: **aap seed credentials create bool and aap seed
project credential default true length
0**]:::task - build_credentials___Build_Git_credential_for_SCM_project4-->|Task| build_credentials___Disable_credentials_when_toggle_is_off5[build credentials disable credentials when
toggle is off
When: **not aap seed credentials create bool**]:::task - build_credentials___Disable_credentials_when_toggle_is_off5-->End -``` - -### Graph for build_hosts.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| build_hosts___Initialize_host_list0[build hosts initialize host list]:::task - build_hosts___Initialize_host_list0-->|Task| build_hosts___Build_source_environment_hosts1[build hosts build source environment hosts]:::task - build_hosts___Build_source_environment_hosts1-->|Task| build_hosts___Build_target_cluster_hosts2[build hosts build target cluster hosts]:::task - build_hosts___Build_target_cluster_hosts2-->|Task| build_hosts___Build_inventory_groups3[build hosts build inventory groups]:::task - build_hosts___Build_inventory_groups3-->End -``` - -### Graph for build_objects.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| build_objects___Set_organizations0[build objects set organizations]:::task - build_objects___Set_organizations0-->|Task| build_objects___Set_inventories1[build objects set inventories]:::task - build_objects___Set_inventories1-->|Task| build_objects___Set_projects2[build objects set projects]:::task - build_objects___Set_projects2-->|Task| build_objects___Set_execution_environments3[build objects set execution environments]:::task - build_objects___Set_execution_environments3-->|Task| build_objects___Set_job_templates4[build objects set job templates]:::task - build_objects___Set_job_templates4-->End -``` - -### Graph for main.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Block Start| Seed_AAP_with_Migration_Factory_content0_block_start_0[[seed aap with migration factory content]]:::block - Seed_AAP_with_Migration_Factory_content0_block_start_0-->|Include task| Build_simple_AAP_objects_from_defaults_build_objects_yml_0[build simple aap objects from defaults
include_task: build objects yml]:::includeTasks - Build_simple_AAP_objects_from_defaults_build_objects_yml_0-->|Include task| Validate_inventory_host_variables_validate_yml_1[validate inventory host variables
include_task: validate yml]:::includeTasks - Validate_inventory_host_variables_validate_yml_1-->|Include task| Build_credentials_from_inventory_build_credentials_yml_2[build credentials from inventory
include_task: build credentials yml]:::includeTasks - Build_credentials_from_inventory_build_credentials_yml_2-->|Include task| Build_hosts_and_groups_from_inventory_build_hosts_yml_3[build hosts and groups from inventory
When: **aap seed hosts create bool**
include_task: build hosts yml]:::includeTasks - Build_hosts_and_groups_from_inventory_build_hosts_yml_3-->|Block Start| Create_project_and_sync_from_SCM4_block_start_1[[create project and sync from scm
When: **aap seed projects create bool**]]:::block - Create_project_and_sync_from_SCM4_block_start_1-->|Include task| Sync_SCM_project_sync_project_yml_0[sync scm project
include_task: sync project yml]:::includeTasks - Sync_SCM_project_sync_project_yml_0-.->|End of Block| Create_project_and_sync_from_SCM4_block_start_1 - Sync_SCM_project_sync_project_yml_0-->|Rescue Start| Create_project_and_sync_from_SCM4_rescue_start_1[create project and sync from scm
When: **aap seed projects create bool**]:::rescue - Create_project_and_sync_from_SCM4_rescue_start_1-->|Task| Project_sync_failed0[project sync failed]:::task - Project_sync_failed0-.->|End of Rescue Block| Create_project_and_sync_from_SCM4_block_start_1 - Project_sync_failed0-->|Task| Copy_aap_seed_controller___to_controller___for_dispatch5[copy aap seed controller to controller for
dispatch]:::task - Copy_aap_seed_controller___to_controller___for_dispatch5-->|Include role| Push_CaC_content_to_AAP_infra_aap_configuration_dispatch_6(push cac content to aap
include_role: infra aap configuration dispatch):::includeRole - Push_CaC_content_to_AAP_infra_aap_configuration_dispatch_6-.->|End of Block| Seed_AAP_with_Migration_Factory_content0_block_start_0 - Push_CaC_content_to_AAP_infra_aap_configuration_dispatch_6-->End -``` - -### Graph for sync_project.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Include role| sync_project___Create_or_update_the_project_in_AAP_infra_aap_configuration_controller_projects_0(sync project create or update the project in aap
include_role: infra aap configuration controller projects):::includeRole - sync_project___Create_or_update_the_project_in_AAP_infra_aap_configuration_controller_projects_0-->|Include role| sync_project___Sync_project_from_SCM_and_wait_for_completion_infra_aap_configuration_controller_project_update_1(sync project sync project from scm and wait for
completion
include_role: infra aap configuration controller project update):::includeRole - sync_project___Sync_project_from_SCM_and_wait_for_completion_infra_aap_configuration_controller_project_update_1-->End -``` - -### Graph for validate.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| validate___Target_hosts_must_define_a_non_empty_bearer_token0[validate target hosts must define a non empty
bearer token]:::task - validate___Target_hosts_must_define_a_non_empty_bearer_token0-->End -``` +| ---- | ------ | -------------- | +| validate ¦ Target hosts must define a non-empty bearer token | ansible.builtin.assert | False | + + -## Author Information + + + +## Author Information Red Hat -## License +#### License GPL-3.0-or-later -## Minimum Ansible Version +#### Minimum Ansible Version 2.16 -## Platforms +#### Platforms No platforms specified. - \ No newline at end of file +#### Dependencies + +No dependencies specified. + diff --git a/roles/aap_seed/defaults/main.yml b/roles/aap_seed/defaults/main.yml index 8286632..d6bbf65 100644 --- a/roles/aap_seed/defaults/main.yml +++ b/roles/aap_seed/defaults/main.yml @@ -1,45 +1,144 @@ --- -# --------------------------------------------------------------------------- -# AAP connection — cascade from generic inventory variables -# --------------------------------------------------------------------------- + +# title: AAP Hostname +# required: True +# description: Hostname of the AAP instance. Cascades from aap_hostname inventory variable. aap_seed_hostname: "{{ aap_hostname }}" + +# title: AAP Username +# required: False +# description: Username for AAP authentication. Cascades from aap_username inventory variable. aap_seed_username: "{{ aap_username | default(omit) }}" + +# title: AAP Password +# required: False +# description: Password for AAP authentication. Cascades from aap_password inventory variable. aap_seed_password: "{{ aap_password | default(omit) }}" + +# title: AAP Token +# required: False +# description: OAuth token for AAP authentication. Cascades from aap_token inventory variable. aap_seed_token: "{{ aap_token | default(omit) }}" + +# title: Validate Certificates +# required: False +# description: Whether to validate TLS certificates for AAP connections. aap_seed_validate_certs: "{{ aap_validate_certs | default(true) }}" + +# title: Secure Logging +# required: False +# description: >- +# Suppress task output for credential loops to prevent secrets from +# leaking to logs. Set to false when debugging credential construction. aap_seed_secure_logging: true -# --------------------------------------------------------------------------- -# Object naming -# --------------------------------------------------------------------------- +# title: Organization Name +# required: False +# description: AAP organization name used for all created objects. aap_seed_org_name: Default + +# title: Project Name +# required: False +# description: Name of the AAP project created for the migration collection. aap_seed_project_name: OpenShift Virtualization Migration + +# title: Project SCM URL +# required: False +# description: Git repository URL for the AAP project. Cascades from aap_project_scm_url. aap_seed_project_scm_url: >- {{ aap_project_scm_url | default('https://github.com/redhat-cop/openshift_virtualization_migration.git') }} + +# title: Project SCM Branch +# required: False +# description: Git branch for the AAP project. Cascades from aap_project_scm_branch. aap_seed_project_scm_branch: "{{ aap_project_scm_branch | default('v2') }}" + +# title: Project Sync Timeout +# required: False +# description: Timeout in seconds for AAP project sync operations. aap_seed_project_sync_timeout: 120 + +# title: Inventory Name +# required: False +# description: Name of the AAP inventory created for migration hosts. aap_seed_inventory_name: OpenShift Virtualization Migration + +# title: Execution Environment +# required: False +# description: Execution environment assigned to job templates. Cascades from aap_execution_environment. aap_seed_execution_environment: "{{ aap_execution_environment | default('Default execution environment') }}" +# title: Source Credential Type +# required: False +# description: Name of the custom credential type created for source hypervisor environments. aap_seed_source_credential_type: Migration Factory - Source Environment + +# title: Target Credential Type +# required: False +# description: Name of the built-in credential type used for OpenShift target clusters. aap_seed_target_credential_type: OpenShift or Kubernetes API Bearer Token +# title: Source Inventory Group +# required: False +# description: AAP inventory group name containing source hypervisor hosts. aap_seed_source_inventory_group: vm_sources + +# title: Target Inventory Group +# required: False +# description: AAP inventory group name containing target OpenShift cluster hosts. aap_seed_target_inventory_group: migration_clusters +# title: Project Credential +# required: False +# description: Name of the Git credential to attach to the AAP project. Leave empty to skip. aap_seed_project_credential: "{{ aap_project_credential | default('') }}" + +# title: Git Username +# required: False +# description: Username for Git authentication (HTTPS). Cascades from aap_git_username. aap_seed_git_username: "{{ aap_git_username | default('') }}" + +# title: Git Password +# required: False +# description: Password or token for Git authentication (HTTPS). Cascades from aap_git_password. aap_seed_git_password: "{{ aap_git_password | default('') }}" + +# title: Git SSH Key +# required: False +# description: SSH private key for Git authentication. Cascades from aap_git_ssh_key. aap_seed_git_ssh_key: "{{ aap_git_ssh_key | default('') }}" + +# title: Git SSH Key Unlock +# required: False +# description: Passphrase to unlock the SSH key. Cascades from aap_git_ssh_key_unlock. aap_seed_git_ssh_key_unlock: "{{ aap_git_ssh_key_unlock | default('') }}" +# title: Migrate Template Name +# required: False +# description: Name of the migration job template created in AAP. aap_seed_migrate_template_name: OpenShift Virtualization Migration - Migrate + +# title: Migrate Playbook +# required: False +# description: Playbook path for the migration job template. aap_seed_migrate_playbook: playbooks/vmf_migrate.yml +# title: MTV Provider Template Name +# required: False +# description: Name of the MTV provider job template created in AAP. aap_seed_mtv_provider_template_name: OpenShift Virtualization Migration - MTV Provider + +# title: MTV Provider Playbook +# required: False +# description: Playbook path for the MTV provider job template. aap_seed_mtv_provider_playbook: playbooks/vmf_mtv_provider.yml +# title: Common Survey Spec +# required: False +# description: >- +# Shared survey specification used by job templates. Contains the +# source_name and target_name prompts. aap_seed_common_survey_spec: name: "" description: "" @@ -61,28 +160,56 @@ aap_seed_common_survey_spec: type: text required: true -# --------------------------------------------------------------------------- -# Per-type create toggles — set to false to skip an entire category -# --------------------------------------------------------------------------- +# title: Create Organizations +# required: False +# description: Whether to create organization objects in AAP. aap_seed_organizations_create: true + +# title: Create Credential Types +# required: False +# description: Whether to create custom credential type objects in AAP. aap_seed_credential_types_create: true + +# title: Create Credentials +# required: False +# description: Whether to create credential objects in AAP. aap_seed_credentials_create: true + +# title: Create Inventories +# required: False +# description: Whether to create inventory objects in AAP. aap_seed_inventories_create: true + +# title: Create Hosts +# required: False +# description: Whether to create host objects in AAP. aap_seed_hosts_create: true + +# title: Create Projects +# required: False +# description: Whether to create project objects in AAP. aap_seed_projects_create: true + +# title: Create Execution Environments +# required: False +# description: Whether to create execution environment objects in AAP. aap_seed_execution_environments_create: true -aap_seed_templates_create: true -# --------------------------------------------------------------------------- -# Default AAP object lists -# -# Users may override any of these by redefining the variable in their -# inventory or playbook. The role builds these into controller_* -# variables at runtime and passes them to infra.aap_configuration.dispatch. -# --------------------------------------------------------------------------- +# title: Create Templates +# required: False +# description: Whether to create job template objects in AAP. +aap_seed_templates_create: true +# title: Controller Organizations +# required: False +# description: List of AAP organization definitions. aap_seed_controller_organizations: [] +# title: Controller Credential Types +# required: False +# description: >- +# List of custom credential type definitions. Default creates the +# Migration Factory source environment credential type. aap_seed_controller_credential_types: - name: "{{ aap_seed_source_credential_type }}" organization: "{{ aap_seed_org_name }}" @@ -119,10 +246,16 @@ aap_seed_controller_credential_types: mf_source_certificate: "{% raw %}{ { certificate }}{% endraw %}" mf_insecure_skip_tls_verify: "{% raw %}{ { insecure_skip_tls_verify }}{% endraw %}" +# title: Controller Inventories +# required: False +# description: List of AAP inventory definitions. aap_seed_controller_inventories: - name: "{{ aap_seed_inventory_name }}" organization: "{{ aap_seed_org_name }}" +# title: Controller Projects +# required: False +# description: List of AAP project definitions. aap_seed_controller_projects: - name: "{{ aap_seed_project_name }}" organization: "{{ aap_seed_org_name }}" @@ -132,8 +265,18 @@ aap_seed_controller_projects: scm_update_on_launch: true credential: "{{ aap_seed_project_credential | default(omit, true) }}" +# title: Controller Execution Environments +# required: False +# description: >- +# List of AAP execution environment definitions. Empty by default; +# populate to create custom EEs. aap_seed_controller_execution_environments: [] +# title: Controller Templates +# required: False +# description: >- +# List of AAP job template definitions. Default creates the migrate +# and MTV provider templates. aap_seed_controller_templates: - name: "{{ aap_seed_migrate_template_name }}" organization: "{{ aap_seed_org_name }}" diff --git a/roles/mtv_provider/README.md b/roles/mtv_provider/README.md index 53d9915..46499a6 100644 --- a/roles/mtv_provider/README.md +++ b/roles/mtv_provider/README.md @@ -1,310 +1,279 @@ - -# mtv_provider + -Creates MTV/Forklift source Provider CRs on OpenShift target clusters. -Designed to run from AAP with credential injection. +# 📃 Role overview - - ## mtv_provider -``` -Role belongs to infra/openshift_virtualization_migration -Namespace - infra -Collection - openshift_virtualization_migration -Version - 1.25.0 -Repository - https://github.com/redhat-cop/openshift_virtualization_migration -``` + Description: Create MTV/Forklift source provider CRs on OpenShift target clusters. Designed to run from AAP with credential injection. -### Argument Specifications +| Field | Value | +|--------------------- |-----------------| +| Readme update | 2026/09/02 | + + +
-🧩 Argument Specifications in `meta/argument_specs` +🧩 Argument Specifications in meta/argument_specs #### Key: main -* **Description**: ['Creates a Forklift Provider custom resource and its backing Secret on a target OpenShift cluster for a given source environment.', 'Designed to run from AAP with credential injection. The source credential injects mf_source_username, mf_source_password, and mf_source_certificate as extra vars. OpenShift connection is provided by the AAP OpenShift credential which sets K8S_AUTH_* environment variables.', 'For targets with multiple sources, launch the job template once per source-target pair.'] -* **Options**: - * **mtv_provider_api_version**: - * **Required**: False - * **Type**: str - * **Default**: forklift.konveyor.io/v1beta1 - * **Description**: Forklift API version for Provider CRs. - * **mtv_provider_auto_retrieve_cert**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Whether to automatically retrieve the source TLS certificate when insecureSkipTlsVerify is false and no certificate is provided. - * **mtv_provider_provider_namespace**: - * **Required**: False - * **Type**: str - * **Default**: openshift-mtv - * **Description**: Namespace where the provider will be created. Resolved from the target host's mtv_namespace variable by default. - * **mtv_provider_provider_override**: - * **Required**: False - * **Type**: dict - * **Default**: {} - * **Description**: Override configuration merged into the Provider CR spec. Allows setting additional properties such as settings or other fields that evolve with the Forklift API. - * **mtv_provider_provider_state**: - * **Required**: False - * **Type**: str - * **Default**: present - * **Description**: Desired state of the provider. Set to absent to remove a previously created provider and its secret. - * **Choices**: - * present - * absent - * **mtv_provider_provider_wait**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Whether to wait for the Provider CR to reach Ready status after creation. - * **mtv_provider_provider_wait_poll**: - * **Required**: False - * **Type**: int - * **Default**: 10 - * **Description**: Seconds between status polls while waiting for Ready. - * **mtv_provider_provider_wait_timeout**: - * **Required**: False - * **Type**: int - * **Default**: 120 - * **Description**: Seconds to wait for the Provider to become Ready before failing. - * **mtv_provider_secure_logging**: - * **Required**: False - * **Type**: bool - * **Default**: True - * **Description**: Whether to enable secure logging for sensitive tasks. - * **source_name**: - * **Required**: True - * **Type**: str - * **Default**: none - * **Description**: Name of the source environment (must match an AAP inventory host in the vm_sources group). - * **target_name**: - * **Required**: True - * **Type**: str - * **Default**: none - * **Description**: Name of the target OpenShift cluster (must match an AAP inventory host in the migration_clusters group). +**Description**: +- Creates a Forklift Provider custom resource and its backing Secret on a target OpenShift cluster for a given source environment. +- Designed to run from AAP with credential injection. The source credential injects mf_source_username, mf_source_password, and mf_source_certificate as extra vars. OpenShift connection is provided by the AAP OpenShift credential which sets K8S_AUTH_* environment variables. +- For targets with multiple sources, launch the job template once per source-target pair. + + +**Options**: + + + - **source_name** + - **Required**: True + - **Type**: str + - **Default**: none + + - **Description**: Name of the source environment (must match an AAP inventory host in the vm_sources group). + + + + + - **target_name** + - **Required**: True + - **Type**: str + - **Default**: none + + - **Description**: Name of the target OpenShift cluster (must match an AAP inventory host in the migration_clusters group). + + + + + - **mtv_provider_secure_logging** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Whether to enable secure logging for sensitive tasks. + + + + + - **mtv_provider_provider_namespace** + - **Required**: False + - **Type**: str + - **Default**: openshift-mtv + + - **Description**: Namespace where the provider will be created. Resolved from the target host's mtv_namespace variable by default. + + + + + - **mtv_provider_provider_wait** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Whether to wait for the Provider CR to reach Ready status after creation. + + + + + - **mtv_provider_provider_wait_timeout** + - **Required**: False + - **Type**: int + - **Default**: 120 + + - **Description**: Seconds to wait for the Provider to become Ready before failing. + + + + + - **mtv_provider_provider_wait_poll** + - **Required**: False + - **Type**: int + - **Default**: 10 + + - **Description**: Seconds between status polls while waiting for Ready. + + + + + - **mtv_provider_provider_state** + - **Required**: False + - **Type**: str + - **Default**: present + + - **Description**: Desired state of the provider. Set to absent to remove a previously created provider and its secret. + + - **Choices**: + + - present + + - absent + + + + + + - **mtv_provider_api_version** + - **Required**: False + - **Type**: str + - **Default**: forklift.konveyor.io/v1beta1 + + - **Description**: Forklift API version for Provider CRs. + + + + + - **mtv_provider_provider_override** + - **Required**: False + - **Type**: dict + - **Default**: {} + + - **Description**: Override configuration merged into the Provider CR spec. Allows setting additional properties such as settings or other fields that evolve with the Forklift API. + + + + + - **mtv_provider_auto_retrieve_cert** + - **Required**: False + - **Type**: bool + - **Default**: True + + - **Description**: Whether to automatically retrieve the source TLS certificate when insecureSkipTlsVerify is false and no certificate is provided. + + + + +
+ + + ### Defaults **These are static variables with lower priority** #### File: defaults/main.yml -| Var | Type | Value |Choices |Required | Title | -|--------------|--------------|-------------|-------------|-------------|-------------| -| [`mtv_provider_api_version`](defaults/main.yml#L26) | str | `forklift.konveyor.io/v1beta1` | None | None | None | -| [`mtv_provider_auto_retrieve_cert`](defaults/main.yml#L33) | bool | `True` | None | None | None | -| [`mtv_provider_provider_namespace`](defaults/main.yml#L10) | str | `` | None | None | None | -| [`mtv_provider_provider_override`](defaults/main.yml#L29) | dict | `{}` | None | None | None | -| [`mtv_provider_provider_state`](defaults/main.yml#L23) | str | `present` | None | None | None | -| [`mtv_provider_provider_wait`](defaults/main.yml#L14) | bool | `True` | None | None | None | -| [`mtv_provider_provider_wait_poll`](defaults/main.yml#L20) | int | `10` | None | None | None | -| [`mtv_provider_provider_wait_timeout`](defaults/main.yml#L17) | int | `120` | None | None | None | -| [`mtv_provider_secure_logging`](defaults/main.yml#L2) | str | `{{ secure_logging ¦ default(true) }}` | None | None | None | -| [`mtv_provider_source_host`](defaults/main.yml#L41) | str | `` | None | None | None | -| [`mtv_provider_source_sdk_endpoint`](defaults/main.yml#L44) | str | `` | None | None | None | -| [`mtv_provider_source_type`](defaults/main.yml#L38) | str | `` | None | None | None | -| [`mtv_provider_source_vddk`](defaults/main.yml#L47) | str | `{{ hostvars[source_name]['vddk'] ¦ default({}) }}` | None | None | None | - +| Var | Type | Value |Required | Title | +|--------------|--------------|-------------|------------|-------------| +| [mtv_provider_secure_logging](defaults/main.yml#L6) | str | `{{ secure_logging ¦ default(true) }}` | False | Secure Logging | +| [mtv_provider_provider_namespace](defaults/main.yml#L13) | str | `` | False | Provider Namespace | +| [mtv_provider_provider_wait](defaults/main.yml#L19) | bool | `True` | False | Wait for Provider Ready | +| [mtv_provider_provider_wait_timeout](defaults/main.yml#L24) | int | `120` | False | Provider Wait Timeout | +| [mtv_provider_provider_wait_poll](defaults/main.yml#L29) | int | `10` | False | Provider Wait Poll Interval | +| [mtv_provider_provider_state](defaults/main.yml#L34) | str | `present` | False | Provider State | +| [mtv_provider_api_version](defaults/main.yml#L39) | str | `forklift.konveyor.io/v1beta1` | False | Forklift API Version | +| [mtv_provider_provider_override](defaults/main.yml#L44) | dict | `{}` | False | Provider Override | +| [mtv_provider_auto_retrieve_cert](defaults/main.yml#L51) | bool | `True` | False | Auto Retrieve Certificate | +| [mtv_provider_source_type](defaults/main.yml#L58) | str | `` | False | Source Type | +| [mtv_provider_source_host](defaults/main.yml#L66) | str | `` | True | Source Host | +| [mtv_provider_source_sdk_endpoint](defaults/main.yml#L72) | str | `` | False | Source SDK Endpoint | +| [mtv_provider_source_vddk](defaults/main.yml#L78) | str | `{{ hostvars[source_name]['vddk'] ¦ default({}) }}` | False | Source VDDK Configuration | +| [mtv_provider_managed_by_label](defaults/main.yml#L83) | str | `ansible-migration-factory` | False | Managed By Label | +
🖇️ Full descriptions for vars in defaults/main.yml
-`mtv_provider_api_version`: None -
-`mtv_provider_auto_retrieve_cert`: None -
-`mtv_provider_provider_namespace`: None -
-`mtv_provider_provider_override`: None -
-`mtv_provider_provider_state`: None -
-`mtv_provider_provider_wait`: None -
-`mtv_provider_provider_wait_poll`: None -
-`mtv_provider_provider_wait_timeout`: None -
-`mtv_provider_secure_logging`: None -
-`mtv_provider_source_host`: None -
-`mtv_provider_source_sdk_endpoint`: None -
-`mtv_provider_source_type`: None -
-`mtv_provider_source_vddk`: None -
+ + + + + + + + + + + + + + + + +
VarDescription
mtv_provider_secure_loggingWhether to enable secure logging for sensitive tasks.
mtv_provider_provider_namespace>-
mtv_provider_provider_waitWhether to wait for the Provider CR to reach Ready status after creation.
mtv_provider_provider_wait_timeoutSeconds to wait for the Provider to become Ready before failing.
mtv_provider_provider_wait_pollSeconds between status polls while waiting for Ready.
mtv_provider_provider_stateDesired state of the provider — present or absent.
mtv_provider_api_versionForklift API version for Provider CRs.
mtv_provider_provider_overrideOverride configuration merged into the Provider CR spec.
mtv_provider_auto_retrieve_cert>-
mtv_provider_source_type>-
mtv_provider_source_host>-
mtv_provider_source_sdk_endpointSDK endpoint path appended to the source host URL for VMware providers.
mtv_provider_source_vddkVDDK configuration dictionary from the source host vars.
mtv_provider_managed_by_labelValue of the app.kubernetes.io/managed-by label applied to CRs.

+
+ + + + ### Tasks -#### File: tasks/main.yml + +#### File: tasks/create_provider.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| Configure MTV provider for source-target pair | `block` | False | -| Validate inputs and resolve provider variables | `ansible.builtin.include_tasks` | False | -| Create provider secret and CR on target cluster | `ansible.builtin.include_tasks` | False | +| ---- | ------ | -------------- | +| create_provider ¦ Ensure provider secret exists | redhat.openshift.k8s | False | +| create_provider ¦ Ensure provider CR exists | redhat.openshift.k8s | False | +| create_provider ¦ Wait for provider to become Ready | kubernetes.core.k8s_info | True | +| create_provider ¦ Provider created successfully | ansible.builtin.debug | False | -#### File: tasks/create_provider.yml +#### File: tasks/main.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| create_provider ¦ Ensure provider secret exists | `redhat.openshift.k8s` | False | -| create_provider ¦ Ensure provider CR exists | `redhat.openshift.k8s` | False | -| create_provider ¦ Wait for provider to become Ready | `kubernetes.core.k8s_info` | True | -| create_provider ¦ Provider created successfully | `ansible.builtin.debug` | False | +| ---- | ------ | -------------- | +| Configure MTV provider for source-target pair | block | False | +| Validate inputs and resolve provider variables | ansible.builtin.include_tasks | False | +| Create provider secret and CR on target cluster | ansible.builtin.include_tasks | False | #### File: tasks/rescue_provider.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| rescue_provider ¦ Fetch provider status | `kubernetes.core.k8s_info` | False | -| rescue_provider ¦ Warn if cluster query failed | `ansible.builtin.debug` | True | -| rescue_provider ¦ Extract error details | `ansible.builtin.set_fact` | True | -| rescue_provider ¦ Display provider error status | `ansible.builtin.debug` | False | -| rescue_provider ¦ Fail with summary | `ansible.builtin.fail` | False | +| ---- | ------ | -------------- | +| rescue_provider ¦ Fetch provider status | kubernetes.core.k8s_info | False | +| rescue_provider ¦ Warn if cluster query failed | ansible.builtin.debug | True | +| rescue_provider ¦ Extract error details | ansible.builtin.set_fact | True | +| rescue_provider ¦ Display provider error status | ansible.builtin.debug | False | +| rescue_provider ¦ Fail with summary | ansible.builtin.fail | False | #### File: tasks/validate.yml | Name | Module | Has Conditions | -| ---- | ------ | --------- | -| validate ¦ Assert required survey variables are defined | `ansible.builtin.assert` | False | -| validate ¦ Assert target exists in AAP inventory | `ansible.builtin.assert` | False | -| validate ¦ Assert source exists in AAP inventory | `ansible.builtin.assert` | False | -| validate ¦ Assert source is mapped to this target | `ansible.builtin.assert` | False | -| validate ¦ Assert source host variable is defined | `ansible.builtin.assert` | False | -| validate ¦ Assert source credentials are injected | `ansible.builtin.assert` | False | -| validate ¦ Assert provider_override does not contain managed keys | `ansible.builtin.assert` | True | -| validate ¦ Assert source type is supported | `ansible.builtin.assert` | False | -| validate ¦ Check Forklift CRD exists on target cluster | `kubernetes.core.k8s_info` | False | -| validate ¦ Assert MTV operator is installed | `ansible.builtin.assert` | False | -| validate ¦ Resolve provider variables | `ansible.builtin.set_fact` | False | -| validate ¦ Retrieve source TLS certificate | `block` | True | -| validate ¦ Retrieve remote certificate from source | `community.crypto.get_certificate` | False | -| validate ¦ Store retrieved certificate | `ansible.builtin.set_fact` | False | -| validate ¦ Resolve effective certificate | `ansible.builtin.set_fact` | False | - -## Task Flow Graphs - -### Graph for create_provider.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| create_provider___Ensure_provider_secret_exists0[create provider ensure provider secret exists]:::task - create_provider___Ensure_provider_secret_exists0-->|Task| create_provider___Ensure_provider_CR_exists1[create provider ensure provider cr exists]:::task - create_provider___Ensure_provider_CR_exists1-->|Task| create_provider___Wait_for_provider_to_become_Ready2[create provider wait for provider to become
ready
When: **mtv provider provider wait bool**]:::task - create_provider___Wait_for_provider_to_become_Ready2-->|Task| create_provider___Provider_created_successfully3[create provider provider created successfully]:::task - create_provider___Provider_created_successfully3-->End -``` - -### Graph for main.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Block Start| Configure_MTV_provider_for_source_target_pair0_block_start_0[[configure mtv provider for source target pair]]:::block - Configure_MTV_provider_for_source_target_pair0_block_start_0-->|Include task| Validate_inputs_and_resolve_provider_variables_validate_yml_0[validate inputs and resolve provider variables
include_task: validate yml]:::includeTasks - Validate_inputs_and_resolve_provider_variables_validate_yml_0-->|Include task| Create_provider_secret_and_CR_on_target_cluster_create_provider_yml_1[create provider secret and cr on target cluster
include_task: create provider yml]:::includeTasks - Create_provider_secret_and_CR_on_target_cluster_create_provider_yml_1-.->|End of Block| Configure_MTV_provider_for_source_target_pair0_block_start_0 - Create_provider_secret_and_CR_on_target_cluster_create_provider_yml_1-->|Rescue Start| Configure_MTV_provider_for_source_target_pair0_rescue_start_0[configure mtv provider for source target pair]:::rescue - Configure_MTV_provider_for_source_target_pair0_rescue_start_0-->|Include task| Gather_provider_error_details_and_fail_rescue_provider_yml_0[gather provider error details and fail
include_task: rescue provider yml]:::includeTasks - Gather_provider_error_details_and_fail_rescue_provider_yml_0-.->|End of Rescue Block| Configure_MTV_provider_for_source_target_pair0_block_start_0 - Gather_provider_error_details_and_fail_rescue_provider_yml_0-->End -``` - -### Graph for rescue_provider.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| rescue_provider___Fetch_provider_status0[rescue provider fetch provider status]:::task - rescue_provider___Fetch_provider_status0-->|Task| rescue_provider___Warn_if_cluster_query_failed1[rescue provider warn if cluster query failed
When: **mtv provider failed result is failed**]:::task - rescue_provider___Warn_if_cluster_query_failed1-->|Task| rescue_provider___Extract_error_details2[rescue provider extract error details
When: **mtv provider failed result resources default
length 0**]:::task - rescue_provider___Extract_error_details2-->|Task| rescue_provider___Display_provider_error_status3[rescue provider display provider error status]:::task - rescue_provider___Display_provider_error_status3-->|Task| rescue_provider___Fail_with_summary4[rescue provider fail with summary]:::task - rescue_provider___Fail_with_summary4-->End -``` - -### Graph for validate.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| validate___Assert_required_survey_variables_are_defined0[validate assert required survey variables are
defined]:::task - validate___Assert_required_survey_variables_are_defined0-->|Task| validate___Assert_target_exists_in_AAP_inventory1[validate assert target exists in aap inventory]:::task - validate___Assert_target_exists_in_AAP_inventory1-->|Task| validate___Assert_source_exists_in_AAP_inventory2[validate assert source exists in aap inventory]:::task - validate___Assert_source_exists_in_AAP_inventory2-->|Task| validate___Assert_source_is_mapped_to_this_target3[validate assert source is mapped to this target]:::task - validate___Assert_source_is_mapped_to_this_target3-->|Task| validate___Assert_source_host_variable_is_defined4[validate assert source host variable is defined]:::task - validate___Assert_source_host_variable_is_defined4-->|Task| validate___Assert_source_credentials_are_injected5[validate assert source credentials are injected]:::task - validate___Assert_source_credentials_are_injected5-->|Task| validate___Assert_provider_override_does_not_contain_managed_keys6[validate assert provider override does not
contain managed keys
When: **mtv provider provider override length 0**]:::task - validate___Assert_provider_override_does_not_contain_managed_keys6-->|Task| validate___Assert_source_type_is_supported7[validate assert source type is supported]:::task - validate___Assert_source_type_is_supported7-->|Task| validate___Check_Forklift_CRD_exists_on_target_cluster8[validate check forklift crd exists on target
cluster]:::task - validate___Check_Forklift_CRD_exists_on_target_cluster8-->|Task| validate___Assert_MTV_operator_is_installed9[validate assert mtv operator is installed]:::task - validate___Assert_MTV_operator_is_installed9-->|Task| validate___Resolve_provider_variables10[validate resolve provider variables]:::task - validate___Resolve_provider_variables10-->|Block Start| validate___Retrieve_source_TLS_certificate11_block_start_0[[validate retrieve source tls certificate
When: **mtv provider auto retrieve cert bool and not mf
insecure skip tls verify default false bool
and mf source certificate default trim
length 0**]]:::block - validate___Retrieve_source_TLS_certificate11_block_start_0-->|Task| validate___Retrieve_remote_certificate_from_source0[validate retrieve remote certificate from source]:::task - validate___Retrieve_remote_certificate_from_source0-->|Task| validate___Store_retrieved_certificate1[validate store retrieved certificate]:::task - validate___Store_retrieved_certificate1-.->|End of Block| validate___Retrieve_source_TLS_certificate11_block_start_0 - validate___Store_retrieved_certificate1-->|Task| validate___Resolve_effective_certificate12[validate resolve effective certificate]:::task - validate___Resolve_effective_certificate12-->End -``` +| ---- | ------ | -------------- | +| validate ¦ Assert required survey variables are defined | ansible.builtin.assert | False | +| validate ¦ Assert target exists in AAP inventory | ansible.builtin.assert | False | +| validate ¦ Assert source exists in AAP inventory | ansible.builtin.assert | False | +| validate ¦ Assert source is mapped to this target | ansible.builtin.assert | False | +| validate ¦ Assert source host variable is defined | ansible.builtin.assert | False | +| validate ¦ Assert source credentials are injected | ansible.builtin.assert | False | +| validate ¦ Assert provider_override does not contain managed keys | ansible.builtin.assert | True | +| validate ¦ Assert source type is supported | ansible.builtin.assert | False | +| validate ¦ Check Forklift CRD exists on target cluster | kubernetes.core.k8s_info | False | +| validate ¦ Assert MTV operator is installed | ansible.builtin.assert | False | +| validate ¦ Resolve provider variables | ansible.builtin.set_fact | False | +| validate ¦ Retrieve source TLS certificate | block | True | +| validate ¦ Retrieve remote certificate from source | community.crypto.get_certificate | False | +| validate ¦ Store retrieved certificate | ansible.builtin.set_fact | False | +| validate ¦ Resolve effective certificate | ansible.builtin.set_fact | False | + + -## Author Information + + + +## Author Information Red Hat -## License +#### License GPL-3.0-or-later -## Minimum Ansible Version +#### Minimum Ansible Version 2.16 -## Platforms +#### Platforms No platforms specified. - \ No newline at end of file +#### Dependencies + +No dependencies specified. + diff --git a/roles/mtv_provider/defaults/main.yml b/roles/mtv_provider/defaults/main.yml index 3d76ccf..fb6c48b 100644 --- a/roles/mtv_provider/defaults/main.yml +++ b/roles/mtv_provider/defaults/main.yml @@ -1,51 +1,84 @@ --- -mtv_provider_secure_logging: "{{ secure_logging | default(true) }}" -# --------------------------------------------------------------------------- -# Provider configuration — controls how MTV providers are created -# --------------------------------------------------------------------------- +# title: Secure Logging +# required: False +# description: Whether to enable secure logging for sensitive tasks. +mtv_provider_secure_logging: "{{ secure_logging | default(true) }}" -# Namespace where the provider will be created. -# Resolved from target host vars in AAP inventory; override if needed. +# title: Provider Namespace +# required: False +# description: >- +# Namespace where the provider will be created. Resolved from +# target host vars in AAP inventory; override if needed. mtv_provider_provider_namespace: >- {{ hostvars[target_name]['mtv_namespace'] | default('openshift-mtv') }} -# Whether to wait for the Provider CR to reach Ready status after creation. +# title: Wait for Provider Ready +# required: False +# description: Whether to wait for the Provider CR to reach Ready status after creation. mtv_provider_provider_wait: true -# Seconds to wait for the Provider to become Ready before failing. +# title: Provider Wait Timeout +# required: False +# description: Seconds to wait for the Provider to become Ready before failing. mtv_provider_provider_wait_timeout: 120 -# Seconds between status polls while waiting for Ready. +# title: Provider Wait Poll Interval +# required: False +# description: Seconds between status polls while waiting for Ready. mtv_provider_provider_wait_poll: 10 -# Desired state of the provider — present or absent. +# title: Provider State +# required: False +# description: Desired state of the provider — present or absent. mtv_provider_provider_state: present -# Forklift API version for Provider CRs. +# title: Forklift API Version +# required: False +# description: Forklift API version for Provider CRs. mtv_provider_api_version: forklift.konveyor.io/v1beta1 -# Override configuration merged into the Provider CR spec. +# title: Provider Override +# required: False +# description: Override configuration merged into the Provider CR spec. mtv_provider_provider_override: {} -# Whether to automatically retrieve the source TLS certificate -# when insecureSkipTlsVerify is false and no certificate is provided. +# title: Auto Retrieve Certificate +# required: False +# description: >- +# Whether to automatically retrieve the source TLS certificate +# when insecureSkipTlsVerify is false and no certificate is provided. mtv_provider_auto_retrieve_cert: true -# --------------------------------------------------------------------------- -# Source metadata — resolved from AAP inventory host vars -# --------------------------------------------------------------------------- +# title: Source Type +# required: False +# description: >- +# Type of the source environment. Resolved from the source host's +# type variable in the AAP inventory. Supported values: vmware, ovirt. mtv_provider_source_type: >- {{ hostvars[source_name]['type'] | default('vmware') }} +# title: Source Host +# required: True +# description: >- +# Hostname or URL of the source hypervisor. Resolved from the +# source host's host variable in the AAP inventory. mtv_provider_source_host: >- {{ hostvars[source_name]['host'] }} +# title: Source SDK Endpoint +# required: False +# description: SDK endpoint path appended to the source host URL for VMware providers. mtv_provider_source_sdk_endpoint: >- {{ hostvars[source_name]['sdk_endpoint'] | default('/sdk') }} +# title: Source VDDK Configuration +# required: False +# description: VDDK configuration dictionary from the source host vars. mtv_provider_source_vddk: "{{ hostvars[source_name]['vddk'] | default({}) }}" -# Value of the app.kubernetes.io/managed-by label applied to CRs. +# title: Managed By Label +# required: False +# description: Value of the app.kubernetes.io/managed-by label applied to CRs. mtv_provider_managed_by_label: ansible-migration-factory ... From df785d2ef0e0b8eae6a3b11b86a9e2edf82e52fa Mon Sep 17 00:00:00 2001 From: John Best Date: Wed, 2 Sep 2026 11:55:45 -0500 Subject: [PATCH 4/6] docs(v2): regenerate all READMEs using CI docsible template Re-run update-documentation.sh to regenerate READMEs with the same custom template used by CI, fixing pre-commit check failures caused by docsible version/template mismatch. Co-authored-by: Cursor --- roles/aap_seed/README.md | 1397 +++++++++-------- roles/mtv_provider/README.md | 481 +++--- roles/mtv_query_inventory/README.md | 2 +- roles/utility_aap_deploy/README.md | 4 +- .../README.md | 301 ++-- 5 files changed, 1155 insertions(+), 1030 deletions(-) diff --git a/roles/aap_seed/README.md b/roles/aap_seed/README.md index 67cba70..1a4dc95 100644 --- a/roles/aap_seed/README.md +++ b/roles/aap_seed/README.md @@ -1,687 +1,828 @@ - -# 📃 Role overview - ## aap_seed - +``` +Role belongs to infra/openshift_virtualization_migration +Namespace - infra +Collection - openshift_virtualization_migration +Version - 1.25.0 +Repository - https://github.com/redhat-cop/openshift_virtualization_migration +``` Description: Seed AAP with Migration Factory Configuration as Code content -| Field | Value | -|--------------------- |-----------------| -| Readme update | 2026/09/02 | - - - +### Argument Specifications
-🧩 Argument Specifications in meta/argument_specs +🧩 Argument Specifications in `meta/argument_specs` #### Key: main -**Description**: -- Dynamically builds all AAP Configuration as Code objects from the Ansible inventory and role defaults, syncs the SCM project, and pushes everything to AAP via infra.aap_configuration.dispatch. -- Object types managed include credential types, credentials, inventories, hosts, groups, projects, job templates, execution environments, and organizations. -- Target cluster credentials use the built-in AAP credential type "OpenShift or Kubernetes API Bearer Token". -- Each object type can be skipped with a C(_create) toggle or replaced entirely by overriding the corresponding C(aap_seed_controller_*) variable. - - -**Options**: - - - - **aap_seed_hostname** - - **Required**: False - - **Type**: str - - **Default**: none - - - **Description**: FQDN or URL of the AAP controller API endpoint. Defaults to C(aap_hostname) from inventory. - - - - - - **aap_seed_username** - - **Required**: False - - **Type**: str - - **Default**: none - - - **Description**: Username for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_username) from inventory. - - - - - - **aap_seed_password** - - **Required**: False - - **Type**: str - - **Default**: none - - - **Description**: Password for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_password) from inventory. - - - - - - **aap_seed_token** - - **Required**: False - - **Type**: str - - **Default**: none - - - **Description**: OAuth token for AAP controller authentication. Mutually exclusive with I(aap_seed_username)/I(aap_seed_password). Defaults to C(aap_token) from inventory. - - - - - - **aap_seed_validate_certs** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Whether to validate TLS certificates when connecting to AAP. Defaults to C(aap_validate_certs) from inventory, or C(true) if unset. - - - - - - **aap_seed_secure_logging** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Suppress task output for credential loops to prevent secrets from leaking to logs. Set to C(false) when debugging credential construction. - - - - - - **aap_seed_org_name** - - **Required**: False - - **Type**: str - - **Default**: Default - - - **Description**: AAP organization that owns the project, inventory, and credentials. - - - - - - **aap_seed_project_name** - - **Required**: False - - **Type**: str - - **Default**: OpenShift Virtualization Migration - - - **Description**: Name of the SCM-backed project created in AAP. - - - - - - **aap_seed_project_scm_url** - - **Required**: False - - **Type**: str - - **Default**: https://github.com/redhat-cop/openshift_virtualization_migration.git - - - **Description**: Git URL used as the project SCM source. Defaults to C(aap_project_scm_url) from inventory. - - - - - - **aap_seed_project_scm_branch** - - **Required**: False - - **Type**: str - - **Default**: v2 - - - **Description**: Git branch or tag to checkout for the project. Defaults to C(aap_project_scm_branch) from inventory. - - - - - - **aap_seed_project_sync_timeout** - - **Required**: False - - **Type**: int - - **Default**: 120 - - - **Description**: Maximum seconds to wait for the SCM project sync to complete. - - - - - - **aap_seed_inventory_name** - - **Required**: False - - **Type**: str - - **Default**: OpenShift Virtualization Migration - - - **Description**: Name of the inventory created in AAP. Source and target hosts are added to this inventory. - - - - - - **aap_seed_execution_environment** - - **Required**: False - - **Type**: str - - **Default**: Default execution environment - - - **Description**: Execution environment assigned to job templates. - - - - - - **aap_seed_source_credential_type** - - **Required**: False - - **Type**: str - - **Default**: Migration Factory - Source Environment - - - **Description**: Name of the custom credential type created in AAP for source hypervisor environments (vSphere, RHV). - - - - - - **aap_seed_target_credential_type** - - **Required**: False - - **Type**: str - - **Default**: OpenShift or Kubernetes API Bearer Token - - - **Description**: AAP credential type used for target OpenShift clusters. Defaults to the built-in bearer token type. Each target host should set I(openshift_api_key) or I(openshift_temporary_api_key). - - - - - - **aap_seed_project_credential** - - **Required**: False - - **Type**: str - - **Default**: - - - **Description**: Name of the Git credential to create and attach to the SCM project. Leave empty to skip. Defaults to C(aap_project_credential) from inventory. - - - - - - **aap_seed_git_username** - - **Required**: False - - **Type**: str - - **Default**: - - - **Description**: Git username for HTTPS authentication. Defaults to C(aap_git_username) from inventory. - - - - - - **aap_seed_git_password** - - **Required**: False - - **Type**: str - - **Default**: - - - **Description**: Git password or personal access token. Defaults to C(aap_git_password) from inventory. - - - - - - **aap_seed_git_ssh_key** - - **Required**: False - - **Type**: str - - **Default**: - - - **Description**: SSH private key for Git authentication. Defaults to C(aap_git_ssh_key) from inventory. - - - - - - **aap_seed_git_ssh_key_unlock** - - **Required**: False - - **Type**: str - - **Default**: - - - **Description**: Passphrase to unlock the SSH key. Defaults to C(aap_git_ssh_key_unlock) from inventory. - - - - - - **aap_seed_mtv_provider_template_name** - - **Required**: False - - **Type**: str - - **Default**: OpenShift Virtualization Migration - MTV Provider - - - **Description**: Name of the MTV Provider job template created in AAP. - - - - - - **aap_seed_mtv_provider_playbook** - - **Required**: False - - **Type**: str - - **Default**: playbooks/vmf_mtv_provider.yml - - - **Description**: Playbook path for the MTV Provider job template. - - - - - - **aap_seed_source_inventory_group** - - **Required**: False - - **Type**: str - - **Default**: vm_sources - - - **Description**: Ansible inventory group containing source hypervisor hosts. Each host in this group becomes an AAP inventory host and a source-environment credential. - - - - - - **aap_seed_target_inventory_group** - - **Required**: False - - **Type**: str - - **Default**: migration_clusters - - - **Description**: Ansible inventory group containing target OpenShift cluster hosts. Each host in this group becomes an AAP inventory host and a target-cluster credential. - - - - - - **aap_seed_organizations_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Create organizations in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_organizations) is non-empty. - - - - - - **aap_seed_credential_types_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Create the custom source credential type in AAP. Set to C(false) to skip. - - - - - - **aap_seed_credentials_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Build and push credentials for source and target hosts. Set to C(false) to skip. - - - - - - **aap_seed_inventories_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Create the AAP inventory. Set to C(false) to skip. - - - - - - **aap_seed_hosts_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Build and push inventory hosts and groups from the Ansible inventory. Set to C(false) to skip. - - - - - - **aap_seed_projects_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Create and sync the SCM project. Set to C(false) to skip. - - - - - - **aap_seed_execution_environments_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Create execution environments in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_execution_environments) is non-empty. - - - - - - **aap_seed_templates_create** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Create job templates. Set to C(false) to skip. - - - - - - **aap_seed_controller_organizations** - - **Required**: False - - **Type**: list - - **Default**: [] - - - **Description**: List of AAP organization definitions. Empty by default; populate to create organizations before other objects. Each entry follows the C(infra.aap_configuration.gateway_organizations) schema. - - - - - - **aap_seed_controller_execution_environments** - - **Required**: False - - **Type**: list - - **Default**: [] - - - **Description**: List of AAP execution environment definitions. Empty by default; populate to create custom EEs. Each entry follows the C(infra.aap_configuration.controller_execution_environments) schema (name, image, etc.). - - - - - - **aap_seed_controller_inventories** - - **Required**: False - - **Type**: list - - **Default**: none - - - **Description**: List of AAP inventory definitions. Override to replace the default Migration Factory inventory. - - - - - - **aap_seed_controller_projects** - - **Required**: False - - **Type**: list - - **Default**: none - - - **Description**: List of AAP project definitions. Override to replace the default SCM project. - - - - - - **aap_seed_controller_templates** - - **Required**: False - - **Type**: list - - **Default**: none - - - **Description**: List of AAP job template definitions. Override to replace the default migrate template. - - - - - +* **Description**: ['Dynamically builds all AAP Configuration as Code objects from the Ansible inventory and role defaults, syncs the SCM project, and pushes everything to AAP via infra.aap_configuration.dispatch.', 'Object types managed include credential types, credentials, inventories, hosts, groups, projects, job templates, execution environments, and organizations.', 'Target cluster credentials use the built-in AAP credential type "OpenShift or Kubernetes API Bearer Token".', 'Each object type can be skipped with a C(_create) toggle or replaced entirely by overriding the corresponding C(aap_seed_controller_*) variable.'] +* **Options**: + * **aap_seed_controller_execution_environments**: + * **Required**: False + * **Type**: list + * **Default**: [] + * **Description**: List of AAP execution environment definitions. Empty by default; populate to create custom EEs. Each entry follows the C(infra.aap_configuration.controller_execution_environments) schema (name, image, etc.). + * **aap_seed_controller_inventories**: + * **Required**: False + * **Type**: list + * **Default**: none + * **Description**: List of AAP inventory definitions. Override to replace the default Migration Factory inventory. + * **aap_seed_controller_organizations**: + * **Required**: False + * **Type**: list + * **Default**: [] + * **Description**: List of AAP organization definitions. Empty by default; populate to create organizations before other objects. Each entry follows the C(infra.aap_configuration.gateway_organizations) schema. + * **aap_seed_controller_projects**: + * **Required**: False + * **Type**: list + * **Default**: none + * **Description**: List of AAP project definitions. Override to replace the default SCM project. + * **aap_seed_controller_templates**: + * **Required**: False + * **Type**: list + * **Default**: none + * **Description**: List of AAP job template definitions. Override to replace the default migrate template. + * **aap_seed_credential_types_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Create the custom source credential type in AAP. Set to C(false) to skip. + * **aap_seed_credentials_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Build and push credentials for source and target hosts. Set to C(false) to skip. + * **aap_seed_execution_environment**: + * **Required**: False + * **Type**: str + * **Default**: Default execution environment + * **Description**: Execution environment assigned to job templates. + * **aap_seed_execution_environments_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Create execution environments in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_execution_environments) is non-empty. + * **aap_seed_git_password**: + * **Required**: False + * **Type**: str + * **Default**: + * **Description**: Git password or personal access token. Defaults to C(aap_git_password) from inventory. + * **aap_seed_git_ssh_key**: + * **Required**: False + * **Type**: str + * **Default**: + * **Description**: SSH private key for Git authentication. Defaults to C(aap_git_ssh_key) from inventory. + * **aap_seed_git_ssh_key_unlock**: + * **Required**: False + * **Type**: str + * **Default**: + * **Description**: Passphrase to unlock the SSH key. Defaults to C(aap_git_ssh_key_unlock) from inventory. + * **aap_seed_git_username**: + * **Required**: False + * **Type**: str + * **Default**: + * **Description**: Git username for HTTPS authentication. Defaults to C(aap_git_username) from inventory. + * **aap_seed_hostname**: + * **Required**: False + * **Type**: str + * **Default**: none + * **Description**: FQDN or URL of the AAP controller API endpoint. Defaults to C(aap_hostname) from inventory. + * **aap_seed_hosts_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Build and push inventory hosts and groups from the Ansible inventory. Set to C(false) to skip. + * **aap_seed_inventories_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Create the AAP inventory. Set to C(false) to skip. + * **aap_seed_inventory_name**: + * **Required**: False + * **Type**: str + * **Default**: OpenShift Virtualization Migration + * **Description**: Name of the inventory created in AAP. Source and target hosts are added to this inventory. + * **aap_seed_mtv_provider_playbook**: + * **Required**: False + * **Type**: str + * **Default**: playbooks/vmf_mtv_provider.yml + * **Description**: Playbook path for the MTV Provider job template. + * **aap_seed_mtv_provider_template_name**: + * **Required**: False + * **Type**: str + * **Default**: OpenShift Virtualization Migration - MTV Provider + * **Description**: Name of the MTV Provider job template created in AAP. + * **aap_seed_org_name**: + * **Required**: False + * **Type**: str + * **Default**: Default + * **Description**: AAP organization that owns the project, inventory, and credentials. + * **aap_seed_organizations_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Create organizations in AAP. Set to C(false) to skip. Only applies when I(aap_seed_controller_organizations) is non-empty. + * **aap_seed_password**: + * **Required**: False + * **Type**: str + * **Default**: none + * **Description**: Password for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_password) from inventory. + * **aap_seed_project_credential**: + * **Required**: False + * **Type**: str + * **Default**: + * **Description**: Name of the Git credential to create and attach to the SCM project. Leave empty to skip. Defaults to C(aap_project_credential) from inventory. + * **aap_seed_project_name**: + * **Required**: False + * **Type**: str + * **Default**: OpenShift Virtualization Migration + * **Description**: Name of the SCM-backed project created in AAP. + * **aap_seed_project_scm_branch**: + * **Required**: False + * **Type**: str + * **Default**: v2 + * **Description**: Git branch or tag to checkout for the project. Defaults to C(aap_project_scm_branch) from inventory. + * **aap_seed_project_scm_url**: + * **Required**: False + * **Type**: str + * **Default**: https://github.com/redhat-cop/openshift_virtualization_migration.git + * **Description**: Git URL used as the project SCM source. Defaults to C(aap_project_scm_url) from inventory. + * **aap_seed_project_sync_timeout**: + * **Required**: False + * **Type**: int + * **Default**: 120 + * **Description**: Maximum seconds to wait for the SCM project sync to complete. + * **aap_seed_projects_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Create and sync the SCM project. Set to C(false) to skip. + * **aap_seed_secure_logging**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Suppress task output for credential loops to prevent secrets from leaking to logs. Set to C(false) when debugging credential construction. + * **aap_seed_source_credential_type**: + * **Required**: False + * **Type**: str + * **Default**: Migration Factory - Source Environment + * **Description**: Name of the custom credential type created in AAP for source hypervisor environments (vSphere, RHV). + * **aap_seed_source_inventory_group**: + * **Required**: False + * **Type**: str + * **Default**: vm_sources + * **Description**: Ansible inventory group containing source hypervisor hosts. Each host in this group becomes an AAP inventory host and a source-environment credential. + * **aap_seed_target_credential_type**: + * **Required**: False + * **Type**: str + * **Default**: OpenShift or Kubernetes API Bearer Token + * **Description**: AAP credential type used for target OpenShift clusters. Defaults to the built-in bearer token type. Each target host should set I(openshift_api_key) or I(openshift_temporary_api_key). + * **aap_seed_target_inventory_group**: + * **Required**: False + * **Type**: str + * **Default**: migration_clusters + * **Description**: Ansible inventory group containing target OpenShift cluster hosts. Each host in this group becomes an AAP inventory host and a target-cluster credential. + * **aap_seed_templates_create**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Create job templates. Set to C(false) to skip. + * **aap_seed_token**: + * **Required**: False + * **Type**: str + * **Default**: none + * **Description**: OAuth token for AAP controller authentication. Mutually exclusive with I(aap_seed_username)/I(aap_seed_password). Defaults to C(aap_token) from inventory. + * **aap_seed_username**: + * **Required**: False + * **Type**: str + * **Default**: none + * **Description**: Username for AAP controller authentication. Mutually exclusive with I(aap_seed_token). Defaults to C(aap_username) from inventory. + * **aap_seed_validate_certs**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Whether to validate TLS certificates when connecting to AAP. Defaults to C(aap_validate_certs) from inventory, or C(true) if unset.
- - - ### Defaults **These are static variables with lower priority** #### File: defaults/main.yml -| Var | Type | Value |Required | Title | -|--------------|--------------|-------------|------------|-------------| -| [aap_seed_hostname](defaults/main.yml#L6) | str | `{{ aap_hostname }}` | True | AAP Hostname | -| [aap_seed_username](defaults/main.yml#L11) | str | `{{ aap_username ¦ default(omit) }}` | False | AAP Username | -| [aap_seed_password](defaults/main.yml#L16) | str | `{{ aap_password ¦ default(omit) }}` | False | AAP Password | -| [aap_seed_token](defaults/main.yml#L21) | str | `{{ aap_token ¦ default(omit) }}` | False | AAP Token | -| [aap_seed_validate_certs](defaults/main.yml#L26) | str | `{{ aap_validate_certs ¦ default(true) }}` | False | Validate Certificates | -| [aap_seed_secure_logging](defaults/main.yml#L33) | bool | `True` | False | Secure Logging | -| [aap_seed_org_name](defaults/main.yml#L38) | str | `Default` | False | Organization Name | -| [aap_seed_project_name](defaults/main.yml#L43) | str | `OpenShift Virtualization Migration` | False | Project Name | -| [aap_seed_project_scm_url](defaults/main.yml#L48) | str | `` | False | Project SCM URL | -| [aap_seed_project_scm_branch](defaults/main.yml#L55) | str | `{{ aap_project_scm_branch ¦ default('v2') }}` | False | Project SCM Branch | -| [aap_seed_project_sync_timeout](defaults/main.yml#L60) | int | `120` | False | Project Sync Timeout | -| [aap_seed_inventory_name](defaults/main.yml#L65) | str | `OpenShift Virtualization Migration` | False | Inventory Name | -| [aap_seed_execution_environment](defaults/main.yml#L70) | str | `{{ aap_execution_environment ¦ default('Default execution environment') }}` | False | Execution Environment | -| [aap_seed_source_credential_type](defaults/main.yml#L75) | str | `Migration Factory - Source Environment` | False | Source Credential Type | -| [aap_seed_target_credential_type](defaults/main.yml#L80) | str | `OpenShift or Kubernetes API Bearer Token` | False | Target Credential Type | -| [aap_seed_source_inventory_group](defaults/main.yml#L85) | str | `vm_sources` | False | Source Inventory Group | -| [aap_seed_target_inventory_group](defaults/main.yml#L90) | str | `migration_clusters` | False | Target Inventory Group | -| [aap_seed_project_credential](defaults/main.yml#L95) | str | `{{ aap_project_credential ¦ default('') }}` | False | Project Credential | -| [aap_seed_git_username](defaults/main.yml#L100) | str | `{{ aap_git_username ¦ default('') }}` | False | Git Username | -| [aap_seed_git_password](defaults/main.yml#L105) | str | `{{ aap_git_password ¦ default('') }}` | False | Git Password | -| [aap_seed_git_ssh_key](defaults/main.yml#L110) | str | `{{ aap_git_ssh_key ¦ default('') }}` | False | Git SSH Key | -| [aap_seed_git_ssh_key_unlock](defaults/main.yml#L115) | str | `{{ aap_git_ssh_key_unlock ¦ default('') }}` | False | Git SSH Key Unlock | -| [aap_seed_migrate_template_name](defaults/main.yml#L120) | str | `OpenShift Virtualization Migration - Migrate` | False | Migrate Template Name | -| [aap_seed_migrate_playbook](defaults/main.yml#L125) | str | `playbooks/vmf_migrate.yml` | False | Migrate Playbook | -| [aap_seed_mtv_provider_template_name](defaults/main.yml#L130) | str | `OpenShift Virtualization Migration - MTV Provider` | False | MTV Provider Template Name | -| [aap_seed_mtv_provider_playbook](defaults/main.yml#L135) | str | `playbooks/vmf_mtv_provider.yml` | False | MTV Provider Playbook | -| [aap_seed_common_survey_spec](defaults/main.yml#L142) | dict | `{}` | False | Common Survey Spec | -| [aap_seed_common_survey_spec.**name**](defaults/main.yml#L143) | str | | None | None | -| [aap_seed_common_survey_spec.**description**](defaults/main.yml#L144) | str | | None | None | -| [aap_seed_common_survey_spec.**spec**](defaults/main.yml#L145) | list | `[]` | None | None | -| [aap_seed_common_survey_spec.spec.**0**](defaults/main.yml#L146) | dict | `{}` | None | None | -| [aap_seed_common_survey_spec.spec.0.**question_name**](defaults/main.yml#L146) | str | `Source Name` | None | None | -| [aap_seed_common_survey_spec.spec.0.**question_description**](defaults/main.yml#L147) | str | `` | None | None | -| [aap_seed_common_survey_spec.spec.0.**variable**](defaults/main.yml#L151) | str | `source_name` | None | None | -| [aap_seed_common_survey_spec.spec.0.**type**](defaults/main.yml#L152) | str | `text` | None | None | -| [aap_seed_common_survey_spec.spec.0.**required**](defaults/main.yml#L153) | bool | `True` | None | None | -| [aap_seed_common_survey_spec.spec.**1**](defaults/main.yml#L154) | dict | `{}` | None | None | -| [aap_seed_common_survey_spec.spec.1.**question_name**](defaults/main.yml#L154) | str | `Target Name` | None | None | -| [aap_seed_common_survey_spec.spec.1.**question_description**](defaults/main.yml#L155) | str | `` | None | None | -| [aap_seed_common_survey_spec.spec.1.**variable**](defaults/main.yml#L159) | str | `target_name` | None | None | -| [aap_seed_common_survey_spec.spec.1.**type**](defaults/main.yml#L160) | str | `text` | None | None | -| [aap_seed_common_survey_spec.spec.1.**required**](defaults/main.yml#L161) | bool | `True` | None | None | -| [aap_seed_organizations_create](defaults/main.yml#L166) | bool | `True` | False | Create Organizations | -| [aap_seed_credential_types_create](defaults/main.yml#L171) | bool | `True` | False | Create Credential Types | -| [aap_seed_credentials_create](defaults/main.yml#L176) | bool | `True` | False | Create Credentials | -| [aap_seed_inventories_create](defaults/main.yml#L181) | bool | `True` | False | Create Inventories | -| [aap_seed_hosts_create](defaults/main.yml#L186) | bool | `True` | False | Create Hosts | -| [aap_seed_projects_create](defaults/main.yml#L191) | bool | `True` | False | Create Projects | -| [aap_seed_execution_environments_create](defaults/main.yml#L196) | bool | `True` | False | Create Execution Environments | -| [aap_seed_templates_create](defaults/main.yml#L201) | bool | `True` | False | Create Templates | -| [aap_seed_controller_organizations](defaults/main.yml#L206) | list | `[]` | False | Controller Organizations | -| [aap_seed_controller_credential_types](defaults/main.yml#L213) | list | `[]` | False | Controller Credential Types | -| [aap_seed_controller_credential_types.**0**](defaults/main.yml#L214) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.**name**](defaults/main.yml#L214) | str | `{{ aap_seed_source_credential_type }}` | None | None | -| [aap_seed_controller_credential_types.0.**organization**](defaults/main.yml#L215) | str | `{{ aap_seed_org_name }}` | None | None | -| [aap_seed_controller_credential_types.0.**kind**](defaults/main.yml#L216) | str | `cloud` | None | None | -| [aap_seed_controller_credential_types.0.**inputs**](defaults/main.yml#L217) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.inputs.**fields**](defaults/main.yml#L218) | list | `[]` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.**0**](defaults/main.yml#L219) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.0.**id**](defaults/main.yml#L219) | str | `host` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.0.**type**](defaults/main.yml#L220) | str | `string` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.0.**label**](defaults/main.yml#L221) | str | `Hostname or IP` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.**1**](defaults/main.yml#L222) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.1.**id**](defaults/main.yml#L222) | str | `username` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.1.**type**](defaults/main.yml#L223) | str | `string` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.1.**label**](defaults/main.yml#L224) | str | `Username` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.**2**](defaults/main.yml#L225) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.2.**id**](defaults/main.yml#L225) | str | `password` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.2.**type**](defaults/main.yml#L226) | str | `string` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.2.**label**](defaults/main.yml#L227) | str | `Password` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.2.**secret**](defaults/main.yml#L228) | bool | `True` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.**3**](defaults/main.yml#L229) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.3.**id**](defaults/main.yml#L229) | str | `certificate` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.3.**type**](defaults/main.yml#L230) | str | `string` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.3.**label**](defaults/main.yml#L231) | str | `SSL/TLS CA Certificate` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.3.**multiline**](defaults/main.yml#L232) | bool | `True` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.3.**secret**](defaults/main.yml#L233) | bool | `True` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.**4**](defaults/main.yml#L234) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.4.**id**](defaults/main.yml#L234) | str | `insecure_skip_tls_verify` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.4.**type**](defaults/main.yml#L235) | str | `boolean` | None | None | -| [aap_seed_controller_credential_types.0.inputs.fields.4.**label**](defaults/main.yml#L236) | str | `Insecure Skip TLS Verify` | None | None | -| [aap_seed_controller_credential_types.0.inputs.**required**](defaults/main.yml#L237) | list | `[]` | None | None | -| [aap_seed_controller_credential_types.0.inputs.required.**0**](defaults/main.yml#L238) | str | `host` | None | None | -| [aap_seed_controller_credential_types.0.inputs.required.**1**](defaults/main.yml#L239) | str | `username` | None | None | -| [aap_seed_controller_credential_types.0.inputs.required.**2**](defaults/main.yml#L240) | str | `password` | None | None | -| [aap_seed_controller_credential_types.0.**injectors**](defaults/main.yml#L241) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.injectors.**extra_vars**](defaults/main.yml#L242) | dict | `{}` | None | None | -| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_host**](defaults/main.yml#L243) | str | `{% raw %}{ { host }}{% endraw %}` | None | None | -| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_username**](defaults/main.yml#L244) | str | `{% raw %}{ { username }}{% endraw %}` | None | None | -| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_password**](defaults/main.yml#L245) | str | `{% raw %}{ { password }}{% endraw %}` | None | None | -| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_source_certificate**](defaults/main.yml#L246) | str | `{% raw %}{ { certificate }}{% endraw %}` | None | None | -| [aap_seed_controller_credential_types.0.injectors.extra_vars.**mf_insecure_skip_tls_verify**](defaults/main.yml#L247) | str | `{% raw %}{ { insecure_skip_tls_verify }}{% endraw %}` | None | None | -| [aap_seed_controller_inventories](defaults/main.yml#L252) | list | `[]` | False | Controller Inventories | -| [aap_seed_controller_inventories.**0**](defaults/main.yml#L253) | dict | `{}` | None | None | -| [aap_seed_controller_inventories.0.**name**](defaults/main.yml#L253) | str | `{{ aap_seed_inventory_name }}` | None | None | -| [aap_seed_controller_inventories.0.**organization**](defaults/main.yml#L254) | str | `{{ aap_seed_org_name }}` | None | None | -| [aap_seed_controller_projects](defaults/main.yml#L259) | list | `[]` | False | Controller Projects | -| [aap_seed_controller_projects.**0**](defaults/main.yml#L260) | dict | `{}` | None | None | -| [aap_seed_controller_projects.0.**name**](defaults/main.yml#L260) | str | `{{ aap_seed_project_name }}` | None | None | -| [aap_seed_controller_projects.0.**organization**](defaults/main.yml#L261) | str | `{{ aap_seed_org_name }}` | None | None | -| [aap_seed_controller_projects.0.**scm_type**](defaults/main.yml#L262) | str | `git` | None | None | -| [aap_seed_controller_projects.0.**scm_url**](defaults/main.yml#L263) | str | `{{ aap_seed_project_scm_url }}` | None | None | -| [aap_seed_controller_projects.0.**scm_branch**](defaults/main.yml#L264) | str | `{{ aap_seed_project_scm_branch }}` | None | None | -| [aap_seed_controller_projects.0.**scm_update_on_launch**](defaults/main.yml#L265) | bool | `True` | None | None | -| [aap_seed_controller_projects.0.**credential**](defaults/main.yml#L266) | str | `{{ aap_seed_project_credential ¦ default(omit, true) }}` | None | None | -| [aap_seed_controller_execution_environments](defaults/main.yml#L273) | list | `[]` | False | Controller Execution Environments | -| [aap_seed_controller_templates](defaults/main.yml#L280) | list | `[]` | False | Controller Templates | -| [aap_seed_controller_templates.**0**](defaults/main.yml#L281) | dict | `{}` | None | None | -| [aap_seed_controller_templates.0.**name**](defaults/main.yml#L281) | str | `{{ aap_seed_migrate_template_name }}` | None | None | -| [aap_seed_controller_templates.0.**organization**](defaults/main.yml#L282) | str | `{{ aap_seed_org_name }}` | None | None | -| [aap_seed_controller_templates.0.**project**](defaults/main.yml#L283) | str | `{{ aap_seed_project_name }}` | None | None | -| [aap_seed_controller_templates.0.**playbook**](defaults/main.yml#L284) | str | `{{ aap_seed_migrate_playbook }}` | None | None | -| [aap_seed_controller_templates.0.**inventory**](defaults/main.yml#L285) | str | `{{ aap_seed_inventory_name }}` | None | None | -| [aap_seed_controller_templates.0.**execution_environment**](defaults/main.yml#L286) | str | `{{ aap_seed_execution_environment }}` | None | None | -| [aap_seed_controller_templates.0.**ask_credential_on_launch**](defaults/main.yml#L287) | bool | `True` | None | None | -| [aap_seed_controller_templates.0.**ask_variables_on_launch**](defaults/main.yml#L288) | bool | `True` | None | None | -| [aap_seed_controller_templates.0.**verbosity**](defaults/main.yml#L289) | int | `0` | None | None | -| [aap_seed_controller_templates.0.**survey_enabled**](defaults/main.yml#L290) | bool | `True` | None | None | -| [aap_seed_controller_templates.0.**survey_spec**](defaults/main.yml#L291) | str | `{{ aap_seed_common_survey_spec }}` | None | None | -| [aap_seed_controller_templates.**1**](defaults/main.yml#L292) | dict | `{}` | None | None | -| [aap_seed_controller_templates.1.**name**](defaults/main.yml#L292) | str | `{{ aap_seed_mtv_provider_template_name }}` | None | None | -| [aap_seed_controller_templates.1.**organization**](defaults/main.yml#L293) | str | `{{ aap_seed_org_name }}` | None | None | -| [aap_seed_controller_templates.1.**project**](defaults/main.yml#L294) | str | `{{ aap_seed_project_name }}` | None | None | -| [aap_seed_controller_templates.1.**playbook**](defaults/main.yml#L295) | str | `{{ aap_seed_mtv_provider_playbook }}` | None | None | -| [aap_seed_controller_templates.1.**inventory**](defaults/main.yml#L296) | str | `{{ aap_seed_inventory_name }}` | None | None | -| [aap_seed_controller_templates.1.**execution_environment**](defaults/main.yml#L297) | str | `{{ aap_seed_execution_environment }}` | None | None | -| [aap_seed_controller_templates.1.**ask_credential_on_launch**](defaults/main.yml#L298) | bool | `True` | None | None | -| [aap_seed_controller_templates.1.**ask_variables_on_launch**](defaults/main.yml#L299) | bool | `True` | None | None | -| [aap_seed_controller_templates.1.**verbosity**](defaults/main.yml#L300) | int | `0` | None | None | -| [aap_seed_controller_templates.1.**survey_enabled**](defaults/main.yml#L301) | bool | `True` | None | None | -| [aap_seed_controller_templates.1.**survey_spec**](defaults/main.yml#L302) | str | `{{ aap_seed_common_survey_spec }}` | None | None | -
+| Var | Type | Value |Choices |Required | Title | +|--------------|--------------|-------------|-------------|-------------|-------------| +| [`aap_seed_common_survey_spec`](defaults/main.yml#L142) | dict | `{}` | None | False | Common Survey Spec | +| [`aap_seed_common_survey_spec.description`](defaults/main.yml#L144) | str | `` | None | None | None | +| [`aap_seed_common_survey_spec.name`](defaults/main.yml#L143) | str | `` | None | None | None | +| [`aap_seed_common_survey_spec.spec`](defaults/main.yml#L145) | list | `[]` | None | None | None | +| [`aap_seed_common_survey_spec.spec.0`](defaults/main.yml#L146) | dict | `{}` | None | None | None | +| [`aap_seed_common_survey_spec.spec.0.question_description`](defaults/main.yml#L147) | str | `` | None | None | None | +| [`aap_seed_common_survey_spec.spec.0.question_name`](defaults/main.yml#L146) | str | `Source Name` | None | None | None | +| [`aap_seed_common_survey_spec.spec.0.required`](defaults/main.yml#L153) | bool | `True` | None | None | None | +| [`aap_seed_common_survey_spec.spec.0.type`](defaults/main.yml#L152) | str | `text` | None | None | None | +| [`aap_seed_common_survey_spec.spec.0.variable`](defaults/main.yml#L151) | str | `source_name` | None | None | None | +| [`aap_seed_common_survey_spec.spec.1`](defaults/main.yml#L154) | dict | `{}` | None | None | None | +| [`aap_seed_common_survey_spec.spec.1.question_description`](defaults/main.yml#L155) | str | `` | None | None | None | +| [`aap_seed_common_survey_spec.spec.1.question_name`](defaults/main.yml#L154) | str | `Target Name` | None | None | None | +| [`aap_seed_common_survey_spec.spec.1.required`](defaults/main.yml#L161) | bool | `True` | None | None | None | +| [`aap_seed_common_survey_spec.spec.1.type`](defaults/main.yml#L160) | str | `text` | None | None | None | +| [`aap_seed_common_survey_spec.spec.1.variable`](defaults/main.yml#L159) | str | `target_name` | None | None | None | +| [`aap_seed_controller_credential_types`](defaults/main.yml#L213) | list | `[]` | None | False | Controller Credential Types | +| [`aap_seed_controller_credential_types.0`](defaults/main.yml#L214) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors`](defaults/main.yml#L241) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors.extra_vars`](defaults/main.yml#L242) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_insecure_skip_tls_verify`](defaults/main.yml#L247) | str | `{% raw %}{ { insecure_skip_tls_verify }}{% endraw %}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_certificate`](defaults/main.yml#L246) | str | `{% raw %}{ { certificate }}{% endraw %}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_host`](defaults/main.yml#L243) | str | `{% raw %}{ { host }}{% endraw %}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_password`](defaults/main.yml#L245) | str | `{% raw %}{ { password }}{% endraw %}` | None | None | None | +| [`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_username`](defaults/main.yml#L244) | str | `{% raw %}{ { username }}{% endraw %}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs`](defaults/main.yml#L217) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields`](defaults/main.yml#L218) | list | `[]` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.0`](defaults/main.yml#L219) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.0.id`](defaults/main.yml#L219) | str | `host` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.0.label`](defaults/main.yml#L221) | str | `Hostname or IP` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.0.type`](defaults/main.yml#L220) | str | `string` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.1`](defaults/main.yml#L222) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.1.id`](defaults/main.yml#L222) | str | `username` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.1.label`](defaults/main.yml#L224) | str | `Username` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.1.type`](defaults/main.yml#L223) | str | `string` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.2`](defaults/main.yml#L225) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.2.id`](defaults/main.yml#L225) | str | `password` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.2.label`](defaults/main.yml#L227) | str | `Password` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.2.secret`](defaults/main.yml#L228) | bool | `True` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.2.type`](defaults/main.yml#L226) | str | `string` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.3`](defaults/main.yml#L229) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.3.id`](defaults/main.yml#L229) | str | `certificate` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.3.label`](defaults/main.yml#L231) | str | `SSL/TLS CA Certificate` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.3.multiline`](defaults/main.yml#L232) | bool | `True` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.3.secret`](defaults/main.yml#L233) | bool | `True` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.3.type`](defaults/main.yml#L230) | str | `string` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.4`](defaults/main.yml#L234) | dict | `{}` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.4.id`](defaults/main.yml#L234) | str | `insecure_skip_tls_verify` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.4.label`](defaults/main.yml#L236) | str | `Insecure Skip TLS Verify` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.fields.4.type`](defaults/main.yml#L235) | str | `boolean` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.required`](defaults/main.yml#L237) | list | `[]` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.required.0`](defaults/main.yml#L238) | str | `host` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.required.1`](defaults/main.yml#L239) | str | `username` | None | None | None | +| [`aap_seed_controller_credential_types.0.inputs.required.2`](defaults/main.yml#L240) | str | `password` | None | None | None | +| [`aap_seed_controller_credential_types.0.kind`](defaults/main.yml#L216) | str | `cloud` | None | None | None | +| [`aap_seed_controller_credential_types.0.name`](defaults/main.yml#L214) | str | `{{ aap_seed_source_credential_type }}` | None | None | None | +| [`aap_seed_controller_credential_types.0.organization`](defaults/main.yml#L215) | str | `{{ aap_seed_org_name }}` | None | None | None | +| [`aap_seed_controller_execution_environments`](defaults/main.yml#L273) | list | `[]` | None | False | Controller Execution Environments | +| [`aap_seed_controller_inventories`](defaults/main.yml#L252) | list | `[]` | None | False | Controller Inventories | +| [`aap_seed_controller_inventories.0`](defaults/main.yml#L253) | dict | `{}` | None | None | None | +| [`aap_seed_controller_inventories.0.name`](defaults/main.yml#L253) | str | `{{ aap_seed_inventory_name }}` | None | None | None | +| [`aap_seed_controller_inventories.0.organization`](defaults/main.yml#L254) | str | `{{ aap_seed_org_name }}` | None | None | None | +| [`aap_seed_controller_organizations`](defaults/main.yml#L206) | list | `[]` | None | False | Controller Organizations | +| [`aap_seed_controller_projects`](defaults/main.yml#L259) | list | `[]` | None | False | Controller Projects | +| [`aap_seed_controller_projects.0`](defaults/main.yml#L260) | dict | `{}` | None | None | None | +| [`aap_seed_controller_projects.0.credential`](defaults/main.yml#L266) | str | `{{ aap_seed_project_credential ¦ default(omit, true) }}` | None | None | None | +| [`aap_seed_controller_projects.0.name`](defaults/main.yml#L260) | str | `{{ aap_seed_project_name }}` | None | None | None | +| [`aap_seed_controller_projects.0.organization`](defaults/main.yml#L261) | str | `{{ aap_seed_org_name }}` | None | None | None | +| [`aap_seed_controller_projects.0.scm_branch`](defaults/main.yml#L264) | str | `{{ aap_seed_project_scm_branch }}` | None | None | None | +| [`aap_seed_controller_projects.0.scm_type`](defaults/main.yml#L262) | str | `git` | None | None | None | +| [`aap_seed_controller_projects.0.scm_update_on_launch`](defaults/main.yml#L265) | bool | `True` | None | None | None | +| [`aap_seed_controller_projects.0.scm_url`](defaults/main.yml#L263) | str | `{{ aap_seed_project_scm_url }}` | None | None | None | +| [`aap_seed_controller_templates`](defaults/main.yml#L280) | list | `[]` | None | False | Controller Templates | +| [`aap_seed_controller_templates.0`](defaults/main.yml#L281) | dict | `{}` | None | None | None | +| [`aap_seed_controller_templates.0.ask_credential_on_launch`](defaults/main.yml#L287) | bool | `True` | None | None | None | +| [`aap_seed_controller_templates.0.ask_variables_on_launch`](defaults/main.yml#L288) | bool | `True` | None | None | None | +| [`aap_seed_controller_templates.0.execution_environment`](defaults/main.yml#L286) | str | `{{ aap_seed_execution_environment }}` | None | None | None | +| [`aap_seed_controller_templates.0.inventory`](defaults/main.yml#L285) | str | `{{ aap_seed_inventory_name }}` | None | None | None | +| [`aap_seed_controller_templates.0.name`](defaults/main.yml#L281) | str | `{{ aap_seed_migrate_template_name }}` | None | None | None | +| [`aap_seed_controller_templates.0.organization`](defaults/main.yml#L282) | str | `{{ aap_seed_org_name }}` | None | None | None | +| [`aap_seed_controller_templates.0.playbook`](defaults/main.yml#L284) | str | `{{ aap_seed_migrate_playbook }}` | None | None | None | +| [`aap_seed_controller_templates.0.project`](defaults/main.yml#L283) | str | `{{ aap_seed_project_name }}` | None | None | None | +| [`aap_seed_controller_templates.0.survey_enabled`](defaults/main.yml#L290) | bool | `True` | None | None | None | +| [`aap_seed_controller_templates.0.survey_spec`](defaults/main.yml#L291) | str | `{{ aap_seed_common_survey_spec }}` | None | None | None | +| [`aap_seed_controller_templates.0.verbosity`](defaults/main.yml#L289) | int | `0` | None | None | None | +| [`aap_seed_controller_templates.1`](defaults/main.yml#L292) | dict | `{}` | None | None | None | +| [`aap_seed_controller_templates.1.ask_credential_on_launch`](defaults/main.yml#L298) | bool | `True` | None | None | None | +| [`aap_seed_controller_templates.1.ask_variables_on_launch`](defaults/main.yml#L299) | bool | `True` | None | None | None | +| [`aap_seed_controller_templates.1.execution_environment`](defaults/main.yml#L297) | str | `{{ aap_seed_execution_environment }}` | None | None | None | +| [`aap_seed_controller_templates.1.inventory`](defaults/main.yml#L296) | str | `{{ aap_seed_inventory_name }}` | None | None | None | +| [`aap_seed_controller_templates.1.name`](defaults/main.yml#L292) | str | `{{ aap_seed_mtv_provider_template_name }}` | None | None | None | +| [`aap_seed_controller_templates.1.organization`](defaults/main.yml#L293) | str | `{{ aap_seed_org_name }}` | None | None | None | +| [`aap_seed_controller_templates.1.playbook`](defaults/main.yml#L295) | str | `{{ aap_seed_mtv_provider_playbook }}` | None | None | None | +| [`aap_seed_controller_templates.1.project`](defaults/main.yml#L294) | str | `{{ aap_seed_project_name }}` | None | None | None | +| [`aap_seed_controller_templates.1.survey_enabled`](defaults/main.yml#L301) | bool | `True` | None | None | None | +| [`aap_seed_controller_templates.1.survey_spec`](defaults/main.yml#L302) | str | `{{ aap_seed_common_survey_spec }}` | None | None | None | +| [`aap_seed_controller_templates.1.verbosity`](defaults/main.yml#L300) | int | `0` | None | None | None | +| [`aap_seed_credential_types_create`](defaults/main.yml#L171) | bool | `True` | None | False | Create Credential Types | +| [`aap_seed_credentials_create`](defaults/main.yml#L176) | bool | `True` | None | False | Create Credentials | +| [`aap_seed_execution_environment`](defaults/main.yml#L70) | str | `{{ aap_execution_environment ¦ default('Default execution environment') }}` | None | False | Execution Environment | +| [`aap_seed_execution_environments_create`](defaults/main.yml#L196) | bool | `True` | None | False | Create Execution Environments | +| [`aap_seed_git_password`](defaults/main.yml#L105) | str | `{{ aap_git_password ¦ default('') }}` | None | False | Git Password | +| [`aap_seed_git_ssh_key`](defaults/main.yml#L110) | str | `{{ aap_git_ssh_key ¦ default('') }}` | None | False | Git SSH Key | +| [`aap_seed_git_ssh_key_unlock`](defaults/main.yml#L115) | str | `{{ aap_git_ssh_key_unlock ¦ default('') }}` | None | False | Git SSH Key Unlock | +| [`aap_seed_git_username`](defaults/main.yml#L100) | str | `{{ aap_git_username ¦ default('') }}` | None | False | Git Username | +| [`aap_seed_hostname`](defaults/main.yml#L6) | str | `{{ aap_hostname }}` | None | True | AAP Hostname | +| [`aap_seed_hosts_create`](defaults/main.yml#L186) | bool | `True` | None | False | Create Hosts | +| [`aap_seed_inventories_create`](defaults/main.yml#L181) | bool | `True` | None | False | Create Inventories | +| [`aap_seed_inventory_name`](defaults/main.yml#L65) | str | `OpenShift Virtualization Migration` | None | False | Inventory Name | +| [`aap_seed_migrate_playbook`](defaults/main.yml#L125) | str | `playbooks/vmf_migrate.yml` | None | False | Migrate Playbook | +| [`aap_seed_migrate_template_name`](defaults/main.yml#L120) | str | `OpenShift Virtualization Migration - Migrate` | None | False | Migrate Template Name | +| [`aap_seed_mtv_provider_playbook`](defaults/main.yml#L135) | str | `playbooks/vmf_mtv_provider.yml` | None | False | MTV Provider Playbook | +| [`aap_seed_mtv_provider_template_name`](defaults/main.yml#L130) | str | `OpenShift Virtualization Migration - MTV Provider` | None | False | MTV Provider Template Name | +| [`aap_seed_org_name`](defaults/main.yml#L38) | str | `Default` | None | False | Organization Name | +| [`aap_seed_organizations_create`](defaults/main.yml#L166) | bool | `True` | None | False | Create Organizations | +| [`aap_seed_password`](defaults/main.yml#L16) | str | `{{ aap_password ¦ default(omit) }}` | None | False | AAP Password | +| [`aap_seed_project_credential`](defaults/main.yml#L95) | str | `{{ aap_project_credential ¦ default('') }}` | None | False | Project Credential | +| [`aap_seed_project_name`](defaults/main.yml#L43) | str | `OpenShift Virtualization Migration` | None | False | Project Name | +| [`aap_seed_project_scm_branch`](defaults/main.yml#L55) | str | `{{ aap_project_scm_branch ¦ default('v2') }}` | None | False | Project SCM Branch | +| [`aap_seed_project_scm_url`](defaults/main.yml#L48) | str | `` | None | False | Project SCM URL | +| [`aap_seed_project_sync_timeout`](defaults/main.yml#L60) | int | `120` | None | False | Project Sync Timeout | +| [`aap_seed_projects_create`](defaults/main.yml#L191) | bool | `True` | None | False | Create Projects | +| [`aap_seed_secure_logging`](defaults/main.yml#L33) | bool | `True` | None | False | Secure Logging | +| [`aap_seed_source_credential_type`](defaults/main.yml#L75) | str | `Migration Factory - Source Environment` | None | False | Source Credential Type | +| [`aap_seed_source_inventory_group`](defaults/main.yml#L85) | str | `vm_sources` | None | False | Source Inventory Group | +| [`aap_seed_target_credential_type`](defaults/main.yml#L80) | str | `OpenShift or Kubernetes API Bearer Token` | None | False | Target Credential Type | +| [`aap_seed_target_inventory_group`](defaults/main.yml#L90) | str | `migration_clusters` | None | False | Target Inventory Group | +| [`aap_seed_templates_create`](defaults/main.yml#L201) | bool | `True` | None | False | Create Templates | +| [`aap_seed_token`](defaults/main.yml#L21) | str | `{{ aap_token ¦ default(omit) }}` | None | False | AAP Token | +| [`aap_seed_username`](defaults/main.yml#L11) | str | `{{ aap_username ¦ default(omit) }}` | None | False | AAP Username | +| [`aap_seed_validate_certs`](defaults/main.yml#L26) | str | `{{ aap_validate_certs ¦ default(true) }}` | None | False | Validate Certificates | + 🖇️ Full descriptions for vars in defaults/main.yml
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VarDescription
aap_seed_hostnameHostname of the AAP instance. Cascades from aap_hostname inventory variable.
aap_seed_usernameUsername for AAP authentication. Cascades from aap_username inventory variable.
aap_seed_passwordPassword for AAP authentication. Cascades from aap_password inventory variable.
aap_seed_tokenOAuth token for AAP authentication. Cascades from aap_token inventory variable.
aap_seed_validate_certsWhether to validate TLS certificates for AAP connections.
aap_seed_secure_logging>-
aap_seed_org_nameAAP organization name used for all created objects.
aap_seed_project_nameName of the AAP project created for the migration collection.
aap_seed_project_scm_urlGit repository URL for the AAP project. Cascades from aap_project_scm_url.
aap_seed_project_scm_branchGit branch for the AAP project. Cascades from aap_project_scm_branch.
aap_seed_project_sync_timeoutTimeout in seconds for AAP project sync operations.
aap_seed_inventory_nameName of the AAP inventory created for migration hosts.
aap_seed_execution_environmentExecution environment assigned to job templates. Cascades from aap_execution_environment.
aap_seed_source_credential_typeName of the custom credential type created for source hypervisor environments.
aap_seed_target_credential_typeName of the built-in credential type used for OpenShift target clusters.
aap_seed_source_inventory_groupAAP inventory group name containing source hypervisor hosts.
aap_seed_target_inventory_groupAAP inventory group name containing target OpenShift cluster hosts.
aap_seed_project_credentialName of the Git credential to attach to the AAP project. Leave empty to skip.
aap_seed_git_usernameUsername for Git authentication (HTTPS). Cascades from aap_git_username.
aap_seed_git_passwordPassword or token for Git authentication (HTTPS). Cascades from aap_git_password.
aap_seed_git_ssh_keySSH private key for Git authentication. Cascades from aap_git_ssh_key.
aap_seed_git_ssh_key_unlockPassphrase to unlock the SSH key. Cascades from aap_git_ssh_key_unlock.
aap_seed_migrate_template_nameName of the migration job template created in AAP.
aap_seed_migrate_playbookPlaybook path for the migration job template.
aap_seed_mtv_provider_template_nameName of the MTV provider job template created in AAP.
aap_seed_mtv_provider_playbookPlaybook path for the MTV provider job template.
aap_seed_common_survey_spec>-
aap_seed_organizations_createWhether to create organization objects in AAP.
aap_seed_credential_types_createWhether to create custom credential type objects in AAP.
aap_seed_credentials_createWhether to create credential objects in AAP.
aap_seed_inventories_createWhether to create inventory objects in AAP.
aap_seed_hosts_createWhether to create host objects in AAP.
aap_seed_projects_createWhether to create project objects in AAP.
aap_seed_execution_environments_createWhether to create execution environment objects in AAP.
aap_seed_templates_createWhether to create job template objects in AAP.
aap_seed_controller_organizationsList of AAP organization definitions.
aap_seed_controller_credential_types>-
aap_seed_controller_inventoriesList of AAP inventory definitions.
aap_seed_controller_projectsList of AAP project definitions.
aap_seed_controller_execution_environments>-
aap_seed_controller_templates>-
+`aap_seed_common_survey_spec`: >- +
+`aap_seed_common_survey_spec.description`: None +
+`aap_seed_common_survey_spec.name`: None +
+`aap_seed_common_survey_spec.spec`: None +
+`aap_seed_common_survey_spec.spec.0`: None +
+`aap_seed_common_survey_spec.spec.0.question_description`: None +
+`aap_seed_common_survey_spec.spec.0.question_name`: None +
+`aap_seed_common_survey_spec.spec.0.required`: None +
+`aap_seed_common_survey_spec.spec.0.type`: None +
+`aap_seed_common_survey_spec.spec.0.variable`: None +
+`aap_seed_common_survey_spec.spec.1`: None +
+`aap_seed_common_survey_spec.spec.1.question_description`: None +
+`aap_seed_common_survey_spec.spec.1.question_name`: None +
+`aap_seed_common_survey_spec.spec.1.required`: None +
+`aap_seed_common_survey_spec.spec.1.type`: None +
+`aap_seed_common_survey_spec.spec.1.variable`: None +
+`aap_seed_controller_credential_types`: >- +
+`aap_seed_controller_credential_types.0`: None +
+`aap_seed_controller_credential_types.0.injectors`: None +
+`aap_seed_controller_credential_types.0.injectors.extra_vars`: None +
+`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_insecure_skip_tls_verify`: None +
+`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_certificate`: None +
+`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_host`: None +
+`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_password`: None +
+`aap_seed_controller_credential_types.0.injectors.extra_vars.mf_source_username`: None +
+`aap_seed_controller_credential_types.0.inputs`: None +
+`aap_seed_controller_credential_types.0.inputs.fields`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.0`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.0.id`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.0.label`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.0.type`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.1`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.1.id`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.1.label`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.1.type`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.2`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.2.id`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.2.label`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.2.secret`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.2.type`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.3`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.3.id`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.3.label`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.3.multiline`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.3.secret`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.3.type`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.4`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.4.id`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.4.label`: None +
+`aap_seed_controller_credential_types.0.inputs.fields.4.type`: None +
+`aap_seed_controller_credential_types.0.inputs.required`: None +
+`aap_seed_controller_credential_types.0.inputs.required.0`: None +
+`aap_seed_controller_credential_types.0.inputs.required.1`: None +
+`aap_seed_controller_credential_types.0.inputs.required.2`: None +
+`aap_seed_controller_credential_types.0.kind`: None +
+`aap_seed_controller_credential_types.0.name`: None +
+`aap_seed_controller_credential_types.0.organization`: None +
+`aap_seed_controller_execution_environments`: >- +
+`aap_seed_controller_inventories`: List of AAP inventory definitions. +
+`aap_seed_controller_inventories.0`: None +
+`aap_seed_controller_inventories.0.name`: None +
+`aap_seed_controller_inventories.0.organization`: None +
+`aap_seed_controller_organizations`: List of AAP organization definitions. +
+`aap_seed_controller_projects`: List of AAP project definitions. +
+`aap_seed_controller_projects.0`: None +
+`aap_seed_controller_projects.0.credential`: None +
+`aap_seed_controller_projects.0.name`: None +
+`aap_seed_controller_projects.0.organization`: None +
+`aap_seed_controller_projects.0.scm_branch`: None +
+`aap_seed_controller_projects.0.scm_type`: None +
+`aap_seed_controller_projects.0.scm_update_on_launch`: None +
+`aap_seed_controller_projects.0.scm_url`: None +
+`aap_seed_controller_templates`: >- +
+`aap_seed_controller_templates.0`: None +
+`aap_seed_controller_templates.0.ask_credential_on_launch`: None +
+`aap_seed_controller_templates.0.ask_variables_on_launch`: None +
+`aap_seed_controller_templates.0.execution_environment`: None +
+`aap_seed_controller_templates.0.inventory`: None +
+`aap_seed_controller_templates.0.name`: None +
+`aap_seed_controller_templates.0.organization`: None +
+`aap_seed_controller_templates.0.playbook`: None +
+`aap_seed_controller_templates.0.project`: None +
+`aap_seed_controller_templates.0.survey_enabled`: None +
+`aap_seed_controller_templates.0.survey_spec`: None +
+`aap_seed_controller_templates.0.verbosity`: None +
+`aap_seed_controller_templates.1`: None +
+`aap_seed_controller_templates.1.ask_credential_on_launch`: None +
+`aap_seed_controller_templates.1.ask_variables_on_launch`: None +
+`aap_seed_controller_templates.1.execution_environment`: None +
+`aap_seed_controller_templates.1.inventory`: None +
+`aap_seed_controller_templates.1.name`: None +
+`aap_seed_controller_templates.1.organization`: None +
+`aap_seed_controller_templates.1.playbook`: None +
+`aap_seed_controller_templates.1.project`: None +
+`aap_seed_controller_templates.1.survey_enabled`: None +
+`aap_seed_controller_templates.1.survey_spec`: None +
+`aap_seed_controller_templates.1.verbosity`: None +
+`aap_seed_credential_types_create`: Whether to create custom credential type objects in AAP. +
+`aap_seed_credentials_create`: Whether to create credential objects in AAP. +
+`aap_seed_execution_environment`: Execution environment assigned to job templates. Cascades from aap_execution_environment. +
+`aap_seed_execution_environments_create`: Whether to create execution environment objects in AAP. +
+`aap_seed_git_password`: Password or token for Git authentication (HTTPS). Cascades from aap_git_password. +
+`aap_seed_git_ssh_key`: SSH private key for Git authentication. Cascades from aap_git_ssh_key. +
+`aap_seed_git_ssh_key_unlock`: Passphrase to unlock the SSH key. Cascades from aap_git_ssh_key_unlock. +
+`aap_seed_git_username`: Username for Git authentication (HTTPS). Cascades from aap_git_username. +
+`aap_seed_hostname`: Hostname of the AAP instance. Cascades from aap_hostname inventory variable. +
+`aap_seed_hosts_create`: Whether to create host objects in AAP. +
+`aap_seed_inventories_create`: Whether to create inventory objects in AAP. +
+`aap_seed_inventory_name`: Name of the AAP inventory created for migration hosts. +
+`aap_seed_migrate_playbook`: Playbook path for the migration job template. +
+`aap_seed_migrate_template_name`: Name of the migration job template created in AAP. +
+`aap_seed_mtv_provider_playbook`: Playbook path for the MTV provider job template. +
+`aap_seed_mtv_provider_template_name`: Name of the MTV provider job template created in AAP. +
+`aap_seed_org_name`: AAP organization name used for all created objects. +
+`aap_seed_organizations_create`: Whether to create organization objects in AAP. +
+`aap_seed_password`: Password for AAP authentication. Cascades from aap_password inventory variable. +
+`aap_seed_project_credential`: Name of the Git credential to attach to the AAP project. Leave empty to skip. +
+`aap_seed_project_name`: Name of the AAP project created for the migration collection. +
+`aap_seed_project_scm_branch`: Git branch for the AAP project. Cascades from aap_project_scm_branch. +
+`aap_seed_project_scm_url`: Git repository URL for the AAP project. Cascades from aap_project_scm_url. +
+`aap_seed_project_sync_timeout`: Timeout in seconds for AAP project sync operations. +
+`aap_seed_projects_create`: Whether to create project objects in AAP. +
+`aap_seed_secure_logging`: >- +
+`aap_seed_source_credential_type`: Name of the custom credential type created for source hypervisor environments. +
+`aap_seed_source_inventory_group`: AAP inventory group name containing source hypervisor hosts. +
+`aap_seed_target_credential_type`: Name of the built-in credential type used for OpenShift target clusters. +
+`aap_seed_target_inventory_group`: AAP inventory group name containing target OpenShift cluster hosts. +
+`aap_seed_templates_create`: Whether to create job template objects in AAP. +
+`aap_seed_token`: OAuth token for AAP authentication. Cascades from aap_token inventory variable. +
+`aap_seed_username`: Username for AAP authentication. Cascades from aap_username inventory variable. +
+`aap_seed_validate_certs`: Whether to validate TLS certificates for AAP connections. +

-
- - - - ### Tasks +#### File: tasks/main.yml + +| Name | Module | Has Conditions | +| ---- | ------ | --------- | +| Seed AAP with Migration Factory content | `block` | False | +| Build simple AAP objects from defaults | `ansible.builtin.include_tasks` | False | +| Validate inventory host variables | `ansible.builtin.include_tasks` | False | +| Build credentials from inventory | `ansible.builtin.include_tasks` | False | +| Build hosts and groups from inventory | `ansible.builtin.include_tasks` | True | +| Create project and sync from SCM | `block` | True | +| Sync SCM project | `ansible.builtin.include_tasks` | False | +| Copy aap_seed_controller_* to controller_* for dispatch | `ansible.builtin.set_fact` | False | +| Push CaC content to AAP | `ansible.builtin.include_role` | False | #### File: tasks/build_credentials.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| build_credentials ¦ Apply credential type toggle | ansible.builtin.set_fact | False | -| build_credentials ¦ Initialize credential list | ansible.builtin.set_fact | True | -| build_credentials ¦ Build source environment credentials | ansible.builtin.set_fact | True | -| build_credentials ¦ Build target cluster credentials | ansible.builtin.set_fact | True | -| build_credentials ¦ Build Git credential for SCM project | ansible.builtin.set_fact | True | -| build_credentials ¦ Disable credentials when toggle is off | ansible.builtin.set_fact | True | +| ---- | ------ | --------- | +| build_credentials ¦ Apply credential type toggle | `ansible.builtin.set_fact` | False | +| build_credentials ¦ Initialize credential list | `ansible.builtin.set_fact` | True | +| build_credentials ¦ Build source environment credentials | `ansible.builtin.set_fact` | True | +| build_credentials ¦ Build target cluster credentials | `ansible.builtin.set_fact` | True | +| build_credentials ¦ Build Git credential for SCM project | `ansible.builtin.set_fact` | True | +| build_credentials ¦ Disable credentials when toggle is off | `ansible.builtin.set_fact` | True | #### File: tasks/build_hosts.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| build_hosts ¦ Initialize host list | ansible.builtin.set_fact | False | -| build_hosts ¦ Build source environment hosts | ansible.builtin.set_fact | False | -| build_hosts ¦ Build target cluster hosts | ansible.builtin.set_fact | False | -| build_hosts ¦ Build inventory groups | ansible.builtin.set_fact | False | +| ---- | ------ | --------- | +| build_hosts ¦ Initialize host list | `ansible.builtin.set_fact` | False | +| build_hosts ¦ Build source environment hosts | `ansible.builtin.set_fact` | False | +| build_hosts ¦ Build target cluster hosts | `ansible.builtin.set_fact` | False | +| build_hosts ¦ Build inventory groups | `ansible.builtin.set_fact` | False | #### File: tasks/build_objects.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| build_objects ¦ Set organizations | ansible.builtin.set_fact | False | -| build_objects ¦ Set inventories | ansible.builtin.set_fact | False | -| build_objects ¦ Set projects | ansible.builtin.set_fact | False | -| build_objects ¦ Set execution environments | ansible.builtin.set_fact | False | -| build_objects ¦ Set job templates | ansible.builtin.set_fact | False | - -#### File: tasks/main.yml - -| Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| Seed AAP with Migration Factory content | block | False | -| Build simple AAP objects from defaults | ansible.builtin.include_tasks | False | -| Validate inventory host variables | ansible.builtin.include_tasks | False | -| Build credentials from inventory | ansible.builtin.include_tasks | False | -| Build hosts and groups from inventory | ansible.builtin.include_tasks | True | -| Create project and sync from SCM | block | True | -| Sync SCM project | ansible.builtin.include_tasks | False | -| Copy aap_seed_controller_* to controller_* for dispatch | ansible.builtin.set_fact | False | -| Push CaC content to AAP | ansible.builtin.include_role | False | +| ---- | ------ | --------- | +| build_objects ¦ Set organizations | `ansible.builtin.set_fact` | False | +| build_objects ¦ Set inventories | `ansible.builtin.set_fact` | False | +| build_objects ¦ Set projects | `ansible.builtin.set_fact` | False | +| build_objects ¦ Set execution environments | `ansible.builtin.set_fact` | False | +| build_objects ¦ Set job templates | `ansible.builtin.set_fact` | False | #### File: tasks/sync_project.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| sync_project ¦ Create or update the project in AAP | ansible.builtin.include_role | False | -| sync_project ¦ Sync project from SCM and wait for completion | ansible.builtin.include_role | False | +| ---- | ------ | --------- | +| sync_project ¦ Create or update the project in AAP | `ansible.builtin.include_role` | False | +| sync_project ¦ Sync project from SCM and wait for completion | `ansible.builtin.include_role` | False | #### File: tasks/validate.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| validate ¦ Target hosts must define a non-empty bearer token | ansible.builtin.assert | False | - - - - - - +| ---- | ------ | --------- | +| validate ¦ Target hosts must define a non-empty bearer token | `ansible.builtin.assert` | False | + +## Task Flow Graphs + +### Graph for build_credentials.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| build_credentials___Apply_credential_type_toggle0[build credentials apply credential type toggle]:::task + build_credentials___Apply_credential_type_toggle0-->|Task| build_credentials___Initialize_credential_list1[build credentials initialize credential list
When: **aap seed credentials create bool**]:::task + build_credentials___Initialize_credential_list1-->|Task| build_credentials___Build_source_environment_credentials2[build credentials build source environment
credentials
When: **aap seed credentials create bool**]:::task + build_credentials___Build_source_environment_credentials2-->|Task| build_credentials___Build_target_cluster_credentials3[build credentials build target cluster
credentials
When: **aap seed credentials create bool**]:::task + build_credentials___Build_target_cluster_credentials3-->|Task| build_credentials___Build_Git_credential_for_SCM_project4[build credentials build git credential for scm
project
When: **aap seed credentials create bool and aap seed
project credential default true length
0**]:::task + build_credentials___Build_Git_credential_for_SCM_project4-->|Task| build_credentials___Disable_credentials_when_toggle_is_off5[build credentials disable credentials when
toggle is off
When: **not aap seed credentials create bool**]:::task + build_credentials___Disable_credentials_when_toggle_is_off5-->End +``` + +### Graph for build_hosts.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| build_hosts___Initialize_host_list0[build hosts initialize host list]:::task + build_hosts___Initialize_host_list0-->|Task| build_hosts___Build_source_environment_hosts1[build hosts build source environment hosts]:::task + build_hosts___Build_source_environment_hosts1-->|Task| build_hosts___Build_target_cluster_hosts2[build hosts build target cluster hosts]:::task + build_hosts___Build_target_cluster_hosts2-->|Task| build_hosts___Build_inventory_groups3[build hosts build inventory groups]:::task + build_hosts___Build_inventory_groups3-->End +``` + +### Graph for build_objects.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| build_objects___Set_organizations0[build objects set organizations]:::task + build_objects___Set_organizations0-->|Task| build_objects___Set_inventories1[build objects set inventories]:::task + build_objects___Set_inventories1-->|Task| build_objects___Set_projects2[build objects set projects]:::task + build_objects___Set_projects2-->|Task| build_objects___Set_execution_environments3[build objects set execution environments]:::task + build_objects___Set_execution_environments3-->|Task| build_objects___Set_job_templates4[build objects set job templates]:::task + build_objects___Set_job_templates4-->End +``` + +### Graph for main.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Block Start| Seed_AAP_with_Migration_Factory_content0_block_start_0[[seed aap with migration factory content]]:::block + Seed_AAP_with_Migration_Factory_content0_block_start_0-->|Include task| Build_simple_AAP_objects_from_defaults_build_objects_yml_0[build simple aap objects from defaults
include_task: build objects yml]:::includeTasks + Build_simple_AAP_objects_from_defaults_build_objects_yml_0-->|Include task| Validate_inventory_host_variables_validate_yml_1[validate inventory host variables
include_task: validate yml]:::includeTasks + Validate_inventory_host_variables_validate_yml_1-->|Include task| Build_credentials_from_inventory_build_credentials_yml_2[build credentials from inventory
include_task: build credentials yml]:::includeTasks + Build_credentials_from_inventory_build_credentials_yml_2-->|Include task| Build_hosts_and_groups_from_inventory_build_hosts_yml_3[build hosts and groups from inventory
When: **aap seed hosts create bool**
include_task: build hosts yml]:::includeTasks + Build_hosts_and_groups_from_inventory_build_hosts_yml_3-->|Block Start| Create_project_and_sync_from_SCM4_block_start_1[[create project and sync from scm
When: **aap seed projects create bool**]]:::block + Create_project_and_sync_from_SCM4_block_start_1-->|Include task| Sync_SCM_project_sync_project_yml_0[sync scm project
include_task: sync project yml]:::includeTasks + Sync_SCM_project_sync_project_yml_0-.->|End of Block| Create_project_and_sync_from_SCM4_block_start_1 + Sync_SCM_project_sync_project_yml_0-->|Rescue Start| Create_project_and_sync_from_SCM4_rescue_start_1[create project and sync from scm
When: **aap seed projects create bool**]:::rescue + Create_project_and_sync_from_SCM4_rescue_start_1-->|Task| Project_sync_failed0[project sync failed]:::task + Project_sync_failed0-.->|End of Rescue Block| Create_project_and_sync_from_SCM4_block_start_1 + Project_sync_failed0-->|Task| Copy_aap_seed_controller___to_controller___for_dispatch5[copy aap seed controller to controller for
dispatch]:::task + Copy_aap_seed_controller___to_controller___for_dispatch5-->|Include role| Push_CaC_content_to_AAP_infra_aap_configuration_dispatch_6(push cac content to aap
include_role: infra aap configuration dispatch):::includeRole + Push_CaC_content_to_AAP_infra_aap_configuration_dispatch_6-.->|End of Block| Seed_AAP_with_Migration_Factory_content0_block_start_0 + Push_CaC_content_to_AAP_infra_aap_configuration_dispatch_6-->End +``` + +### Graph for sync_project.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Include role| sync_project___Create_or_update_the_project_in_AAP_infra_aap_configuration_controller_projects_0(sync project create or update the project in aap
include_role: infra aap configuration controller projects):::includeRole + sync_project___Create_or_update_the_project_in_AAP_infra_aap_configuration_controller_projects_0-->|Include role| sync_project___Sync_project_from_SCM_and_wait_for_completion_infra_aap_configuration_controller_project_update_1(sync project sync project from scm and wait for
completion
include_role: infra aap configuration controller project update):::includeRole + sync_project___Sync_project_from_SCM_and_wait_for_completion_infra_aap_configuration_controller_project_update_1-->End +``` + +### Graph for validate.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| validate___Target_hosts_must_define_a_non_empty_bearer_token0[validate target hosts must define a non empty
bearer token]:::task + validate___Target_hosts_must_define_a_non_empty_bearer_token0-->End +``` ## Author Information + Red Hat -#### License +## License GPL-3.0-or-later -#### Minimum Ansible Version +## Minimum Ansible Version 2.16 -#### Platforms +## Platforms No platforms specified. -#### Dependencies - -No dependencies specified. - + \ No newline at end of file diff --git a/roles/mtv_provider/README.md b/roles/mtv_provider/README.md index 46499a6..4cfb1d8 100644 --- a/roles/mtv_provider/README.md +++ b/roles/mtv_provider/README.md @@ -1,279 +1,306 @@ - -# 📃 Role overview - ## mtv_provider - +``` +Role belongs to infra/openshift_virtualization_migration +Namespace - infra +Collection - openshift_virtualization_migration +Version - 1.25.0 +Repository - https://github.com/redhat-cop/openshift_virtualization_migration +``` Description: Create MTV/Forklift source provider CRs on OpenShift target clusters. Designed to run from AAP with credential injection. -| Field | Value | -|--------------------- |-----------------| -| Readme update | 2026/09/02 | - - - +### Argument Specifications
-🧩 Argument Specifications in meta/argument_specs +🧩 Argument Specifications in `meta/argument_specs` #### Key: main -**Description**: -- Creates a Forklift Provider custom resource and its backing Secret on a target OpenShift cluster for a given source environment. -- Designed to run from AAP with credential injection. The source credential injects mf_source_username, mf_source_password, and mf_source_certificate as extra vars. OpenShift connection is provided by the AAP OpenShift credential which sets K8S_AUTH_* environment variables. -- For targets with multiple sources, launch the job template once per source-target pair. - - -**Options**: - - - - **source_name** - - **Required**: True - - **Type**: str - - **Default**: none - - - **Description**: Name of the source environment (must match an AAP inventory host in the vm_sources group). - - - - - - **target_name** - - **Required**: True - - **Type**: str - - **Default**: none - - - **Description**: Name of the target OpenShift cluster (must match an AAP inventory host in the migration_clusters group). - - - - - - **mtv_provider_secure_logging** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Whether to enable secure logging for sensitive tasks. - - - - - - **mtv_provider_provider_namespace** - - **Required**: False - - **Type**: str - - **Default**: openshift-mtv - - - **Description**: Namespace where the provider will be created. Resolved from the target host's mtv_namespace variable by default. - - - - - - **mtv_provider_provider_wait** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Whether to wait for the Provider CR to reach Ready status after creation. - - - - - - **mtv_provider_provider_wait_timeout** - - **Required**: False - - **Type**: int - - **Default**: 120 - - - **Description**: Seconds to wait for the Provider to become Ready before failing. - - - - - - **mtv_provider_provider_wait_poll** - - **Required**: False - - **Type**: int - - **Default**: 10 - - - **Description**: Seconds between status polls while waiting for Ready. - - - - - - **mtv_provider_provider_state** - - **Required**: False - - **Type**: str - - **Default**: present - - - **Description**: Desired state of the provider. Set to absent to remove a previously created provider and its secret. - - - **Choices**: - - - present - - - absent - - - - - - - **mtv_provider_api_version** - - **Required**: False - - **Type**: str - - **Default**: forklift.konveyor.io/v1beta1 - - - **Description**: Forklift API version for Provider CRs. - - - - - - **mtv_provider_provider_override** - - **Required**: False - - **Type**: dict - - **Default**: {} - - - **Description**: Override configuration merged into the Provider CR spec. Allows setting additional properties such as settings or other fields that evolve with the Forklift API. - - - - - - **mtv_provider_auto_retrieve_cert** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Whether to automatically retrieve the source TLS certificate when insecureSkipTlsVerify is false and no certificate is provided. - - - - - +* **Description**: ['Creates a Forklift Provider custom resource and its backing Secret on a target OpenShift cluster for a given source environment.', 'Designed to run from AAP with credential injection. The source credential injects mf_source_username, mf_source_password, and mf_source_certificate as extra vars. OpenShift connection is provided by the AAP OpenShift credential which sets K8S_AUTH_* environment variables.', 'For targets with multiple sources, launch the job template once per source-target pair.'] +* **Options**: + * **mtv_provider_api_version**: + * **Required**: False + * **Type**: str + * **Default**: forklift.konveyor.io/v1beta1 + * **Description**: Forklift API version for Provider CRs. + * **mtv_provider_auto_retrieve_cert**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Whether to automatically retrieve the source TLS certificate when insecureSkipTlsVerify is false and no certificate is provided. + * **mtv_provider_provider_namespace**: + * **Required**: False + * **Type**: str + * **Default**: openshift-mtv + * **Description**: Namespace where the provider will be created. Resolved from the target host's mtv_namespace variable by default. + * **mtv_provider_provider_override**: + * **Required**: False + * **Type**: dict + * **Default**: {} + * **Description**: Override configuration merged into the Provider CR spec. Allows setting additional properties such as settings or other fields that evolve with the Forklift API. + * **mtv_provider_provider_state**: + * **Required**: False + * **Type**: str + * **Default**: present + * **Description**: Desired state of the provider. Set to absent to remove a previously created provider and its secret. + * **Choices**: + * present + * absent + * **mtv_provider_provider_wait**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Whether to wait for the Provider CR to reach Ready status after creation. + * **mtv_provider_provider_wait_poll**: + * **Required**: False + * **Type**: int + * **Default**: 10 + * **Description**: Seconds between status polls while waiting for Ready. + * **mtv_provider_provider_wait_timeout**: + * **Required**: False + * **Type**: int + * **Default**: 120 + * **Description**: Seconds to wait for the Provider to become Ready before failing. + * **mtv_provider_secure_logging**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Whether to enable secure logging for sensitive tasks. + * **source_name**: + * **Required**: True + * **Type**: str + * **Default**: none + * **Description**: Name of the source environment (must match an AAP inventory host in the vm_sources group). + * **target_name**: + * **Required**: True + * **Type**: str + * **Default**: none + * **Description**: Name of the target OpenShift cluster (must match an AAP inventory host in the migration_clusters group).
- - - ### Defaults **These are static variables with lower priority** #### File: defaults/main.yml -| Var | Type | Value |Required | Title | -|--------------|--------------|-------------|------------|-------------| -| [mtv_provider_secure_logging](defaults/main.yml#L6) | str | `{{ secure_logging ¦ default(true) }}` | False | Secure Logging | -| [mtv_provider_provider_namespace](defaults/main.yml#L13) | str | `` | False | Provider Namespace | -| [mtv_provider_provider_wait](defaults/main.yml#L19) | bool | `True` | False | Wait for Provider Ready | -| [mtv_provider_provider_wait_timeout](defaults/main.yml#L24) | int | `120` | False | Provider Wait Timeout | -| [mtv_provider_provider_wait_poll](defaults/main.yml#L29) | int | `10` | False | Provider Wait Poll Interval | -| [mtv_provider_provider_state](defaults/main.yml#L34) | str | `present` | False | Provider State | -| [mtv_provider_api_version](defaults/main.yml#L39) | str | `forklift.konveyor.io/v1beta1` | False | Forklift API Version | -| [mtv_provider_provider_override](defaults/main.yml#L44) | dict | `{}` | False | Provider Override | -| [mtv_provider_auto_retrieve_cert](defaults/main.yml#L51) | bool | `True` | False | Auto Retrieve Certificate | -| [mtv_provider_source_type](defaults/main.yml#L58) | str | `` | False | Source Type | -| [mtv_provider_source_host](defaults/main.yml#L66) | str | `` | True | Source Host | -| [mtv_provider_source_sdk_endpoint](defaults/main.yml#L72) | str | `` | False | Source SDK Endpoint | -| [mtv_provider_source_vddk](defaults/main.yml#L78) | str | `{{ hostvars[source_name]['vddk'] ¦ default({}) }}` | False | Source VDDK Configuration | -| [mtv_provider_managed_by_label](defaults/main.yml#L83) | str | `ansible-migration-factory` | False | Managed By Label | -
+| Var | Type | Value |Choices |Required | Title | +|--------------|--------------|-------------|-------------|-------------|-------------| +| [`mtv_provider_api_version`](defaults/main.yml#L39) | str | `forklift.konveyor.io/v1beta1` | None | False | Forklift API Version | +| [`mtv_provider_auto_retrieve_cert`](defaults/main.yml#L51) | bool | `True` | None | False | Auto Retrieve Certificate | +| [`mtv_provider_managed_by_label`](defaults/main.yml#L83) | str | `ansible-migration-factory` | None | False | Managed By Label | +| [`mtv_provider_provider_namespace`](defaults/main.yml#L13) | str | `` | None | False | Provider Namespace | +| [`mtv_provider_provider_override`](defaults/main.yml#L44) | dict | `{}` | None | False | Provider Override | +| [`mtv_provider_provider_state`](defaults/main.yml#L34) | str | `present` | None | False | Provider State | +| [`mtv_provider_provider_wait`](defaults/main.yml#L19) | bool | `True` | None | False | Wait for Provider Ready | +| [`mtv_provider_provider_wait_poll`](defaults/main.yml#L29) | int | `10` | None | False | Provider Wait Poll Interval | +| [`mtv_provider_provider_wait_timeout`](defaults/main.yml#L24) | int | `120` | None | False | Provider Wait Timeout | +| [`mtv_provider_secure_logging`](defaults/main.yml#L6) | str | `{{ secure_logging ¦ default(true) }}` | None | False | Secure Logging | +| [`mtv_provider_source_host`](defaults/main.yml#L66) | str | `` | None | True | Source Host | +| [`mtv_provider_source_sdk_endpoint`](defaults/main.yml#L72) | str | `` | None | False | Source SDK Endpoint | +| [`mtv_provider_source_type`](defaults/main.yml#L58) | str | `` | None | False | Source Type | +| [`mtv_provider_source_vddk`](defaults/main.yml#L78) | str | `{{ hostvars[source_name]['vddk'] ¦ default({}) }}` | None | False | Source VDDK Configuration | + 🖇️ Full descriptions for vars in defaults/main.yml
- - - - - - - - - - - - - - - - -
VarDescription
mtv_provider_secure_loggingWhether to enable secure logging for sensitive tasks.
mtv_provider_provider_namespace>-
mtv_provider_provider_waitWhether to wait for the Provider CR to reach Ready status after creation.
mtv_provider_provider_wait_timeoutSeconds to wait for the Provider to become Ready before failing.
mtv_provider_provider_wait_pollSeconds between status polls while waiting for Ready.
mtv_provider_provider_stateDesired state of the provider — present or absent.
mtv_provider_api_versionForklift API version for Provider CRs.
mtv_provider_provider_overrideOverride configuration merged into the Provider CR spec.
mtv_provider_auto_retrieve_cert>-
mtv_provider_source_type>-
mtv_provider_source_host>-
mtv_provider_source_sdk_endpointSDK endpoint path appended to the source host URL for VMware providers.
mtv_provider_source_vddkVDDK configuration dictionary from the source host vars.
mtv_provider_managed_by_labelValue of the app.kubernetes.io/managed-by label applied to CRs.
+`mtv_provider_api_version`: Forklift API version for Provider CRs. +
+`mtv_provider_auto_retrieve_cert`: >- +
+`mtv_provider_managed_by_label`: Value of the app.kubernetes.io/managed-by label applied to CRs. +
+`mtv_provider_provider_namespace`: >- +
+`mtv_provider_provider_override`: Override configuration merged into the Provider CR spec. +
+`mtv_provider_provider_state`: Desired state of the provider — present or absent. +
+`mtv_provider_provider_wait`: Whether to wait for the Provider CR to reach Ready status after creation. +
+`mtv_provider_provider_wait_poll`: Seconds between status polls while waiting for Ready. +
+`mtv_provider_provider_wait_timeout`: Seconds to wait for the Provider to become Ready before failing. +
+`mtv_provider_secure_logging`: Whether to enable secure logging for sensitive tasks. +
+`mtv_provider_source_host`: >- +
+`mtv_provider_source_sdk_endpoint`: SDK endpoint path appended to the source host URL for VMware providers. +
+`mtv_provider_source_type`: >- +
+`mtv_provider_source_vddk`: VDDK configuration dictionary from the source host vars. +

-
- - - - ### Tasks - -#### File: tasks/create_provider.yml +#### File: tasks/main.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| create_provider ¦ Ensure provider secret exists | redhat.openshift.k8s | False | -| create_provider ¦ Ensure provider CR exists | redhat.openshift.k8s | False | -| create_provider ¦ Wait for provider to become Ready | kubernetes.core.k8s_info | True | -| create_provider ¦ Provider created successfully | ansible.builtin.debug | False | +| ---- | ------ | --------- | +| Configure MTV provider for source-target pair | `block` | False | +| Validate inputs and resolve provider variables | `ansible.builtin.include_tasks` | False | +| Create provider secret and CR on target cluster | `ansible.builtin.include_tasks` | False | -#### File: tasks/main.yml +#### File: tasks/create_provider.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| Configure MTV provider for source-target pair | block | False | -| Validate inputs and resolve provider variables | ansible.builtin.include_tasks | False | -| Create provider secret and CR on target cluster | ansible.builtin.include_tasks | False | +| ---- | ------ | --------- | +| create_provider ¦ Ensure provider secret exists | `redhat.openshift.k8s` | False | +| create_provider ¦ Ensure provider CR exists | `redhat.openshift.k8s` | False | +| create_provider ¦ Wait for provider to become Ready | `kubernetes.core.k8s_info` | True | +| create_provider ¦ Provider created successfully | `ansible.builtin.debug` | False | #### File: tasks/rescue_provider.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| rescue_provider ¦ Fetch provider status | kubernetes.core.k8s_info | False | -| rescue_provider ¦ Warn if cluster query failed | ansible.builtin.debug | True | -| rescue_provider ¦ Extract error details | ansible.builtin.set_fact | True | -| rescue_provider ¦ Display provider error status | ansible.builtin.debug | False | -| rescue_provider ¦ Fail with summary | ansible.builtin.fail | False | +| ---- | ------ | --------- | +| rescue_provider ¦ Fetch provider status | `kubernetes.core.k8s_info` | False | +| rescue_provider ¦ Warn if cluster query failed | `ansible.builtin.debug` | True | +| rescue_provider ¦ Extract error details | `ansible.builtin.set_fact` | True | +| rescue_provider ¦ Display provider error status | `ansible.builtin.debug` | False | +| rescue_provider ¦ Fail with summary | `ansible.builtin.fail` | False | #### File: tasks/validate.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| validate ¦ Assert required survey variables are defined | ansible.builtin.assert | False | -| validate ¦ Assert target exists in AAP inventory | ansible.builtin.assert | False | -| validate ¦ Assert source exists in AAP inventory | ansible.builtin.assert | False | -| validate ¦ Assert source is mapped to this target | ansible.builtin.assert | False | -| validate ¦ Assert source host variable is defined | ansible.builtin.assert | False | -| validate ¦ Assert source credentials are injected | ansible.builtin.assert | False | -| validate ¦ Assert provider_override does not contain managed keys | ansible.builtin.assert | True | -| validate ¦ Assert source type is supported | ansible.builtin.assert | False | -| validate ¦ Check Forklift CRD exists on target cluster | kubernetes.core.k8s_info | False | -| validate ¦ Assert MTV operator is installed | ansible.builtin.assert | False | -| validate ¦ Resolve provider variables | ansible.builtin.set_fact | False | -| validate ¦ Retrieve source TLS certificate | block | True | -| validate ¦ Retrieve remote certificate from source | community.crypto.get_certificate | False | -| validate ¦ Store retrieved certificate | ansible.builtin.set_fact | False | -| validate ¦ Resolve effective certificate | ansible.builtin.set_fact | False | - - - - - - +| ---- | ------ | --------- | +| validate ¦ Assert required survey variables are defined | `ansible.builtin.assert` | False | +| validate ¦ Assert target exists in AAP inventory | `ansible.builtin.assert` | False | +| validate ¦ Assert source exists in AAP inventory | `ansible.builtin.assert` | False | +| validate ¦ Assert source is mapped to this target | `ansible.builtin.assert` | False | +| validate ¦ Assert source host variable is defined | `ansible.builtin.assert` | False | +| validate ¦ Assert source credentials are injected | `ansible.builtin.assert` | False | +| validate ¦ Assert provider_override does not contain managed keys | `ansible.builtin.assert` | True | +| validate ¦ Assert source type is supported | `ansible.builtin.assert` | False | +| validate ¦ Check Forklift CRD exists on target cluster | `kubernetes.core.k8s_info` | False | +| validate ¦ Assert MTV operator is installed | `ansible.builtin.assert` | False | +| validate ¦ Resolve provider variables | `ansible.builtin.set_fact` | False | +| validate ¦ Retrieve source TLS certificate | `block` | True | +| validate ¦ Retrieve remote certificate from source | `community.crypto.get_certificate` | False | +| validate ¦ Store retrieved certificate | `ansible.builtin.set_fact` | False | +| validate ¦ Resolve effective certificate | `ansible.builtin.set_fact` | False | + +## Task Flow Graphs + +### Graph for create_provider.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| create_provider___Ensure_provider_secret_exists0[create provider ensure provider secret exists]:::task + create_provider___Ensure_provider_secret_exists0-->|Task| create_provider___Ensure_provider_CR_exists1[create provider ensure provider cr exists]:::task + create_provider___Ensure_provider_CR_exists1-->|Task| create_provider___Wait_for_provider_to_become_Ready2[create provider wait for provider to become
ready
When: **mtv provider provider wait bool**]:::task + create_provider___Wait_for_provider_to_become_Ready2-->|Task| create_provider___Provider_created_successfully3[create provider provider created successfully]:::task + create_provider___Provider_created_successfully3-->End +``` + +### Graph for main.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Block Start| Configure_MTV_provider_for_source_target_pair0_block_start_0[[configure mtv provider for source target pair]]:::block + Configure_MTV_provider_for_source_target_pair0_block_start_0-->|Include task| Validate_inputs_and_resolve_provider_variables_validate_yml_0[validate inputs and resolve provider variables
include_task: validate yml]:::includeTasks + Validate_inputs_and_resolve_provider_variables_validate_yml_0-->|Include task| Create_provider_secret_and_CR_on_target_cluster_create_provider_yml_1[create provider secret and cr on target cluster
include_task: create provider yml]:::includeTasks + Create_provider_secret_and_CR_on_target_cluster_create_provider_yml_1-.->|End of Block| Configure_MTV_provider_for_source_target_pair0_block_start_0 + Create_provider_secret_and_CR_on_target_cluster_create_provider_yml_1-->|Rescue Start| Configure_MTV_provider_for_source_target_pair0_rescue_start_0[configure mtv provider for source target pair]:::rescue + Configure_MTV_provider_for_source_target_pair0_rescue_start_0-->|Include task| Gather_provider_error_details_and_fail_rescue_provider_yml_0[gather provider error details and fail
include_task: rescue provider yml]:::includeTasks + Gather_provider_error_details_and_fail_rescue_provider_yml_0-.->|End of Rescue Block| Configure_MTV_provider_for_source_target_pair0_block_start_0 + Gather_provider_error_details_and_fail_rescue_provider_yml_0-->End +``` + +### Graph for rescue_provider.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| rescue_provider___Fetch_provider_status0[rescue provider fetch provider status]:::task + rescue_provider___Fetch_provider_status0-->|Task| rescue_provider___Warn_if_cluster_query_failed1[rescue provider warn if cluster query failed
When: **mtv provider failed result is failed**]:::task + rescue_provider___Warn_if_cluster_query_failed1-->|Task| rescue_provider___Extract_error_details2[rescue provider extract error details
When: **mtv provider failed result resources default
length 0**]:::task + rescue_provider___Extract_error_details2-->|Task| rescue_provider___Display_provider_error_status3[rescue provider display provider error status]:::task + rescue_provider___Display_provider_error_status3-->|Task| rescue_provider___Fail_with_summary4[rescue provider fail with summary]:::task + rescue_provider___Fail_with_summary4-->End +``` + +### Graph for validate.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| validate___Assert_required_survey_variables_are_defined0[validate assert required survey variables are
defined]:::task + validate___Assert_required_survey_variables_are_defined0-->|Task| validate___Assert_target_exists_in_AAP_inventory1[validate assert target exists in aap inventory]:::task + validate___Assert_target_exists_in_AAP_inventory1-->|Task| validate___Assert_source_exists_in_AAP_inventory2[validate assert source exists in aap inventory]:::task + validate___Assert_source_exists_in_AAP_inventory2-->|Task| validate___Assert_source_is_mapped_to_this_target3[validate assert source is mapped to this target]:::task + validate___Assert_source_is_mapped_to_this_target3-->|Task| validate___Assert_source_host_variable_is_defined4[validate assert source host variable is defined]:::task + validate___Assert_source_host_variable_is_defined4-->|Task| validate___Assert_source_credentials_are_injected5[validate assert source credentials are injected]:::task + validate___Assert_source_credentials_are_injected5-->|Task| validate___Assert_provider_override_does_not_contain_managed_keys6[validate assert provider override does not
contain managed keys
When: **mtv provider provider override length 0**]:::task + validate___Assert_provider_override_does_not_contain_managed_keys6-->|Task| validate___Assert_source_type_is_supported7[validate assert source type is supported]:::task + validate___Assert_source_type_is_supported7-->|Task| validate___Check_Forklift_CRD_exists_on_target_cluster8[validate check forklift crd exists on target
cluster]:::task + validate___Check_Forklift_CRD_exists_on_target_cluster8-->|Task| validate___Assert_MTV_operator_is_installed9[validate assert mtv operator is installed]:::task + validate___Assert_MTV_operator_is_installed9-->|Task| validate___Resolve_provider_variables10[validate resolve provider variables]:::task + validate___Resolve_provider_variables10-->|Block Start| validate___Retrieve_source_TLS_certificate11_block_start_0[[validate retrieve source tls certificate
When: **mtv provider auto retrieve cert bool and not mf
insecure skip tls verify default false bool
and mf source certificate default trim
length 0**]]:::block + validate___Retrieve_source_TLS_certificate11_block_start_0-->|Task| validate___Retrieve_remote_certificate_from_source0[validate retrieve remote certificate from source]:::task + validate___Retrieve_remote_certificate_from_source0-->|Task| validate___Store_retrieved_certificate1[validate store retrieved certificate]:::task + validate___Store_retrieved_certificate1-.->|End of Block| validate___Retrieve_source_TLS_certificate11_block_start_0 + validate___Store_retrieved_certificate1-->|Task| validate___Resolve_effective_certificate12[validate resolve effective certificate]:::task + validate___Resolve_effective_certificate12-->End +``` ## Author Information + Red Hat -#### License +## License GPL-3.0-or-later -#### Minimum Ansible Version +## Minimum Ansible Version 2.16 -#### Platforms +## Platforms No platforms specified. -#### Dependencies - -No dependencies specified. - + \ No newline at end of file diff --git a/roles/mtv_query_inventory/README.md b/roles/mtv_query_inventory/README.md index ebc84c4..fceec74 100644 --- a/roles/mtv_query_inventory/README.md +++ b/roles/mtv_query_inventory/README.md @@ -93,7 +93,7 @@ Description: Queries MTV inventory. * **mtv_query_inventory_url**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: URL of the MTV Inventory Service. If not provided, the URL will be determined from the MTV Inventory Route. diff --git a/roles/utility_aap_deploy/README.md b/roles/utility_aap_deploy/README.md index db8d523..591f8cc 100644 --- a/roles/utility_aap_deploy/README.md +++ b/roles/utility_aap_deploy/README.md @@ -45,7 +45,7 @@ Description: Deploys an instance of Ansible Automation Platform. * **utility_aap_deploy_aap_license_manifest**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Location of the AAP license manifest file. * **utility_aap_deploy_aap_namespace**: * **Required**: False @@ -150,7 +150,7 @@ Description: Deploys an instance of Ansible Automation Platform. * **utility_aap_deploy_rh_subscription_id**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Red Hat subscription ID. * **utility_aap_deploy_rh_username**: * **Required**: False diff --git a/roles/utility_openshift_target_credential/README.md b/roles/utility_openshift_target_credential/README.md index 73f3acd..f6cf7cd 100644 --- a/roles/utility_openshift_target_credential/README.md +++ b/roles/utility_openshift_target_credential/README.md @@ -1,213 +1,170 @@ - -# 📃 Role overview - ## utility_openshift_target_credential - +``` +Role belongs to infra/openshift_virtualization_migration +Namespace - infra +Collection - openshift_virtualization_migration +Version - 1.25.0 +Repository - https://github.com/redhat-cop/openshift_virtualization_migration +``` Description: A utility role to manage OpenShift target cluster credentials for migration -| Field | Value | -|--------------------- |-----------------| -| Readme update | 2026/09/02 | - - - +### Argument Specifications
-🧩 Argument Specifications in meta/argument_specs +🧩 Argument Specifications in `meta/argument_specs` #### Key: main -**Description**: - - -**Options**: - - - - **utility_openshift_target_credential_openshift_host** - - **Required**: True - - **Type**: str - - **Default**: none - - - **Description**: OpenShift host. - - - - - - **utility_openshift_target_credential_openshift_api_key** - - **Required**: True - - **Type**: str - - **Default**: none - - - **Description**: OpenShift API key. - - - - - - **utility_openshift_target_credential_openshift_ca_cert_path** - - **Required**: False - - **Type**: str - - **Default**: none - - - **Description**: Path to the OpenShift CA Certificate. - - - - - - **utility_openshift_target_credential_openshift_verify_ssl** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Whether to verify SSL certificates. - - - - - - **utility_openshift_target_credential_resource_name** - - **Required**: False - - **Type**: str - - **Default**: migration-factory-aap-credential - - - **Description**: Name applied to the OpenShift target credential resource. - - - - - - **utility_openshift_target_credential_resource_namespace** - - **Required**: False - - **Type**: str - - **Default**: openshift-config - - - **Description**: Namespace applied to the OpenShift target credential resource. - - - - - - **utility_openshift_target_credential_cluster_role** - - **Required**: False - - **Type**: str - - **Default**: cluster-admin - - - **Description**: Cluster Role applied to the generated OpenShift Service Account. - - - - - - **utility_openshift_target_credential_managed_by_label** - - **Required**: False - - **Type**: str - - **Default**: ansible - - - **Description**: Value of the app.kubernetes.io/managed-by label applied to resources. - - - - - - **utility_openshift_target_credential_secure_logging** - - **Required**: False - - **Type**: bool - - **Default**: True - - - **Description**: Whether to enable secure logging. - - - - - - **utility_openshift_target_credential_display_credential** - - **Required**: False - - **Type**: bool - - **Default**: False - - - **Description**: Whether to display the credential. - - - - - +* **Description**: Creates a long lived Service Account token in OpenShift for use by Ansible Automation Platform. +* **Options**: + * **utility_openshift_target_credential_cluster_role**: + * **Required**: False + * **Type**: str + * **Default**: cluster-admin + * **Description**: Cluster Role applied to the generated OpenShift Service Account. + * **utility_openshift_target_credential_display_credential**: + * **Required**: False + * **Type**: bool + * **Default**: False + * **Description**: Whether to display the credential. + * **utility_openshift_target_credential_managed_by_label**: + * **Required**: False + * **Type**: str + * **Default**: ansible + * **Description**: Value of the app.kubernetes.io/managed-by label applied to resources. + * **utility_openshift_target_credential_openshift_api_key**: + * **Required**: True + * **Type**: str + * **Default**: none + * **Description**: OpenShift API key. + * **utility_openshift_target_credential_openshift_ca_cert_path**: + * **Required**: False + * **Type**: str + * **Default**: none + * **Description**: Path to the OpenShift CA Certificate. + * **utility_openshift_target_credential_openshift_host**: + * **Required**: True + * **Type**: str + * **Default**: none + * **Description**: OpenShift host. + * **utility_openshift_target_credential_openshift_verify_ssl**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Whether to verify SSL certificates. + * **utility_openshift_target_credential_resource_name**: + * **Required**: False + * **Type**: str + * **Default**: migration-factory-aap-credential + * **Description**: Name applied to the OpenShift target credential resource. + * **utility_openshift_target_credential_resource_namespace**: + * **Required**: False + * **Type**: str + * **Default**: openshift-config + * **Description**: Namespace applied to the OpenShift target credential resource. + * **utility_openshift_target_credential_secure_logging**: + * **Required**: False + * **Type**: bool + * **Default**: True + * **Description**: Whether to enable secure logging.
- - - ### Defaults **These are static variables with lower priority** #### File: defaults/main.yml -| Var | Type | Value |Required | Title | -|--------------|--------------|-------------|------------|-------------| -| [utility_openshift_target_credential_openshift_host](defaults/main.yml#L7) | str | `{{ openshift_host }}` | True | OpenShift Host | -| [utility_openshift_target_credential_openshift_api_key](defaults/main.yml#L12) | str | `` | True | OpenShift API Key | -| [utility_openshift_target_credential_openshift_ca_cert_path](defaults/main.yml#L23) | str | `{{ openshift_ca_cert_path ¦ default(omit) }}` | False | OpenShift CA Certificate Path | -| [utility_openshift_target_credential_openshift_verify_ssl](defaults/main.yml#L28) | str | `{{ openshift_verify_ssl ¦ default(true) }}` | False | OpenShift Verify SSL | -| [utility_openshift_target_credential_resource_name](defaults/main.yml#L33) | str | `migration-factory-aap-credential` | False | Name applied to the OpenShift target credential resource | -| [utility_openshift_target_credential_resource_namespace](defaults/main.yml#L38) | str | `openshift-config` | False | Namespace applied to the OpenShift target credential resource | -| [utility_openshift_target_credential_cluster_role](defaults/main.yml#L43) | str | `cluster-admin` | False | Cluster Role applied to the generated OpenShift Service Account | -| [utility_openshift_target_credential_managed_by_label](defaults/main.yml#L48) | str | `ansible-migration-factory` | False | Managed By Label | -| [utility_openshift_target_credential_secure_logging](defaults/main.yml#L53) | str | `{{ secure_logging ¦ default(true) }}` | False | Secure Logging | -| [utility_openshift_target_credential_display_credential](defaults/main.yml#L58) | bool | `False` | False | Display Credential | -
+| Var | Type | Value |Choices |Required | Title | +|--------------|--------------|-------------|-------------|-------------|-------------| +| [`utility_openshift_target_credential_cluster_role`](defaults/main.yml#L43) | str | `cluster-admin` | None | False | Cluster Role applied to the generated OpenShift Service Account | +| [`utility_openshift_target_credential_display_credential`](defaults/main.yml#L58) | bool | `False` | None | False | Display Credential | +| [`utility_openshift_target_credential_managed_by_label`](defaults/main.yml#L48) | str | `ansible-migration-factory` | None | False | Managed By Label | +| [`utility_openshift_target_credential_openshift_api_key`](defaults/main.yml#L12) | str | `` | None | True | OpenShift API Key | +| [`utility_openshift_target_credential_openshift_ca_cert_path`](defaults/main.yml#L23) | str | `{{ openshift_ca_cert_path ¦ default(omit) }}` | None | False | OpenShift CA Certificate Path | +| [`utility_openshift_target_credential_openshift_host`](defaults/main.yml#L7) | str | `{{ openshift_host }}` | None | True | OpenShift Host | +| [`utility_openshift_target_credential_openshift_verify_ssl`](defaults/main.yml#L28) | str | `{{ openshift_verify_ssl ¦ default(true) }}` | None | False | OpenShift Verify SSL | +| [`utility_openshift_target_credential_resource_name`](defaults/main.yml#L33) | str | `migration-factory-aap-credential` | None | False | Name applied to the OpenShift target credential resource | +| [`utility_openshift_target_credential_resource_namespace`](defaults/main.yml#L38) | str | `openshift-config` | None | False | Namespace applied to the OpenShift target credential resource | +| [`utility_openshift_target_credential_secure_logging`](defaults/main.yml#L53) | str | `{{ secure_logging ¦ default(true) }}` | None | False | Secure Logging | + 🖇️ Full descriptions for vars in defaults/main.yml
- - - - - - - - - - - - -
VarDescription
utility_openshift_target_credential_openshift_hostOpenShift host.
utility_openshift_target_credential_openshift_api_keyOpenShift API key.
utility_openshift_target_credential_openshift_ca_cert_pathPath to the OpenShift CA Certificate.
utility_openshift_target_credential_openshift_verify_sslWhether to verify SSL certificates.
utility_openshift_target_credential_resource_nameName applied to the OpenShift target credential resource.
utility_openshift_target_credential_resource_namespaceNamespace applied to the OpenShift target credential resource.
utility_openshift_target_credential_cluster_roleCluster Role applied to the generated OpenShift Service Account.
utility_openshift_target_credential_managed_by_labelValue of the app.kubernetes.io/managed-by label applied to resources.
utility_openshift_target_credential_secure_loggingWhether to enable secure logging.
utility_openshift_target_credential_display_credentialWhether to display the credential.
+`utility_openshift_target_credential_cluster_role`: Cluster Role applied to the generated OpenShift Service Account. +
+`utility_openshift_target_credential_display_credential`: Whether to display the credential. +
+`utility_openshift_target_credential_managed_by_label`: Value of the app.kubernetes.io/managed-by label applied to resources. +
+`utility_openshift_target_credential_openshift_api_key`: OpenShift API key. +
+`utility_openshift_target_credential_openshift_ca_cert_path`: Path to the OpenShift CA Certificate. +
+`utility_openshift_target_credential_openshift_host`: OpenShift host. +
+`utility_openshift_target_credential_openshift_verify_ssl`: Whether to verify SSL certificates. +
+`utility_openshift_target_credential_resource_name`: Name applied to the OpenShift target credential resource. +
+`utility_openshift_target_credential_resource_namespace`: Namespace applied to the OpenShift target credential resource. +
+`utility_openshift_target_credential_secure_logging`: Whether to enable secure logging. +

-
- - - - ### Tasks - #### File: tasks/main.yml | Name | Module | Has Conditions | -| ---- | ------ | -------------- | -| Create OpenShift target credential resources | redhat.openshift.k8s | False | -| Display credential | block | True | -| Wait for credential token to be populated | kubernetes.core.k8s_info | False | -| Display credential token which can be used to authenticate to the target OpenShift cluster | ansible.builtin.debug | False | - - - - - - +| ---- | ------ | --------- | +| Create OpenShift target credential resources | `redhat.openshift.k8s` | False | +| Display credential | `block` | True | +| Wait for credential token to be populated | `kubernetes.core.k8s_info` | False | +| Display credential token which can be used to authenticate to the target OpenShift cluster | `ansible.builtin.debug` | False | + +## Task Flow Graphs + +### Graph for main.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| Create_OpenShift_target_credential_resources0[create openshift target credential resources]:::task + Create_OpenShift_target_credential_resources0-->|Block Start| Display_credential1_block_start_0[[display credential
When: **utility openshift target credential display
credential bool**]]:::block + Display_credential1_block_start_0-->|Task| Wait_for_credential_token_to_be_populated0[wait for credential token to be populated]:::task + Wait_for_credential_token_to_be_populated0-->|Task| Display_credential_token_which_can_be_used_to_authenticate_to_the_target_OpenShift_cluster1[display credential token which can be used to
authenticate to the target openshift cluster]:::task + Display_credential_token_which_can_be_used_to_authenticate_to_the_target_OpenShift_cluster1-.->|End of Block| Display_credential1_block_start_0 + Display_credential_token_which_can_be_used_to_authenticate_to_the_target_OpenShift_cluster1-->End +``` ## Author Information -Unknown Author -#### License +OpenShift Virtualization Migration Contributors + +## License GPL-3.0-only -#### Minimum Ansible Version +## Minimum Ansible Version 2.15.0 -#### Platforms +## Platforms No platforms specified. -#### Dependencies - -No dependencies specified. - + \ No newline at end of file From a7fe72f99161b357a79eeacfbd5573fa116eb31b Mon Sep 17 00:00:00 2001 From: John Best Date: Wed, 2 Sep 2026 12:00:40 -0500 Subject: [PATCH 5/6] fix(v2): strip trailing whitespace from docsible-generated READMEs Co-authored-by: Cursor --- roles/aap_seed/README.md | 10 +++++----- roles/mtv_query_inventory/README.md | 2 +- roles/utility_aap_deploy/README.md | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/roles/aap_seed/README.md b/roles/aap_seed/README.md index 1a4dc95..257a9b8 100644 --- a/roles/aap_seed/README.md +++ b/roles/aap_seed/README.md @@ -68,22 +68,22 @@ Description: Seed AAP with Migration Factory Configuration as Code content * **aap_seed_git_password**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Git password or personal access token. Defaults to C(aap_git_password) from inventory. * **aap_seed_git_ssh_key**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: SSH private key for Git authentication. Defaults to C(aap_git_ssh_key) from inventory. * **aap_seed_git_ssh_key_unlock**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Passphrase to unlock the SSH key. Defaults to C(aap_git_ssh_key_unlock) from inventory. * **aap_seed_git_username**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Git username for HTTPS authentication. Defaults to C(aap_git_username) from inventory. * **aap_seed_hostname**: * **Required**: False @@ -133,7 +133,7 @@ Description: Seed AAP with Migration Factory Configuration as Code content * **aap_seed_project_credential**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Name of the Git credential to create and attach to the SCM project. Leave empty to skip. Defaults to C(aap_project_credential) from inventory. * **aap_seed_project_name**: * **Required**: False diff --git a/roles/mtv_query_inventory/README.md b/roles/mtv_query_inventory/README.md index fceec74..ebc84c4 100644 --- a/roles/mtv_query_inventory/README.md +++ b/roles/mtv_query_inventory/README.md @@ -93,7 +93,7 @@ Description: Queries MTV inventory. * **mtv_query_inventory_url**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: URL of the MTV Inventory Service. If not provided, the URL will be determined from the MTV Inventory Route. diff --git a/roles/utility_aap_deploy/README.md b/roles/utility_aap_deploy/README.md index 591f8cc..db8d523 100644 --- a/roles/utility_aap_deploy/README.md +++ b/roles/utility_aap_deploy/README.md @@ -45,7 +45,7 @@ Description: Deploys an instance of Ansible Automation Platform. * **utility_aap_deploy_aap_license_manifest**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Location of the AAP license manifest file. * **utility_aap_deploy_aap_namespace**: * **Required**: False @@ -150,7 +150,7 @@ Description: Deploys an instance of Ansible Automation Platform. * **utility_aap_deploy_rh_subscription_id**: * **Required**: False * **Type**: str - * **Default**: + * **Default**: * **Description**: Red Hat subscription ID. * **utility_aap_deploy_rh_username**: * **Required**: False From cfa501c5ca8385c793484bb3ccbce585f085ebc6 Mon Sep 17 00:00:00 2001 From: John Best Date: Wed, 2 Sep 2026 12:06:05 -0500 Subject: [PATCH 6/6] fix(v2): add static H1 headers to role READMEs for markdownlint READMEs generated by docsible start with H2 (## role_name) which violates MD041 (first-line-heading). Add a STATIC CONTENT block with an H1 header to aap_seed, mtv_provider, and utility_openshift_target_credential, matching the pattern used by mtv_query_inventory. Co-authored-by: Cursor --- roles/aap_seed/README.md | 6 ++++++ roles/mtv_provider/README.md | 6 ++++++ roles/utility_openshift_target_credential/README.md | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/roles/aap_seed/README.md b/roles/aap_seed/README.md index 257a9b8..265092a 100644 --- a/roles/aap_seed/README.md +++ b/roles/aap_seed/README.md @@ -1,3 +1,9 @@ + +# aap_seed + +Seed AAP with Migration Factory Configuration as Code content. + + ## aap_seed diff --git a/roles/mtv_provider/README.md b/roles/mtv_provider/README.md index 4cfb1d8..4af5772 100644 --- a/roles/mtv_provider/README.md +++ b/roles/mtv_provider/README.md @@ -1,3 +1,9 @@ + +# mtv_provider + +Create MTV/Forklift source provider CRs on OpenShift target clusters. + + ## mtv_provider diff --git a/roles/utility_openshift_target_credential/README.md b/roles/utility_openshift_target_credential/README.md index f6cf7cd..5f95034 100644 --- a/roles/utility_openshift_target_credential/README.md +++ b/roles/utility_openshift_target_credential/README.md @@ -1,3 +1,9 @@ + +# utility_openshift_target_credential + +Manage OpenShift target cluster credentials for migration automation. + + ## utility_openshift_target_credential