{"id":22808023,"url":"https://github.com/returngis/issueops-advanced","last_synced_at":"2025-10-29T11:46:32.058Z","repository":{"id":266504915,"uuid":"893083484","full_name":"returngis/issueops-advanced","owner":"returngis","description":"🧪 Prueba de concepto de IssueOps ⚙️ con Terraform","archived":false,"fork":false,"pushed_at":"2025-03-03T21:19:27.000Z","size":1528,"stargazers_count":3,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-01T09:10:12.721Z","etag":null,"topics":["issueops","returngis","terraform"],"latest_commit_sha":null,"homepage":"https://youtu.be/rIqlgk1IFnU","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/returngis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-11-23T13:45:11.000Z","updated_at":"2025-03-16T19:45:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"5a694451-0d1b-4c51-ad29-c448b039725e","html_url":"https://github.com/returngis/issueops-advanced","commit_stats":null,"previous_names":["returngis/issueops-advanced"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/returngis%2Fissueops-advanced","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/returngis%2Fissueops-advanced/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/returngis%2Fissueops-advanced/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/returngis%2Fissueops-advanced/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/returngis","download_url":"https://codeload.github.com/returngis/issueops-advanced/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/returngis%2Fissueops-advanced/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259037714,"owners_count":22796477,"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":["issueops","returngis","terraform"],"created_at":"2024-12-12T11:07:38.750Z","updated_at":"2025-10-29T11:46:27.014Z","avatar_url":"https://github.com/returngis.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IssueOps Demo\n\n¡Hola developer 👋🏻! Este repositorio contiene un ejemplo de cómo trabajar con IssueOps, utilizando Issue Forms, GitHub Actions, Terraform para el despliegue de infraestructura y Microsoft Azure como destino. Si quieres verlo en funcionamiento puedes echar un vistazo a este vídeo de mi canal de YouTube:\n\n[![🧪 Prueba de concepto de IssueOps ⚙️ con Terraform](docs/images/Prueba%20de%20IssueOps%20con%20Terraform.png)](https://youtu.be/rIqlgk1IFnU)\n\n### Requisitos\n\nPara poder usar este repositorio necesitas:\n\n- **Crear las etiquetas** que se usan para los diferentes tipos de arquitecturas que están disponibles en este repo: `issueops:web`, `issueops:kubernetes` e `issueops:storage`. Estas van a ayudar a los flujos de GitHub Actions a elegir una plantilla y archivos de Terraform en concreto.\n- **Registrar una aplicación en Microsoft Entra ID** que nos permita desplegar los recursos en Azure a través de Terraform. Puedes hacerlo con esta línea: \n```bash\naz login\nAZURE_CREDENTIALS=$(az ad sp create-for-rbac --name \"issueOps-advanced\" --role contributor --scopes /subscriptions/$(az account show --query id -o tsv))\n```\n- **Crear los siguientes secretos** para los flujos de GitHub Actions:\n    - `TF_SUBSCRIPTION_ID`: El Id de la suscripción donde vas a desplegar los recursos.\n    - `TF_CLIENT_ID`: Client Id recuperado del comando anterior.\n    - `TF_CLIENT_SECRET`: Password recuperado del comando anterior.\n    - `TF_TENANT_ID`: El Id del tenant donde se encuentra la suscripción donde vas a desplegar los recursos.\n\nPara hacerlo de forma sencilla puedes utilizar GitHub CLI:\n\n```bash\ngh auth login\n\ngh secret set TF_SUBSCRIPTION_ID -b\"$(az account show --query id -o tsv)\"\ngh secret set TF_CLIENT_ID -b\"$(echo $AZURE_CREDENTIALS | jq -r .appId)\"\ngh secret set TF_CLIENT_SECRET -b\"$(echo $AZURE_CREDENTIALS | jq -r .password)\"\ngh secret set TF_TENANT_ID -b\"$(az account show --query tenantId -o tsv)\"\n```\n\n- **Una cuenta de Azure Storage** donde se va a guardar los estados de terraform de las diferentes arquitecturas que se creen en base a las peticiones.\n\n```bash\nLOCATION=\"spaincentral\"\nRG_NAME=\"issueOps-advanced\"\nSTORAGE_NAME=\"issueopsadvanced\"\nCONTAINER_NAME=\"tfstate\"\n\naz group create --name $RG_NAME --location $LOCATION\n\naz storage account create --name $STORAGE_NAME --resource-group $RG_NAME --location $LOCATION --sku Standard_LRS\n\naz storage container create --name $CONTAINER_NAME --account-name $STORAGE_NAME\n```\n\n- **Los secretos asociados a la cuenta de storage** que son:\n    - `TF_STATE_RESOURCE_GROUP_NAME`\n    - `TF_STATE_AZURE_STORAGE_NAME`\n    - `TF_STATE_CONTAINER_NAME`\n    - `TF_STATE_STORAGE_ACCESS_KEY`\n\nTambién puedes hacerlo con GitHub CLI:\n\n```bash\nACCESS_KEY=$(az storage account keys list --account-name $STORAGE_NAME --resource-group $RG_NAME --query \"[0].value\" -o tsv)\n\n\ngh secret set TF_STATE_RESOURCE_GROUP_NAME -b\"$RG_NAME\"\ngh secret set TF_STATE_AZURE_STORAGE_NAME -b\"$STORAGE_NAME\"\ngh secret set TF_STATE_CONTAINER_NAME -b\"$CONTAINER_NAME\"\ngh secret set TF_STATE_STORAGE_ACCESS_KEY -b\"$ACCESS_KEY\"\n``` \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freturngis%2Fissueops-advanced","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freturngis%2Fissueops-advanced","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freturngis%2Fissueops-advanced/lists"}