{"id":20648249,"url":"https://github.com/nutanixdev/zerotouch-framework","last_synced_at":"2025-04-16T14:53:57.132Z","repository":{"id":163724602,"uuid":"639171155","full_name":"nutanixdev/zerotouch-framework","owner":"nutanixdev","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-24T18:05:43.000Z","size":3468,"stargazers_count":13,"open_issues_count":7,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-29T05:24:07.224Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nutanixdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2023-05-10T23:11:16.000Z","updated_at":"2025-02-24T17:59:20.000Z","dependencies_parsed_at":"2023-12-05T10:50:06.896Z","dependency_job_id":"26f26141-da67-4a35-8e70-b4030cde5f44","html_url":"https://github.com/nutanixdev/zerotouch-framework","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutanixdev%2Fzerotouch-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutanixdev%2Fzerotouch-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutanixdev%2Fzerotouch-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutanixdev%2Fzerotouch-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nutanixdev","download_url":"https://codeload.github.com/nutanixdev/zerotouch-framework/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249252532,"owners_count":21238207,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-11-16T17:07:19.252Z","updated_at":"2025-04-16T14:53:57.123Z","avatar_url":"https://github.com/nutanixdev.png","language":"Python","readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](LICENSE)  [![GitHub: Actions](https://img.shields.io/badge/GitHub-Actions-blue.svg?logo=github)](ACTIONS)\n\n# Zero Touch Framework\n\nZTF is a tool used to automate end-to-end deployment and configuration of Nutanix Cloud Platform without human\nintervention,\nhence the name Zero Touch. The tool can also be extended to manage Day-1 and Day-2 operations as well.\n\u003e Note: ZTF has been primarily built to automate Nutanix Validated Designs at scale. All the existing workflows and\n\u003e scripts have been tested against: AOS: 6.5.x, 6.7.x, 6.8.x, 7.0 PC 2022.6.x, 2023.4.x, 2024.1.x, 2024.3 Calm 3.5.2,\n\u003e 3.6.0 and 3.8.1\n\n## Prerequisites\n\n- For Imaging and Cluster creation:\n    - Foundation Central is enabled and configured such that it can access the networks, the nodes are discoverable on.\n      For how to enable, set up Foundation Central and provide the API key to your DHCP server, refer to\n      the [Foundation Central Guide](https://portal.nutanix.com/page/documents/details?targetId=Foundation-Central-v1_5:Foundation-Central-v1_5).\n    - Set up a local web server for downloading AOS tar and AHV iso files.\n    - If AOS and AHV files are downloaded over https from Web Server, it needs to have a valid cert issued by a trusted\n      certificate authority (CA). Certificates from a custom CA are not accepted. If\n      we need to skip this validation for https, we need to upgrade the Foundation version on the CVMs to 5.6.0.1 and\n      above.\n- For dark-site deployments:\n    - Web Server needs to be setup to download the images, if there are any operations related to image upload and\n      download (PC deploy, Image Upload, Ova upload etc.)\n- For running ZTF using GitHub Actions (GitHub workflows):\n    - A GitHub Self-hosted Runner Ubuntu VM with access to deploy and run configurations on the intended infrastructure\n      configured in the GitHub actions to run the workflows.\n- For running ZTF locally on a VM\n    - Click [here](dev-setup-README.md) to read about how to set up environment to run ZTF locally\n\n## Running ZTF using GitHub Actions\n\nThis tool works as GitOps, i.e. using this repository to manage Infrastructure as Code (IaC). The workflows and scripts\ncan\nbe directly triggered from GitHub through various actions.\nClick [here](config/README.md) to read more about triggering GitHub Actions.\n\n## Running ZTF locally on a VM\n\nThe first file that needs to be configured is the [global.yml](config/global.yml). Here, we will define the Vault and\nIPAM configuration.\n\nOnce global.yml is defined, you can either run the pre-existing **_functional workflows_** using the `WORKFLOW`\nand `FILE` parameters or run\nspecific **_scripts_** using `SCRIPT`, `SCHEMA`, and `FILE` parameters.\n\n### Running existing Workflows\n\nBelow are the pre-defined workflows and how to run these workflows.\n\nAlso, there are several workflows below that support **_Pod_** deployment and configuration.\nHere, [\"Enterprise Edge Pod Conceptual Design\"](https://portal.nutanix.com/page/documents/solutions/details?targetId=NVD-2180-Enterprise-Edge-AI:NVD-2180-Enterprise-Edge-AI)\nis used to deploy and manage infrastructure at scale. In this design, a **_Pod_** can manage several\n**_blocks (pod_blocks)_** and each **_block (pod_block)_** can manage multiple **_edge_sites_** and each **_edge_site_**\ncan manage multiple **_clusters_** at the edge.\n\n- `imaging`\n    - This is a **_Pod_** workflow.\n    - This workflow is used to **Image the nodes** using Foundation Central and **create Clusters**. An example config\n      template is provided\n      in [config/example-configs/pod-configs/pod-deploy.yml](config/example-configs/pod-configs/pod-deploy.yml). Copy\n      this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n      ```sh\n      python main.py --workflow imaging -f config/pod-deploy.yml\n      ```\n    - Note: If you are not using the **Pod** conceptual design and just want to image nodes and create clusters, just\n      enter dummy values for \"pod_name\" and \"pod_block_name\" in\n      the [example-config](config/example-configs/pod-configs/pod-deploy.yml).\n- `pod-config`\n    - This is a **_Pod_** workflow.\n    - This workflow is used to **configure** the **Pod**. An example config template is provided\n      in [config/example-configs/pod-configs/pod-config.yml](config/example-configs/pod-configs/pod-config.yml). Copy\n      this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n      ```sh\n      python main.py --workflow pod-config -f config/pod-config.yml\n      ```\n    - Using the **Pod** conceptual design, you can configure the block PC (pc_ip) and clusters at the edge (edge_sites).\n    - This workflow can also be used when you want to configure both PC and the clusters at the same time.\n- `deploy-management-pc`\n    - This is a **_Pod_** workflow.\n    - This will deploy **Prism Centrals** in the specified **Clusters** and also deploys **NCM** in the deployed Prism\n      Central. An example config template is provided\n      in [config/example-configs/pod-configs/pod-management-deploy.yml](config/example-configs/pod-configs/pod-management-deploy.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n      ```sh\n      python main.py --workflow deploy-management-pc -f config/pod-management-deploy.yml\n      ```\n- `config-management-pc`\n    - This is a **_Pod_** workflow.\n    - This will perform Initial configurations on the deployed **Prism Centrals** and **NCMs** in the **Pod**. We can\n      also\n      specify the **clusters** that need to be registered to this deployed Prism Central. An example config template is\n      provided\n      in [config/example-configs/pod-configs/pod-management-config.yml](config/example-configs/pod-configs/pod-management-config.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow config-management-pc -f config/pod-management-config.yml\n      ```\n- `deploy-pc`\n    - This will deploy **Prism Centrals** in the specified **Clusters**. An example config template is provided\n      in [config/example-configs/workflow-configs/pc-deploy.yml](config/example-configs/workflow-configs/pc-deploy.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow deploy-pc -f config/pc-deploy.yml\n      ```\n- `config-pc`\n    - This will configure the deployed **Prism Centrals**. An example config template is provided\n      in [config/example-configs/workflow-configs/pc-config.yml](config/example-configs/workflow-configs/pc-config.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow config-pc -f config/pc-config.yml\n      ```\n- `config-cluster`\n    - This will configure the newly deployed **Clusters**. An example config template is provided\n      in [config/example-configs/workflow-configs/cluster-config.yml](config/example-configs/workflow-configs/cluster-config.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow config-cluster -f config/cluster-config.yml\n      ```\n- `calm-vm-workloads`\n    - This will use calm-dsl to create VM workloads on Clusters using NCM Self-Service from single or multiple calm-dsl\n      files. An example config template is provided\n      in [config/example-configs/workflow-configs/create-vm-workloads.yml](config/example-configs/workflow-configs/create-vm-workloads.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow calm-vm-workloads -f config/create-vm-workloads.yml\n      ```\n- `calm-edgeai-vm-workload`\n    - This will use calm-dsl to create Edge-AI VM workload on Clusters using NCM Self-Service from single or multiple\n      calm-dsl files. An example config template is provided\n      in [config/example-configs/workflow-configs/edge-ai.json](config/example-configs/workflow-configs/edge-ai.json).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow calm-edgeai-vm-workload -f config/edge-ai.json\n      ``` \n- `ndb`\n    - This will deploy, configure NDB VM and register clusters to it. Also, it can enable multi-cluster and HA\n      in [config/example-configs/workflow-configs/ndb.yml](config/example-configs/workflow-configs/ndb.yml).\n      Copy this to the **config** directory, modify the configuration and then run this workflow using the command below\n      inside **virtualenv**.\n        ```sh\n      python main.py --workflow ndb -f config/ndb.yml\n      ```        \n\nTo summarize, the input files can either be **json** or **yaml** files. You can find example configurations in\n[config/example-configs](config/example-configs) directory. Copy the required config file, inside [config](config)\ndirectory. Pass the `-f` and `--workflow` as inputs and run the workflow.\n\n### Running individual scripts or operations\n\nIf we don't want to use pre-defined workflows, we can always run the needed operations with the below scripts. For this,\nthe framework expects `SCRIPT`, `SCHEMA` and `FILE` parameters to run the specified scripts, where `SCHEMA` is\noptional. `SCHEMA` if specified verifies the correctness of input configuration.\nBelow is the list of supported scripts available.\n\n| Script                       | Operation                                         | Example config                                                                                           |\n|:-----------------------------|:--------------------------------------------------|:---------------------------------------------------------------------------------------------------------|\n| AddAdServerPe                | Adds Active Directory in PE                       | [authentication_pe.yml](config/example-configs/script-configs/authentication_pe.yml)                     |\n| AddAdServerPc                | Adds Active Directory in PC                       | [add_ad_server_pc.py](config/example-configs/script-configs/authentication_pc.yml)                       |\n| AddAdUsersOss                | Adds AdUsers in Objects                           | [directory_services_oss.yml](config/example-configs/script-configs/directory_services_oss.yml)           |\n| AddDirectoryServiceOss       | Adds Active Directory in Objects                  | [directory_services_oss.yml](config/example-configs/script-configs/directory_services_oss.yml)           |\n| AddNameServersPc             | Adds nameservers in PC                            | [dns_ntp_pc.yml](config/example-configs/script-configs/dns_ntp_pc.yml)                                   |\n| AddNameServersPe             | Adds nameservers in PE                            | [dns_ntp_pe.yml](config/example-configs/script-configs/dns_ntp_pe.yml)                                   |\n| AddNtpServersPc              | Adds NTP servers in PC                            | [dns_ntp_pc.yml](config/example-configs/script-configs/dns_ntp_pc.yml)                                   |\n| AddNtpServersPe              | Adds NTP servers in PE                            | [dns_ntp_pe.yml](config/example-configs/script-configs/dns_ntp_pe.yml)                                   |\n| ConnectToAz                  | Connects to AZs                                   | [remote_az.yml](config/example-configs/script-configs/remote_az.yml)                                     |\n| CreateAddressGroups          | Creates Address Groups in PC                      | [address_groups_pc.yml](config/example-configs/script-configs/address_groups_pc.yml)                     |\n| CreateBuckets                | Creates buckets in an Objectstore                 | [objectstore_buckets.yml](config/example-configs/script-configs/objectstore_buckets.yml)                 |\n| CreateAppFromDsl             | Creates Calm Application from calm dsl            | [create-vm-workloads.yml](config/example-configs/workflow-configs/create-vm-workloads.yml)               |\n| CreateNcmProject             | Creates Calm projects                             | [create-vm-workloads.yml](config/example-configs/workflow-configs/create-vm-workloads.yml)               |\n| CreateContainerPe            | Creates Storage container in PE                   | [storage_container_pe.yml](config/example-configs/script-configs/storage_container_pe.yml)               |\n| CreateKarbonClusterPc        | Creates NKE Clusters in PC                        | [nke_clusters.yml](config/example-configs/script-configs/nke_clusters.yml)                               |\n| CreateObjectStore            | Creates Objectstores in PC                        | [objectstore_buckets.yml](config/example-configs/script-configs/objectstore_buckets.yml)                 |\n| CreateCategoryPc             | Creates Categories in PC                          | [category_pc.yml](config/example-configs/script-configs/category_pc.yml)                                 |\n| CreateSubnetsPc              | Creates subnets in PC                             | [subnets_pc.yml](config/example-configs/script-configs/subnets_pc.yml)                                   |\n| CreateProtectionPolicy       | Creates ProtectionPolicy in PC                    | [protection_policy.yml](config/example-configs/script-configs/protection_policy.yml)                     |\n| CreateRecoveryPlan           | Creates RecoveryPlan in PC                        | [recovery_plan.yml](config/example-configs/script-configs/recovery_plan.yml)                             |\n| CreateRoleMappingPe          | Creates Role mapping in PE                        | [authentication_pe.yml](config/example-configs/script-configs/authentication_pe.yml)                     |\n| CreateRoleMappingPc          | Creates Role mapping in PC                        | [authentication_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                     |\n| CreateNetworkSecurityPolicy  | Creates Security policies in PC                   | [security_policy.yml](config/example-configs/script-configs/security_policy.yml)                         |\n| CreateNcmAccount             | Creates NTNX PC account in NCM                    | [ncm_account_users.yml](config/example-configs/script-configs/ncm_account_users.yml)                     |\n| CreateNcmUser                | Creates users in NCM                              | [ncm_account_users.yml](config/example-configs/script-configs/ncm_account_users.yml)                     |\n| CreateServiceGroups          | Creates Service Groups in PC                      | [service_groups.yml](config/example-configs/script-configs/service_groups.yml)                           |\n| CreateVmPe                   | Creates VMs in PE                                 | [create_vms_pe.yml](config/example-configs/script-configs/vm.yml)                                        |\n| CreateVPC                    | Creates VPC in PC                                 | [vpcs.yml](config/example-configs/script-configs/vpcs.yml)                                               |\n| EnableDR                     | Enables DR in PC                                  | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| EnableMicrosegmentation      | Enables Flow in PC                                | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| EnableNke                    | Enables Karbon/ NKE in PC                         | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| EnableObjects                | Enables Objects in PC                             | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| Enable Network Controller    | Enables Network Controller in PC                  | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| InitCalmDsl                  | Initialize calm dsl                               | [create-vm-workloads.yml](config/example-configs/workflow-configs/create-vm-workloads.yml)               |\n| ChangeDefaultAdminPasswordPe | Change PE admin password                          | [initial_cluster_config.yml](config/example-configs/script-configs/initial_cluster_config.yml)           |\n| AcceptEulaPe                 | Accept Eula PE                                    | [initial_cluster_config.yml](config/example-configs/script-configs/initial_cluster_config.yml)           |\n| UpdatePulsePe                | Update Pulse PE                                   | [initial_cluster_config.yml](config/example-configs/script-configs/initial_cluster_config.yml)           |\n| ChangeDefaultAdminPasswordPc | Change PC password                                | [initial_pc_config.yml](config/example-configs/script-configs/initial_pc_config.yml)                     |\n| UploadImagePe                | Uploads images to PE cluster                      | [image_upload_pe.yml](config/example-configs/script-configs/vm.yml)                                      |\n| PowerTransitionVmPe          | Power Transition VMs in PE                        | [power_transition_pe.yml](config/example-configs/script-configs/vm.yml)                                  |\n| AcceptEulaPc                 | Accept Eula PC                                    | [initial_pc_config.yml](config/example-configs/script-configs/initial_pc_config.yml)                     |\n| UpdatePulsePc                | Update Pulse PC                                   | [initial_pc_config.yml](config/example-configs/script-configs/initial_pc_config.yml)                     |\n| PcImageUpload                | Uploads images to PC clusters                     | [pc_image.yml](config/example-configs/script-configs/pc_image.yml)                                       |\n| PcOVAUpload                  | Uploads OVAs to PC clusters                       | [pc_ova.yml](config/example-configs/script-configs/pc_ova.yml)                                           |\n| RegisterToPc                 | Registers clusters to PC                          | [register_to_pc.yml](config/example-configs/script-configs/register_to_pc.yml)                           |\n| ShareBucket                  | Shares a bucket with a list of users              | [objectstore_buckets.yml](config/example-configs/script-configs/objectstore_buckets.yml)                 |\n| UpdateDsip                   | Updates DSIP in PE                                | [update_dsip.yml](config/example-configs/script-configs/update_dsip.yml)                                 |\n| EnableFC                     | Enables Foundation Central in FC                  | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| GenerateFcApiKey             | Generates Foundation Central API Key              | [generate_fc_api_key.yml](config/example-configs/script-configs/generate_fc_api_key.yml)                 |\n| DeleteSubnetsPc              | Delete Subnets in PC                              | [subnets_pc.yml](config/example-configs/script-configs/delete_subnets_pc.yml)                            |\n| DeleteSubnetsPe              | Delete Subnets in PE                              | [subnets_pe.yml](config/example-configs/script-configs/delete_subnets_pc.yml)                            |\n| DeleteAdServerPc             | Delete Active Directory in PC                     | [authentication_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                     |\n| DeleteAdServerPe             | Delete Active Directory in PE                     | [authentication_pe.yml](config/example-configs/script-configs/authentication_pe.yml)                     |\n| DeleteAddressGroups          | Delete Address Groups in PC                       | [address_groups_pc.yml](config/example-configs/script-configs/address_groups_pc.yml)                     |\n| DeleteNameServersPc          | Delete Name Servers in PC                         | [dns_ntp_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                            |\n| DeleteNameServersPe          | Delete Name Servers in PE                         | [dns_ntp_pe.yml](config/example-configs/script-configs/authentication_pc.yml)                            |\n| DeleteNtpServersPc           | Delete NTP Servers in PC                          | [dns_ntp_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                            |\n| DeleteNtpServersPe           | Delete NTP Servers in PE                          | [dns_ntp_pe.yml](config/example-configs/script-configs/authentication_pc.yml)                            |\n| DeleteCategoryPc             | Delete Categories in PC                           | [category_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                           |\n| DeleteProtectionPolicy       | Delete Protection Policies in PC                  | [protection_policy.yml](config/example-configs/script-configs/protection_policy.yml)                     |\n| DeleteRecoveryPlan           | Delete Recovery Plans in PC                       | [recovery_plan.yml](config/example-configs/script-configs/recovery_plan.yml)                             |\n| DeleteRoleMappingPc          | Delete Role Mappings in PC                        | [authentication_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                     |\n| DeleteRoleMappingPe          | Delete Role Mappings in PE                        | [authentication_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                     |\n| DeleteNetworkSecurityPolicy  | Delete Security Policies in PC                    | [security_policy.yml](config/example-configs/script-configs/security_policy.yml)                         |\n| DeleteServiceGroups          | Delete Service Groups in PC                       | [service_groups.yml](config/example-configs/script-configs/service_groups.yml)                           |\n| DeleteVmPc                   | Delete VMs in PC                                  | [delete_vms_pc.yml](config/example-configs/script-configs/authentication_pc.yml)                         |\n| DeleteVmPe                   | Delete VMs in PE                                  | [delete_vms_pe.yml](config/example-configs/script-configs/authentication_pc.yml)                         |\n| DeleteVPC                    | Delete VPCs in PC                                 | [vpcs.yml](config/example-configs/script-configs/vpcs.yml)                                               |\n| DisconnectAz                 | Disconnects Availability Zones in PC              | [remote_az.yml](config/example-configs/script-configs/remote_az.yml)                                     |\n| DisableNetworkController     | Disabe Network Controller in PC                   | [pc_creds.yml](config/example-configs/script-configs/pc_creds.yml)                                       |\n| PcImageDelete                | Delete Images in PC                               | [pc_image.yml](config/example-configs/script-configs/pc_image.yml)                                       |\n| PcOVADelete                  | Delete OVAs in PC                                 | [pc_ova.yml](config/example-configs/script-configs/pc_ova.yml)                                           |\n| CreateIdp                    | Create SAML2 compliant Identity Provider in PC    | [saml_idp.yml](config/example-configs/script-configs/saml_idp.yml)                                       |\n| UpdateCvmFoundation          | Update CVM Foundation Version                     | [update_cvm_foundation.yml](config/example-configs/script-configs/update_cvm_foundation.yml)             |\n| UpdateAddressGroups          | Update Address Groups in PC                       | [address_groups_pc.yml](config/example-configs/script-configs/address_groups_pc.yml)                     |\n| UpdateServiceGroups          | Update Service Groups in PC                       | [service_groups.yml](config/example-configs/script-configs/service_groups.yml)                           |\n| UpdateNetworkSecurityPolicy  | Update Network Security Policy in PC              | [security_policy_next_gen.yml](config/example-configs/script-configs/security_policy_next_gen.yml)       |\n| UpdateVPC                    | Update VPC in PC                                  | [vpcs.yml](config/example-configs/script-configs/vpcs.yml)                                               |\n| HaReservation                | Enable/Disable HA Reservation in PE               | [ha.yml](config/example-configs/script-configs/ha.yml)                                                   |\n| RebuildCapacityReservation   | Enable/Disable Rebuild Capacity Reservation in PE | [rebuild_capcity_reservation.yml](config/example-configs/script-configs/rebuild_capcity_reservation.yml) |\n\nTo summarize, the input files can either be **json** or **yaml** files. You can find example configurations in\n[config/example-configs](config/example-configs) directory. Copy the required config file, inside [config](config)\ndirectory. Pass the `-f` and `--script` as inputs and run the workflow.\n\nNote: You can also pass the optional `schema` parameter to validate the inputs against.\nCheck [schema.py](framework/helpers/schema.py) for schema details.\n\n#### Example: Trigger scripts with input files\n\n```sh\n  \u003e python main.py --script AddAdServerPe,CreateRoleMappingPe --schema AD_CREATE_SCHEMA -f config/authentication_pe.yml\n```\n\n```sh\n  \u003e python main.py --script EnableObjects,CreateObjectStore --schema OBJECTS_CREATE_SCHEMA -f config/objectstore_buckets.yml\n```\n\n\u003e Note: The path to the config file, should be defined relative to the root of the project, not to the _framework_\n\u003e directory\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnutanixdev%2Fzerotouch-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnutanixdev%2Fzerotouch-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnutanixdev%2Fzerotouch-framework/lists"}