{"id":37670631,"url":"https://github.com/itential/itential.iag5","last_synced_at":"2026-01-16T12:03:43.112Z","repository":{"id":319896544,"uuid":"1030383304","full_name":"itential/itential.iag5","owner":"itential","description":"Ansible collection for installing and operating the Itential Gateway version 5","archived":false,"fork":false,"pushed_at":"2025-10-20T18:57:35.000Z","size":63,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-20T20:41:32.738Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itential.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-01T14:44:08.000Z","updated_at":"2025-10-20T18:57:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"a8554cec-80e9-495e-87a6-63ecb3e061a1","html_url":"https://github.com/itential/itential.iag5","commit_stats":null,"previous_names":["itential/itential.iag5"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/itential/itential.iag5","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itential%2Fitential.iag5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itential%2Fitential.iag5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itential%2Fitential.iag5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itential%2Fitential.iag5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itential","download_url":"https://codeload.github.com/itential/itential.iag5/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itential%2Fitential.iag5/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T12:03:43.011Z","updated_at":"2026-01-16T12:03:43.103Z","avatar_url":"https://github.com/itential.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Collection - itential.iag5\n\n## Table of contents\n\n1. [Overview](#overview)\n2. [Supported Architectures](#supported-architectures)\n3. [Collection Prerequisites](#collection-prerequisites)\n    1. [Required Python, Ansible, and Ansible modules](#required-python-ansible-and-ansible-modules)\n    2. [Required Public Repositories](#required-public-repositories)\n    3. [Ports and Networking](#ports-and-networking)\n    4. [TLS Certificates](#tls-certificates)\n    6. [Obtaining the Itential Binaries](#obtaining-the-itential-artifacts)\n4. [Installing and Upgrading the IAG5 Ansible Collection](#installing-and-upgrading-the-iag5-ansible-collection)\n    1. [Online Installation](#online-installation)\n    2. [Offline Installation](#offline-installation)\n5. [Running the Playbooks](#running-the-playbooks)\n    1. [Confirm Requirements](#confirm-requirements)\n    2. [Determine the Working and IAG5 Collection Directories](#determine-the-working-and-iag5-collection-directories)\n    3. [Create the Inventories Directory](#create-the-inventories-directory)\n    4. [Download Installation Artifacts](#download-installation-artifacts)\n    5. [Copy Installation Artifacts into the Files Directory](#copy-installation-artifacts-into-the-files-directory)\n    6. [Create a Symlink to the Files Directory](#create-a-symlink-to-the-files-directory)\n    7. [Create the Inventory File](#create-the-inventory-file)\n    8. [Run the IAG5 Site Playbook](#run-the-iag5-site-playbook)\n    9. [Confirm Successful Installation](#confirm-successful-installation)\n    10. [Running the IAG5 Component Playbooks](#running-the-iag5-component-playbooks)\n        1. [Clients Playbook](#clients-playbook)\n        2. [Servers Playbook](#servers-playbook)\n        3. [Runners Playbook](#runners-playbook)\n6. [Sample Inventories](#sample-inventories)\n    1. [All-in-one Single Node Inventory](#all-in-one-single-node-inventory)\n    2. [All-in-one Active/Standby High Availability Inventory](#all-in-one-activestandby-high-availability-inventory)\n    3. [Distributed Service Execution with Single Cluster Inventory](#distributed-service-execution-with-single-cluster-inventory)\n    4. [High Availability with Distributed Execution Inventory](#high-availability-with-distributed-execution-inventory)\n    5. [Multiple Cluster Architecture Inventories](#multiple-cluster-architecture-inventories)\n7. [Reference Guide](#reference-guide)\n8. [Patching IAG5](#patching-iag5)\n\n## Overview\n\nAn IAG5 environment is composed of several applications working in conjunction with one another.\n\n- IAG5\n  - Client\n  - Server\n  - Runners\n- Etcd\n- DynamoDB\n\nThe Itential IAG5 collection can deploy all supported Itential IAG5 architectures. It will only\ninstall and configure the IAG5 components listed above; it does not handle installing/configuring\nEtcd or DynamoDB.\n\n## Supported Architectures\n\n- [All-in-one Single Node](https://docs.itential.com/docs/architecture-deployment-models#1-allinone-singlenode-deployment)\n- [All-in-one Active/Standby High Availability](https://docs.itential.com/docs/architecture-deployment-models#2-allinone-activestandby-high-availability-deployment)\n- [Distributed Service Execution with Single Cluster](https://docs.itential.com/docs/architecture-deployment-models#3-distributed-service-execution-with-single-cluster)\n- [High Availability with Distributed Execution](https://docs.itential.com/docs/architecture-deployment-models#4-high-availability-with-distributed-execution)\n- [Multiple Cluster Architecture](https://docs.itential.com/docs/architecture-deployment-models#5-multiple-cluster-architecture)\n\n## Collection Prerequisites\n\nThe Itential IAG5 collection is an Ansible collection and as such requires running on a control\nnode. That node has its own set of dependencies.\n\n### Control Node Server Specifications\n\nItential recommends using a dedicated node running the requirements listed below as the Ansible\ncontrol node. That node should meet or exceed the following specifications:\n\n| Component | Value                |\n|-----------|----------------------|\n| OS        | RHEL8/9 or Rocky 8/9 |\n| RAM       | 4 GB                 |\n| CPUs      | 2                    |\n| Disk      | 20 GB                |\n\n### Required Python, Ansible, and Ansible modules\n\nThe **Ansible Control Node** must have the following installed:\n\n- **Python**\n  - python \u003e= 3.9\n\n- **Ansible**\n  - ansible-core \u003e= 2.11, \u003c 2.17\n  - ansible: \u003e=9.x.x\n\nTo see which Ansible version is currently installed, execute the `ansible --version` command as\nshown below.\n\n#### Example: Confirming Ansible Version\n\n  ```bash\n  ansible [core 2.15.13]\n    config file = None\n    configured module search path = ['/home/\u003cUSER\u003e/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']\n    ansible python module location = /home/\u003cUSER\u003e/.local/lib/python3.9/site-packages/ansible\n    ansible collection location = /home/\u003cUSER\u003e/.ansible/collections:/usr/share/ansible/collections\n    executable location = /home/\u003cUSER\u003e/.local/bin/ansible\n    python version = 3.9.21 (main, Jun 27 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)\n    jinja version = 3.1.6\n    libyaml = True\n  ```\n\n- **Ansible Modules**: The following ansible modules are required on the control node for the\nIAG5 collection to run.\n  - 'ansible.posix': '\u003e=0.0.1'\n\n**\u0026#9432; Note:**\nThe Itential IAG5 project is an Ansible collection. As such, a familiarity with basic Ansible\nconcepts is suggested before proceeding.\n\n### Required Public Repositories\n\nOn the Ansible control node, the Ansible Python module and the IAG5 collection\nwill need to be installed.\n\nOn the target servers, the IAG5 collection will install RPM packages using the standard YUM\nrepositories. When packages are not available for the distribution, the IAG collection will either\ninstall the required repository or download the packages.\n\n| Component | Location | Protocol | Notes |\n| :-------- | :------- | :------- | :---- |\n| Ansible Control Node | \u003chttps://pypi.org\u003e | TCP | |\n| Ansible Control Node | \u003chttps://galaxy.ansible.com\u003e | TCP | |\n| IAG5 | \u003chttps://galaxy.ansible.com\u003e | TCP | |\n| IAG5 | \u003chttps://registry.aws.itential.com\u003e | TCP | |\n\n\u003e [! WARNING]\n\u003e Neither the IAG5 collection nor the maintainers of the project can not know if any of the above\n\u003e URLs will result in a redirect. If a customer is using a proxy or other such method to restrict\n\u003e access this list may not represent the final URLs that are used.\n\n### Ports and Networking\n\nIn a clustered environment where components are installed on more than one host, the following\nnetwork traffic flows need to be allowed.\n\n| Source | Destination | Port | Protocol | Description |\n| ------ | ----------- | ---- | -------- | ----------- |\n| IAG5 | Itential Gateway Manager | 8080 | TCP | IAG5 connection to Itential Gateway Manager (on-prem) |\n| IAG5 | Itential Gateway Manager | 443 | TCP | IAG5 connection to Itential Gateway Manager (cloud) |\n| IAG5 Client | IAG5 Server | 50051 | TCP | IAG5 Client connection to IAG5 Server |\n| IAG5 Server | IAG5 Runner | 50051 | TCP | IAG5 Server connection to IAG5 Runner |\n| IAG5 Server/Runner | DynamoDB | 443 | TCP | IAG5 Server/Runner connection to DynamoDB |\n| IAG5 Server/Runner | Etcd | 2379 | TCP | IAG5 Server/Runner connection to Etcd |\n\nNotes\n\n- Not all ports will need to be open for every supported architecture\n- Secure ports are only required when explicitly configured in the inventory\n\n### TLS Certificates\n\nThe IAG5 collection is not responsible for creating any TLS certificates that may be used to\nfurther tighten security in the Itential ecosystem. However, if these certificates are provided it\ncan upload and configure the platform to use them. The table below describes the certificates that\ncan be used and what their purpose is.\n\n| Certificate | Description |\n| :-----------| :-----------|\n| Gateway Manager | Enables secure communication with the Itential Gateway Manager. |\n| IAG5 Client |  |\n| IAG5 Server |  |\n| IAG5 Runner |  |\n\n### Passwords\n\nThe IAG5 collection will create several user accounts in the dependent systems. It uses default\npasswords in all cases and those passwords can be overridden with the defined ansible variables.\nTo override these variables just define the variable in the IAG5 inventory.\n\n### Obtaining the Itential Artifacts\n\nThe IAG5 artifacts are hosted on the Itential Nexus repository. An account is required to access\nItential Nexus. If you do not have an account, contact your Itential Sales representative.\n\n## Installing and Upgrading the IAG5 Ansible Collection\n\n### Online Installation\n\nThe Itential IAG5 collection can be installed via the `ansible-galaxy` utility.\n\nOn your control node, execute the following command to install the collection:\n\n```bash\nansible-galaxy collection install itential.iag5\n```\n\nThis should also install the required Ansible dependencies. When a new version of the IAG5\ncollection is available, you can upgrade using the following command:\n\n```bash\nansible-galaxy collection install itential.iag5 --upgrade\n```\n\n### Offline Installation\n\nIf your control node does not have internet connectivity, the IAG5 collection and its\ndependencies can be downloaded via another system, copied to your control node, and installed\nmanually.\n\n**\u0026#9432; Note:**\nSome of the following collections may already be installed on your control node. To verify, use the\n`ansible-galaxy collection list` command.\n\n1. Download the following collections from the provided links:\n\nTODO\n    - [Itential IAG5](https://galaxy.ansible.com/ui/repo/published/itential/iag5/)\n\n2. Copy the downloaded collections to your control node.\n3. Install the collections using the following command:\n\n    ```bash\n    ansible-galaxy collection install \u003cCOLLECTION\u003e.tar.gz\n    ```\n\n## Running the Playbooks\n\nOnce you have have installed the IAG5 collection, run it to begin deploying IAG5 to your\nenvironment. This section details a basic deployment using required variables only.\n\n### Confirm Requirements\n\nBefore running the IAG5 collection we must ensure the following:\n\n- **Compatible OS**: Any managed nodes to be configured by the IAG5 collection must use an\noperating system that is compatible with the target version of IAG5. For more information, refer\nto the [IAG5 Dependencies](TODO) page.\n- **Hostnames**: Any hostnames used by managed nodes must be DNS-resolvable.\n- **Administrative Privileges**: The `ansible_user` must have administrative privileges on managed\nnodes.\n- **SSH Access**: The control node must have SSH connectivity to all managed nodes.\n\n**\u0026#9432; Note:**\nAlthough the IAG5 collection can be used to configure nodes that use any supported operating\nsystem, it is optimized for Rocky/RHEL 8/9.\n\n### Determine the Working and IAG5 Collection Directories\n\nThe IAG5 collection will be installed into the user's collection directory. Because the IAG5\ncollection will be overwritten when it is upgraded, users should not store any inventory files,\nbinaries or artifacts in the IAG5 collection directory. Instead, users should create a working\ndirectory to store those files.\n\nThe working directory can be any directory on the control node and will be referred to as the\n`WORKING-DIR` in this guide.\n\nDetermine what directory the IAG5 collection is installed to by using the `ansible-galaxy\ncollection list` command. In the following example, the IAG5 collection directory is\n`/home/\u003cUSER\u003e/.ansible/collections/ansible_collections/itential/iag5`.\n\n#### Example: Determining the IAG5 Collection Directory\n\n```bash\n% ansible-galaxy collection list\n\n# //home/\u003cUSER\u003e/.ansible/collections/ansible_collections\nCollection        Version\n----------------- -------\nitential.iag5     1.0.0\n```\n\nThe IAG5 collection directory will be referred to as the `IAG5-DIR` in this guide.\n\n### Create the Inventories Directory\n\nThe `inventories` directory should be a sub-directory of the working directory. It will contain\nthe hosts files.\n\n```bash\ncd \u003cWORKING-DIR\u003e\nmkdir inventories\n```\n\n### Determine Installation Method\n\nChoose one of the following installation methods based on your requirements:\n\n1. **Manual Upload**: Manually download the required files onto the control node in a `files`\ndirectory. The IAG5 collection will move these artifact files to the target nodes.\n2. **Repository Download**: Provide a repository download URL with either a username/password or an\nAPI key. The IAG5 collection will make an API request to download the files directly onto the\ntarget nodes.\n\n### Manual Upload\n\n#### Create the Files Directory\n\nThe `files` directory should be a sub-directory of the working directory. It will contain the\nItential binaries and artifacts.\n\n```bash\ncd \u003cWORKING-DIR\u003e\nmkdir files\n```\n\n#### Download Installation Artifacts\n\nDownload the IAG5 RPMs/tarballs from the [Itential Nexus Repository](TODO) to local storage.\n\n**\u0026#9432; Note:**\nIf you are unsure which files should be downloaded for your environment, contact your Itential\nProfessional Services representative.\n\n#### Copy Installation Artifacts into the Files Directory\n\nNext, copy the files downloaded in the previous step to the `files` subdirectory.\n\n#### Example: Copying to the Files Directory\n\n```bash\ncd \u003cWORKING-DIR\u003e/files\ncp ~/Downloads/iagctl*.rpm .\n```\n\n#### Create a Symlink to the Files Directory\n\nNavigate to the playbooks directory in the IAG5 directory and create a symlink to the files\ndirectory in the working directory.\n\n```bash\ncd \u003cIAG5-DIR\u003e/playbooks\nln -s \u003cWORKING-DIR\u003e/files .\n```\n\n### Repository Download\n\n#### Obtain the Download URL\n\nYou can obtain the download URL from either a **Sonatype Nexus Repository** or **JFrog**. Follow\nthe steps below based on the repository type:\n\n- **For Sonatype Nexus**: Navigate to the file you wish to use and locate the **Path** parameter.\nCopy the link provided in the **Path** field to obtain the download URL.\n- **For JFrog**: Locate the file in the JFrog repository and copy the File URL.\n\nThis download method supports both the IAG5 RPM and tarball files.\n\n#### Configure Repository Credentials\n\nDepending on the repository you are using, you will need to provide the appropriate credentials:\n\n- **For Nexus**: Set the `repository_username` and `repository_password` variables.\n- **For JFrog**: Set the `repository_api_key` variable.\n\n**\u0026#9432; Note:**\nTo secure sensitive information like passwords or API keys, consider using Ansible Vault to encrypt\nthese variables.\n\n### Create the Inventory File\n\nUsing a text editor, create an inventory file that defines your deployment environment. To do this,\nassign your managed nodes to the relevant groups according to what components you would like to\ninstall on them. In the following example:\n\n- All required variables have been defined.\n\n**\u0026#9432; Note:**\nItential recommends that all inventories follow the best practices outlined in the\n[Ansible documentation](https://docs.ansible.com/ansible/latest/getting_started/get_started_inventory.html).\n\n#### Example: Creating the Inventory File\n\n```bash\ncd \u003cWORKING-DIR\u003e\nmkdir -p inventories/dev\nvi inventories/dev/hosts\n```\n\n\u003c/br\u003e\n\n#### Example: Inventory File (YAML Format)\n\n```yaml\nall:\n  vars:\n    ansible_user: \u003cANSIBLE-USER\u003e\n\n    # Nexus\n    repository_username: \u003cNEXUS-USERNAME\u003e\n    repository_password: \u003cNEXUS-PASSWORD\u003e\n\n  children:\n    gateway_all:\n      children:\n        iag5_servers:\n        iag5_clients:\n      vars:\n        gateway_pki_src_dir: \u003cPKI-DIR\u003e\n\n    gateway_servers:\n      children:\n        iag5_servers:\n      vars:\n        gateway_server_packages:\n          - \u003cIAGCTL-RPM\u003e\n        gateway_server_secrets_encrypt_key: \u003cENCRYPT-KEY\u003e\n\n    iag5_servers:\n      hosts:\n        \u003cIAG5-SERVER-HOSTNAME\u003e:\n          ansible_host: \u003cIAG5-SERVER-IP\u003e\n      vars:\n        gateway_server_connect_hosts: \u003cGATEWAY-MANAGER-IP\u003e:8080\n\n    iag5_clients:\n      hosts:\n        \u003cIAG5-CLIENT-HOSTNAME\u003e:\n          ansible_host: \u003cIAG5-CLIENT-IP\u003e\n      vars:\n        gateway_client_host: \u003cIAG5-SERVER-IP\u003e\n        gateway_client_packages:\n          - \u003cIAGCTL-TARBALL\u003e\n```\n\n### Run the IAG5 Site Playbook\n\nNavigate to the working directory and execute the following run command.\n\n#### Example: Running the IAG5 Site Playbook\n\n```bash\ncd \u003cWORKING-DIR\u003e\nansible-playbook itential.iag5.site -i inventories/dev\n```\n\n### Confirm Successful Installation\n\nAfter the IAG5 playbook is finished running, perform the following checks on each component to\nconfirm successful installation.\n\n#### Example Output: IAG5 System Status\n\n```bash\n$ sudo systemctl status iagctl\n```\n\n### Running the IAG5 Component Playbooks\n\nIn addition to the site playbook, there are playbooks for running the individual components.\n\n#### Clients Playbook\n\n```bash\ncd \u003cWORKING-DIR\u003e\nansible-playbook itential.iag5.clients -i inventories/dev\n```\n\n#### Servers Playbook\n\n```bash\ncd \u003cWORKING-DIR\u003e\nansible-playbook itential.iag5.servers -i inventories/dev\n```\n\n#### Runners Playbook\n\n```bash\ncd \u003cWORKING-DIR\u003e\nansible-playbook itential.iag5.runners -i inventories/dev\n```\n\n## Sample Inventories\n\nBelow are simplified sample host files that describe the basic configurations to produce the\nsupported architectures. These are intended to be starting points only.\n\n### All-in-one Single Node Inventory\n\n```yaml\n# Note:\n#  - All example inventory_hostname entries must be replaced with the actual server hostnames.\n#  - All hostnames must be resolvable.\nall:\n  vars:\n    ansible_user: \u003cANSIBLE-USER\u003e\n\n    # Itential Nexus repository credentials\n    repository_username: \u003cNEXUS-USERNAME\u003e\n    repository_password: \u003cNEXUS-PASSWORD\u003e\n\n    gateway_secrets_encrypt_key: \u003cENCRYPT-KEY\u003e\n    gateway_pki_src_dir: \u003cPKI-DIR\u003e\n\n  children:\n    iag5_servers:\n      hosts:\n        example-server:\n          ansible_host: \u003cSERVER-IP\u003e\n      vars:\n        gateway_server_connect_hosts: \u003cGATEWAY-MANAGER-IP\u003e:8080\n        gateway_server_packages:\n          - \u003cIAGCTL-RPM\u003e\n\n    iag5_clients:\n      hosts:\n        example-client:\n          ansible_host: \u003cCLIENT-IP\u003e\n          gateway_client_host: \u003cSERVER-IP\u003e\n      vars:\n        gateway_client_packages:\n          - \u003cIAGCTL-TARBALL\u003e\n```\n\n### All-in-one Active/Standby High Availability Inventory\n\n```yaml\n# Notes:\n#  - All example inventory_hostname entries must be replaced with the actual server hostnames.\n#  - All hostnames must be resolvable.\n#  - Backend 'dynamodb' is also supported; see Reference Guide for details.\nall:\n  vars:\n    ansible_user: \u003cANSIBLE-USER\u003e\n\n    # Itential Nexus repository credentials\n    repository_username: \u003cNEXUS-USERNAME\u003e\n    repository_password: \u003cNEXUS-PASSWORD\u003e\n\n    gateway_secrets_encrypt_key: \u003cENCRYPT-KEY\u003e\n    gateway_pki_src_dir: \u003cPKI-DIR\u003e\n\n  children:\n    iag5_servers:\n      hosts:\n        example-active-server:\n          ansible_host: \u003cACTIVE-SERVER-IP\u003e\n        example-standby-server:\n          ansible_host: \u003cSTANDBY-SERVER-IP\u003e\n      vars:\n        gateway_server_packages:\n          - \u003cIAGCTL-RPM\u003e\n        gateway_server_store_backend: etcd\n        gateway_server_store_etcd_hosts: \u003cETCD-SERVER1-IP\u003e:2379 \u003cETCD-SERVER2-IP\u003e:2379 \u003cETCD-SERVER3-IP\u003e:2379\n\n    iag5_clients:\n      hosts:\n        example-client:\n          ansible_host: \u003cCLIENT-IP\u003e\n          gateway_client_host: \u003cACTIVE-SERVER-IP\u003e\n      vars:\n        gateway_client_packages:\n          - \u003cIAGCTL-TARBALL\u003e\n\n```\n\n### Distributed Service Execution with Single Cluster Inventory\n\n```yaml\n# Note:\n#  - All example inventory_hostname entries must be replaced with the actual server hostnames.\n#  - All hostnames must be resolvable.\n#  - Backend 'dynamodb' is also supported; see Reference Guide for details.\nall:\n  vars:\n    ansible_user: \u003cANSIBLE-USER\u003e\n\n    # Itential Nexus repository credentials\n    repository_username: \u003cNEXUS-USERNAME\u003e\n    repository_password: \u003cNEXUS-PASSWORD\u003e\n\n    gateway_secrets_encrypt_key: \u003cENCRYPT-KEY\u003e\n    gateway_pki_src_dir: \u003cPKI-DIR\u003e\n\n  children:\n    iag5_servers:\n      hosts:\n        example-server:\n          ansible_host: \u003cSERVER-IP\u003e\n\n    iag5_runners:\n      hosts:\n        example-runner1:\n          ansible_host: \u003cRUNNER1-IP\u003e\n        example-runner2:\n          ansible_host: \u003cRUNNER2-IP\u003e\n        example-runner3:\n          ansible_host: \u003cRUNNER3-IP\u003e\n      vars:\n        gateway_server_connect_hosts: \u003cGATEWAY-MANAGER-IP\u003e:8080\n        gateway_server_distributed_execution: true\n\n    servers_runners:\n      hosts:\n        example-server:\n        example-runner1:\n        example-runner2:\n        example-runner3:\n      vars:\n        gateway_server_packages:\n          - \u003cIAGCTL-RPM\u003e\n        gateway_server_store_backend: etcd\n        gateway_server_store_etcd_hosts: \u003cETCD-SERVER1-IP\u003e:2379 \u003cETCD-SERVER2-IP\u003e:2379 \u003cETCD-SERVER3-IP\u003e:2379\n\n    iag5_clients:\n      hosts:\n        example-client:\n          ansible_host: \u003cCLIENT-IP\u003e\n          gateway_client_host: \u003cSERVER-IP\u003e\n      vars:\n        gateway_client_packages:\n          - \u003cIAGCTL-TARBALL\u003e\n```\n\n### High Availability with Distributed Execution Inventory\n\n```yaml\n# Note:\n#  - All example inventory_hostname entries must be replaced with the actual server hostnames.\n#  - All hostnames must be resolvable.\n#  - Backend 'dynamodb' is also supported; see Reference Guide for details.\nall:\n  vars:\n    ansible_user: \u003cANSIBLE-USER\u003e\n\n    # Itential Nexus repository credentials\n    repository_username: \u003cNEXUS-USERNAME\u003e\n    repository_password: \u003cNEXUS-PASSWORD\u003e\n\n    gateway_secrets_encrypt_key: \u003cENCRYPT-KEY\u003e\n    gateway_pki_src_dir: \u003cPKI-DIR\u003e\n\n  children:\n    iag5_servers:\n      hosts:\n        example-active-server:\n          ansible_host: \u003cACTIVE-SERVER-IP\u003e\n        example-standby-server:\n          ansible_host: \u003cSTANDBY-SERVER-IP\u003e\n\n    iag5_runners:\n      hosts:\n        example-runner1:\n          ansible_host: \u003cRUNNER1-IP\u003e\n        rexample-unner2:\n          ansible_host: \u003cRUNNER2-IP\u003e\n        example-runner3:\n          ansible_host: \u003cRUNNER3-IP\u003e\n      vars:\n        gateway_server_connect_hosts: \u003cGATEWAY-MANAGER-IP\u003e:8080\n        gateway_server_distributed_execution: true\n\n    servers_runners:\n      hosts:\n        example-active-server:\n        example-standby-server:\n        example-runner1:\n        example-runner2:\n        example-runner3:\n      vars:\n        gateway_server_packages:\n          - \u003cIAGCTL-RPM\u003e\n        gateway_server_store_backend: etcd\n        gateway_server_store_etcd_hosts: \u003cETCD-SERVER1-IP\u003e:2379 \u003cETCD-SERVER2-IP\u003e:2379 \u003cETCD-SERVER3-IP\u003e:2379\n\n    iag5_clients:\n      hosts:\n        example-client:\n          ansible_host: \u003cCLIENT-IP\u003e\n          gateway_client_host: \u003cACTIVE-SERVER-IP\u003e\n      vars:\n        gateway_client_packages:\n          - \u003cIAGCTL-TARBALL\u003e\n```\n\n### Multiple Cluster Architecture Inventories\n\n```yaml\n# Note:\n#  - All example inventory_hostname entries must be replaced with the actual server hostnames.\n#  - All hostnames must be resolvable.\n#  - Backend 'dynamodb' is also supported; see Reference Guide for details.\nall:\n  vars:\n    ansible_user: \u003cANSIBLE-USER\u003e\n\n    # Itential Nexus repository credentials\n    repository_username: \u003cNEXUS-USERNAME\u003e\n    repository_password: \u003cNEXUS-PASSWORD\u003e\n\n    gateway_secrets_encrypt_key: \u003cENCRYPT-KEY\u003e\n    gateway_pki_src_dir: \u003cPKI-DIR\u003e\n\n  children:\n    iag5_servers:\n      hosts:\n        example-cluster1_server:\n          ansible_host: \u003cCLUSTER1-SERVER-IP\u003e\n        example-cluster2_server:\n          ansible_host: \u003cCLUSTER2-SERVER-IP\u003e\n      vars:\n        gateway_server_connect_hosts: \u003cGATEWAY-MANAGER-IP\u003e:8080\n        gateway_server_distributed_execution: true\n\n    iag5_runners:\n      hosts:\n        example-cluster1_runner1:\n          ansible_host: \u003cCLUSTER1-RUNNER1-IP\u003e\n        example-cluster1_runner2:\n          ansible_host: \u003cCLUSTER1-RUNNER2-IP\u003e\n        example-cluster1_runner3:\n          ansible_host: \u003cCLUSTER1-RUNNER3-IP\u003e\n        example-cluster2_runner1:\n          ansible_host: \u003cCLUSTER2-RUNNER1-IP\u003e\n        example-cluster2_runner2:\n          ansible_host: \u003cCLUSTER2-RUNNER2-IP\u003e\n        example-cluster2_runner3:\n          ansible_host: \u003cCLUSTER2-RUNNER3-IP\u003e\n\n    iag5_servers_runners:\n      hosts:\n        example-cluster1_server:\n        example-cluster1_runner1:\n        example-cluster1_runner2:\n        example-cluster1_runner3:\n        example-cluster2_server:\n        example-cluster2_runner1:\n        example-cluster2_runner2:\n        example-cluster2_runner3:\n      vars:\n        gateway_server_packages:\n          - \u003cIAGCTL-RPM\u003e\n        gateway_server_store_backend: etcd\n\n    cluster1_iag5_all:\n      hosts:\n        example-cluster1_client:\n        example-cluster1_server:\n        example-cluster1_runner1:\n        example-cluster1_runner2:\n        example-cluster1_runner3:\n      vars:\n        gateway_cluster_id: cluster_1\n\n    cluster1_iag5_servers_runners:\n      hosts:\n        example-cluster1_server:\n        example-cluster1_runner1:\n        example-cluster1_runner2:\n        example-cluster1_runner3:\n      vars:\n        gateway_server_store_etcd_hosts: \u003cCLUSTER1-ETCD-SERVER1-IP\u003e:2379 \u003cCLUSTER1-ETCD-SERVER2-IP\u003e:2379 \u003cCLUSTER1-ETCD-SERVER3-IP\u003e:2379\n\n    cluster2_iag5_all:\n      hosts:\n        example-cluster2_client:\n        example-cluster2_server:\n        example-cluster2_runner1:\n        example-cluster2_runner2:\n        example-cluster2_runner3:\n      vars:\n        gateway_cluster_id: cluster_2\n\n    cluster2_iag5_servers_runners:\n      hosts:\n        example-cluster2_server:\n        example-cluster2_runner1:\n        example-cluster2_runner2:\n        example-cluster2_runner3:\n      vars:\n        gateway_server_store_etcd_hosts: \u003cCLUSTER2-ETCD-SERVER1-IP\u003e:2379 \u003cCLUSTER2-ETCD-SERVER2-IP\u003e:2379 \u003cCLUSTER2-TCD-SERVER3-IP\u003e:2379\n\n    iag5_clients:\n      hosts:\n        example-cluster1_client:\n          ansible_host: \u003cCLUSTER1-CLIENT-IP\u003e\n          gateway_client_host: \u003cCLUSTER1-SERVER-IP\u003e\n        example-cluster2_client:\n          ansible_host: \u003cCLUSTER2-CLIENT-IP\u003e\n          gateway_client_host: \u003cCLUSTER2-SERVER-IP\u003e\n      vars:\n        gateway_client_packages:\n          - \u003cIAGCTL-TARBALL\u003e\n```\n\n## Reference Guide\n\nAll IAG5 collection variables are documented in the IAG Reference Guide.\n\n[IAG Reference Guide](docs/reference_guide.md)\n\n## Patching IAG5\n\nTo patch IAG5, simply replace the the current artifacts (RPM or tarball) in the inventory with the\nnew artifacts and re-run the appropriate playbook.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitential%2Fitential.iag5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitential%2Fitential.iag5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitential%2Fitential.iag5/lists"}