{"id":18363459,"url":"https://github.com/stuttgart-things/machine-shop-operator","last_synced_at":"2025-04-06T15:31:14.019Z","repository":{"id":171033666,"uuid":"647358374","full_name":"stuttgart-things/machine-shop-operator","owner":"stuttgart-things","description":"manage the lifecycle of terraform resources w/ custom resources on k8s","archived":true,"fork":false,"pushed_at":"2023-12-12T12:04:41.000Z","size":20251,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-15T19:38:32.209Z","etag":null,"topics":["ansible","golang","operator","terraform","vault"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"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/stuttgart-things.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}},"created_at":"2023-05-30T15:52:22.000Z","updated_at":"2024-02-09T07:34:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"f28187a1-b3e8-4233-8bbb-e955c4588a45","html_url":"https://github.com/stuttgart-things/machine-shop-operator","commit_stats":null,"previous_names":["stuttgart-things/machine-shop-operator"],"tags_count":169,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fmachine-shop-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fmachine-shop-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fmachine-shop-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuttgart-things%2Fmachine-shop-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuttgart-things","download_url":"https://codeload.github.com/stuttgart-things/machine-shop-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247502796,"owners_count":20949332,"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":["ansible","golang","operator","terraform","vault"],"created_at":"2024-11-05T23:06:37.335Z","updated_at":"2025-04-06T15:31:11.664Z","avatar_url":"https://github.com/stuttgart-things.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# stuttgart-things/machine-shop-operator\n\nmanage the lifecycle of terraform resources w/ custom resources on kubernetes\n\n## DEV-TASKS\n\n```bash\ntask --list:\n* branch:                  Create branch from main\n* build-image:             Build image\n* crds:                    Generate crds\n* delete-branch:           Delete branch from origin\n* deploy:                  Build image \u0026 deploy\n* deploy-crds:             Generate and deploy crds\n* git-push:                Commit \u0026 push the module\n* install-kustomize:       Download and install-kustomize\n* lint:                    Lint code\n* merge:                   Create pull request into main\n* package:                 Update Chart.yaml and package archive\n* push:                    Push to registry\n* tag:                     commit, push \u0026 tag the module\n* test:                    Test code\n* release:                 Create a release\n```\n\n## DEPLOYMENT\n\n\u003cdetails\u003e\u003csummary\u003eHELMFILE\u003c/summary\u003e\n\n## APPLY TO ENV\n\n```bash\nexport VAULT_ADDR=https://vault-vsphere.labul.sva.de:8200\nexport VAULT_NAMESPACE=root\nexport VAULT_TOKEN=\u003cVAULT_TOKEN\u003e\n\nhelmfile diff --environment labul-vsphere\nhelmfile sync --environment labul-vsphere\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eLATEST DEV RELEASE\u003c/summary\u003e\n\n```yaml\ncat \u003c\u003cEOF \u003e ./values.yaml\nsecrets:\n  vault:\n    name: vault\n    labels:\n      app.kubernetes.io/component: manager\n      app.kubernetes.io/created-by: machine-shop-operator\n      app.kubernetes.io/instance: controller-manager\n      app.kubernetes.io/part-of: machine-shop-operator\n    dataType: stringData\n    secretKVs:\n      VAULT_NAMESPACE: \u003cpath:apps/data/vault#namespace\u003e\n      VAULT_ADDR: \u003cpath:apps/data/vault#addr\u003e\n      VAULT_ROLE_ID: \u003cpath:apps/data/vault#roleID\u003e\n      VAULT_SECRET_ID: \u003cpath:apps/data/vault#secretID\u003e\nEOF\n\nhelm upgrade --install machine-shop-operator \\\noci://eu.gcr.io/stuttgart-things/machine-shop-operator --version 0.1.48 \\\n-n machine-shop-operator-system --values ./values.yaml --create-namespace\n```\n\n\u003c/details\u003e\n\n\n### Create Terraform CR\n\n\u003cdetails\u003e\u003csummary\u003eEXAMPLE-VSPHERE-VM\u003c/summary\u003e\n\n```yaml\n---\napiVersion: machineshop.sthings.tiab.ssc.sva.de/v1beta1\nkind: Terraform\nmetadata:\n name: sthings7\n namespace: terraform\n labels:\n   app.kubernetes.io/created-by: machine-shop-operator\n   app.kubernetes.io/name: terraform\n   app.kubernetes.io/part-of: machine-shop-operator\nspec:\n state: present\n variables:\n  - vsphere_vm_name=\"sthings7\"\n  - vm_count=1\n  - vm_num_cpus=8\n  - vm_memory=4096\n  - vm_disk_size=96\n  - vsphere_vm_template=\"/LabUL/host/Cluster01/10.31.101.40/ubuntu22\"\n  - vsphere_vm_folder_path=\"stuttgart-things/testing\"\n  - vsphere_network=\"/LabUL/host/Cluster01/10.31.101.41/LAB-10.31.103\"\n  - vsphere_datastore=\"/LabUL/host/Cluster01/10.31.101.41/UL-ESX-SAS-01\"\n  - vsphere_resource_pool=\"/LabUL/host/Cluster01/Resources\"\n  - vsphere_datacenter=\"LabUL\"\n backend:\n  - access_key=apps/data/artifacts:accessKey\n  - secret_key=apps/data/artifacts:secretKey\n module:\n  - moduleName=sthings7\n  - backendKey=sthings7.tfstate\n  - moduleSourceUrl=https://artifacts.tiab.labda.sva.de/modules/vsphere-vm.zip\n  - backendEndpoint=https://artifacts.app.4sthings.tiab.ssc.sva.de\n  - backendRegion=main\n  - backendBucket=vsphere-vm\n  - tfProviderName=vsphere\n  - tfProviderSource=hashicorp/vsphere\n  - tfProviderVersion=2.5.1\n  - tfVersion=1.6.5\n secrets:\n  - vsphere_user=cloud/data/vsphere:username\n  - vsphere_password=cloud/data/vsphere:password\n  - vsphere_server=cloud/data/vsphere:ip\n  - vm_ssh_user=cloud/data/vsphere:vm_ssh_user\n  - vm_ssh_password=cloud/data/vsphere:vm_ssh_password\n template: vsphere-vm\n terraform-version: 1.6.5\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eEXAMPLE-PVE-VM\u003c/summary\u003e\n\n```yaml\napiVersion: machineshop.sthings.tiab.ssc.sva.de/v1beta1\nkind: Terraform\nmetadata:\n  name: terraform-pve-sample\n  labels:\n    app.kubernetes.io/name: terraform\n    app.kubernetes.io/part-of: machine-shop-operator\n    app.kubernetes.io/created-by: machine-shop-operator\nspec:\n  variables:\n    - vm_name=\"machine-shop-operator-pve1\"\n    - vm_count=1\n    - vm_num_cpus=6\n    - vm_memory=8192\n    - vm_template=\"u22-rke2-upi\"\n    - pve_network=\"vmbr101\"\n    - pve_datastore=\"v3700\"\n    - vm_disk_size=\"128G\"\n    - pve_folder_path=\"stuttgart-things\"\n    - pve_cluster_node=\"sthings-pve1\"\n  module:\n    - moduleName=machine-shop-operator-pve1\n    - backendKey=machine-shop-operator-pve1.tfstate\n    - moduleSourceUrl=https://artifacts.app.sthings-pve.labul.sva.de/modules/proxmox-vm.zip\n    - backendEndpoint=https://artifacts.app.sthings-pve.labul.sva.de\n    - backendRegion=main\n    - backendBucket=pve-vm\n    - tfProviderName=proxmox\n    - tfProviderSource=Telmate/proxmox\n    - tfProviderVersion=2.9.14\n    - tfVersion=1.6.5\n  backend:\n    - access_key=apps/data/artifacts:rootUser\n    - secret_key=apps/data/artifacts:rootPassword\n  secrets:\n    - pve_api_url=cloud/data/pve:api_url\n    - pve_api_user=cloud/data/pve:api_user\n    - pve_api_password=cloud/data/pve:api_password\n    - vm_ssh_user=cloud/data/pve:ssh_user\n    - vm_ssh_password=cloud/data/pve:ssh_password\n  terraform-version: 1.6.5\n  template: pve-vm\n```\n\n\u003c/details\u003e\n\n## License\n\nCopyright 2023 patrick hermann.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuttgart-things%2Fmachine-shop-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuttgart-things%2Fmachine-shop-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuttgart-things%2Fmachine-shop-operator/lists"}