{"id":37630368,"url":"https://github.com/quortex/deployment-tools","last_synced_at":"2026-01-16T10:56:23.092Z","repository":{"id":41855666,"uuid":"269626950","full_name":"quortex/deployment-tools","owner":"quortex","description":"A toolkit repo for Quortex deployment.","archived":false,"fork":false,"pushed_at":"2026-01-12T16:04:52.000Z","size":120,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-12T21:28:59.456Z","etag":null,"topics":["tool"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quortex.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-06-05T12:22:11.000Z","updated_at":"2025-09-19T10:04:31.000Z","dependencies_parsed_at":"2024-06-28T14:56:56.608Z","dependency_job_id":"99c5933a-8533-4e8d-937c-dfa3d91179f5","html_url":"https://github.com/quortex/deployment-tools","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/quortex/deployment-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quortex%2Fdeployment-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quortex%2Fdeployment-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quortex%2Fdeployment-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quortex%2Fdeployment-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quortex","download_url":"https://codeload.github.com/quortex/deployment-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quortex%2Fdeployment-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","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":["tool"],"created_at":"2026-01-16T10:56:23.029Z","updated_at":"2026-01-16T10:56:23.083Z","avatar_url":"https://github.com/quortex.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# deployment-tools\n\nA toolkit repo for Quortex deployment.\n\n## Configuration Scripts\n\nThe scripts `pushconfig.sh` and `getconfig.sh` are made to push and retrieve configurations in bulk from and to the Quortex workflow.\n\n### File format\n\nBoth of these scripts relies on a folder to know what to push or what to retrieve.\n\nThese files should also follow a strict JSON format :\n\n```json\n[\n    # List of types of configuration to push\n    {\n        \"url\" : \"/url/of/this/configuration/type/endpoint\",\n        \"confs : [\n            # List of configuration of this type to push\n        ]\n    }\n]\n```\n\n- The script `pushconfig.sh` only need one folder, provided by `-f CONFIG_FOLDER` and will crawl it to know which service and what configuration type to push.\n\n- The script `getconfig.sh` use the provided `-i INPUT_FOLDER` to know which configuration to retrieve from the cluster, and can either update this folder with the current configuration (usage by default) or can also write the downloaded configurations into a different folder with the `-o OUTPUT_FOLDER` option.\n\n### API\n\nBoth can be used with the **Kubernetes API** or with the **external API**. By default, they use the kubernetes API, to use the external use the options `-A api.mycluster.com -u myuser:mypassword`.\n\n---\n\n## Update scripts\n\nThe script update_segmenter.py allows the massive update of segmenters unit.\n\nBy default, the script does a \"dry-run\" of the update process. Use the \"--upgrade\" argument to actually run the update.\n\nIn addition, using the \"--display\" argument, the script acts as a monitoring tool to visualize the list of segmenters currently running, and the version that each segmenter is running. It is useful to oversee the ongoing upgrade.\n\n### Dependencies\n\nThe script update_segmenter.py requires following dependencies:\n\n- asyncio\n- kubernetes\n\n```\n#pip3 install asyncio kubernetes\n```\n\n### Usage\n\n- -h --help: Show this help message\n- -v VERSION, --version VERSION: The new segmenter version to update\n- -n NAME, --name NAME: Specify the basename of the segmenters\n- -d, --display: Display ongoing update\n- -u, --upgrade: Do upgrade\n- -o, --overbandwidth: Allow overbandwidth for mono segmenter\n- -p, --parallel: Allow parallel update of segmenters\n- -g GROUP [GROUP ...], --group GROUP [GROUP ...]: Specify the list of group to update\n\n### Example\n\nShow the current running version:\n\n```\n$./update_segmenter.py --display\n```\n\nUpgrade the version of units sequentially:\n\n```\n$./update_segmenter.py --display --upgrade --version rel-x.x.x\n```\n\nUpgrade the version of units in parallel and allow over bandwidth consumption:\n\n```\n$./update_segmenter.py --display --upgrade --parallel --version rel-x.x.x --overbandwidth\n```\n\n---\n\n## drainnode\n\nThe purpose of this script is to perform node-by-node cluster rolling updates.\nIt allows to make the targeted nodes unschedulable and to drain them one by one.\n\n**Drain out nodes based on node names.**\n\n```\ndrainnode node1 node2\n```\n\n**Drain out nodes based on labels.**\n\n```\ndrainnode -l foo=bar -l bar=baz\n```\n\n### Usage\n\n- -h --help: show the help message\n- -l --selector: selectors (label query) to filter nodes on\n- -c --count: count of non-running pods (completed/error) in the cluster before starting draining process\n- --dry-run: simulate nodes drain\n- -y --yes: run non interractively\n- --no-color: remove the additional color from the output\n\n---\n\n## clean_pvc\n\nThe purpose of this script is to delete unmounted pvcs in the reference namespace.\n\n### Usage\n\n- -h --help: show help message\n- --run: run deletion, default is false so nothing is deleted - aka default is dry-run.\n\n---\n\n## init_tf_backend_aws\n\nProvision the resources needed to store terraform states on AWS.\n\nA bucket on Amazon S3 will be created, as well as a Dynamo DB table to support\nstate locking and consistency checking.\n\n### Usage\n\n```\nUsage : ./init_tf_backend_aws.sh -n NAME [options]\n\nMandatory arguments :\n    -n NAME      Set the name of created resources.\nAvailable options :\n    -r REGION                   Specify the region in which to create the resources.\n    -p PREFIXED                 Whether to prefix the name with \"\u003cACCOUNT ID\u003e-tfstate-\" (default true)\n    -b BLOCK_PUBLIC_ACCESS      Whether to block public access for s3 bucket (default true)\n    -y                          Execute script in non interactive mode.\n    -h                          Display this help.\n```\n\n---\n\n## init_tf_backend_azure\n\nProvision the resources needed to store terraform states on AZURE.\n\nA container on Azure Storage Account will be created. State locking is support by default.\n\n### Usage\n\n```\nUsage : ./init_tf_backend_azure.sh -n NAME [options]\n\nMandatory arguments :\n    -n NAME      Set the name of created resources.\nAvailable options :\n    -r          The name of the region (default $REGION).\n    -s          The name of the subscription.\n    -rg         The name of Ressource Group (default $RESOURCE_GROUP_NAME).\n    -st         The name of Storage Account.\n    -ct         The name of Container.\n    -h           Display this help.\n```\n\nIf you have probleme with write access of state, go to portal.azure.com and assign you the rights \"Storage Blob Data Owner\" to the subscription or on the storage account.\n\n---\n\n## get_cluster_config\n\nCompute a cluster Config from a given ServiceAccount.\n\nIt requests the different kubernetes resources in order to build a cluster Config for a given ServiceAccount.\n\n### Usage\n\n```\nUsage : $0 -s SERVICE_ACCOUNT [options]\n\nMandatory arguments :\n    -s SERVICE_ACCOUNT    The name of the ServiceAccount to use for the config.\nAvailable options :\n    -n NAMESPACE      The namespace of the ServiceAccount to use for the config. (default ${NAMESPACE}).\n    -c CLUSTER_NAME   Set the name of the cluster (default ${CLUSTER_NAME}).\n    -h                Display this help.\n```\n\n---\n\n## saml2aws_generate_config\n\nThis script is based on [saml2aws](https://github.com/Versent/saml2aws) in order to list the available roles and automatically generate a config for aws cli containing the profiles matching the different accounts / roles.\n\nGenerated profiles are configured to source credentials from saml2aws automatically (see [Sourcing credentials with an external process](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html)).\n\n### Usage\n\nDisplay the config :\n\n```\n./saml2aws_generate_config.sh\n```\n\nOverwrite your current AWS cli config:\n\n```\n./saml2aws_generate_config.sh ~/.aws/config\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquortex%2Fdeployment-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquortex%2Fdeployment-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquortex%2Fdeployment-tools/lists"}