{"id":13707280,"url":"https://github.com/camptocamp/devops-stack-module-template","last_synced_at":"2025-05-06T00:30:50.154Z","repository":{"id":142340694,"uuid":"613248548","full_name":"camptocamp/devops-stack-module-template","owner":"camptocamp","description":"A DevOps Stack module to use as a template when creating modules","archived":false,"fork":false,"pushed_at":"2024-10-09T13:15:23.000Z","size":34,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-11-13T15:49:47.402Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HCL","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/camptocamp.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-13T07:47:46.000Z","updated_at":"2024-10-09T13:15:25.000Z","dependencies_parsed_at":"2024-01-19T14:37:40.749Z","dependency_job_id":"7249f3e0-b32c-4824-81c0-45847e17bd91","html_url":"https://github.com/camptocamp/devops-stack-module-template","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camptocamp%2Fdevops-stack-module-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camptocamp%2Fdevops-stack-module-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camptocamp%2Fdevops-stack-module-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camptocamp%2Fdevops-stack-module-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camptocamp","download_url":"https://codeload.github.com/camptocamp/devops-stack-module-template/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252598192,"owners_count":21774218,"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-08-02T22:01:26.061Z","updated_at":"2025-05-06T00:30:49.891Z","avatar_url":"https://github.com/camptocamp.png","language":"HCL","readme":"= devops-stack-module-template\n// Document attributes to replace along the document\n// Here you can define variables for something that keeps repeating along the text\n:CHART-DEPENDENCY-1-NAME-chart-version: 1.2.3\n:CHART-DEPENDENCY-2-NAME-chart-version: 1.2.3\n:original-repo-url: https://github.com/path/to/some/repository\n\nA https://devops-stack.io[DevOps Stack] module to deploy *_something_*.\n\nThe *_something_* chart used by this module is shipped in this repository as well, in order to avoid any unwanted behaviors caused by unsupported versions. \n\n[cols=\"1,1,1\",options=\"autowidth,header\"]\n|===\n|Current Chart Version |Original Repository |Default Values\n|*{CHART-DEPENDENCY-1-NAME-chart-version}* |{original-repo-url}/subpath/to/the/chart[Chart] |{original-repo-url}/subpath/to/the/values.yaml[`values.yaml`] (_here you can also use artifacthub.io_)\n|===\n\n== Usage\n\n_Here you will show examples of how to call this module on your code. Note that the `depends_on` needs to be adapted to your use case._\n\n_You can start by giving a simple example and then show some others with increasing complexity and/or for specific use cases._\n\n[source,terraform]\n----\nmodule \"template\" {\n  source = \"git::https://github.com/camptocamp/devops-stack-module-template.git?ref=\u003cRELEASE\u003e\"\n\n  cluster_name            = local.cluster_name\n  argocd_namespace        = local.argocd_namespace\n\n  dependency_ids = {\n    argocd = module.argocd_bootstrap.id\n  }\n}\n----\n\n=== Something Explained Better\n\n_If there is some part of the module's configuration that needs more specific explanations, such as a very particular output on which every other module depends on, maybe consider creating a subsection to improve readability._\n\nNOTE: _The AsciiDoc syntax provides a way to write admonitions such as this one, so use it if you think it is useful. The https://docs.antora.org/antora/latest/asciidoc/admonitions/[official documentation] for Antora Docs provides more examples._\n\n== Technical Reference\n\n_This section will contain the more technical details of the module. It is mainly generated automatically by Terraform Docs (everything that is between the comments `BEGIN_TF_DOCS` / `END_TF_DOCS`). However, it is recommended to, at the bare minimum, add a dependencies section to explain the reason on why this module could depend on another one from the DevOps Stack._\n\n_You can safely delete the content between the comments `BEGIN_TF_DOCS` / `END_TF_DOCS` and `BEGIN_TF_TABLES` / `END_TF_TABLES` when creating your on module._\n\n=== Dependencies\n\n==== `module.argocd_bootstrap`\n\nThis module must be one of the first ones to be deployed and consequently it needs to be deployed after the module `argocd_bootstrap`.\n\n// BEGIN_TF_DOCS\n=== Requirements\n\nThe following requirements are needed by this module:\n\n- [[requirement_argocd]] \u003c\u003crequirement_argocd,argocd\u003e\u003e (\u003e= 6)\n\n- [[requirement_null]] \u003c\u003crequirement_null,null\u003e\u003e (\u003e= 3)\n\n- [[requirement_utils]] \u003c\u003crequirement_utils,utils\u003e\u003e (\u003e= 1)\n\n=== Providers\n\nThe following providers are used by this module:\n\n- [[provider_utils]] \u003c\u003cprovider_utils,utils\u003e\u003e (\u003e= 1)\n\n- [[provider_argocd]] \u003c\u003cprovider_argocd,argocd\u003e\u003e (\u003e= 6)\n\n- [[provider_null]] \u003c\u003cprovider_null,null\u003e\u003e (\u003e= 3)\n\n=== Resources\n\nThe following resources are used by this module:\n\n- https://registry.terraform.io/providers/argoproj-labs/argocd/latest/docs/resources/application[argocd_application.this] (resource)\n- https://registry.terraform.io/providers/argoproj-labs/argocd/latest/docs/resources/project[argocd_project.this] (resource)\n- https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource[null_resource.dependencies] (resource)\n- https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource[null_resource.this] (resource)\n- https://registry.terraform.io/providers/cloudposse/utils/latest/docs/data-sources/deep_merge_yaml[utils_deep_merge_yaml.values] (data source)\n\n=== Required Inputs\n\nThe following input variables are required:\n\n==== [[input_cluster_name]] \u003c\u003cinput_cluster_name,cluster_name\u003e\u003e\n\nDescription: Name given to the cluster. Value used for naming some the resources created by the module.\n\nType: `string`\n\n==== [[input_base_domain]] \u003c\u003cinput_base_domain,base_domain\u003e\u003e\n\nDescription: Base domain of the cluster. Value used for the ingress' URL of the application.\n\nType: `string`\n\n=== Optional Inputs\n\nThe following input variables are optional (have default values):\n\n==== [[input_argocd_project]] \u003c\u003cinput_argocd_project,argocd_project\u003e\u003e\n\nDescription: Name of the Argo CD AppProject where the Application should be created. If not set, the Application will be created in a new AppProject only for this Application.\n\nType: `string`\n\nDefault: `null`\n\n==== [[input_argocd_labels]] \u003c\u003cinput_argocd_labels,argocd_labels\u003e\u003e\n\nDescription: Labels to attach to the Argo CD Application resource.\n\nType: `map(string)`\n\nDefault: `{}`\n\n==== [[input_destination_cluster]] \u003c\u003cinput_destination_cluster,destination_cluster\u003e\u003e\n\nDescription: Destination cluster where the application should be deployed.\n\nType: `string`\n\nDefault: `\"in-cluster\"`\n\n==== [[input_target_revision]] \u003c\u003cinput_target_revision,target_revision\u003e\u003e\n\nDescription: Override of target revision of the application chart.\n\nType: `string`\n\nDefault: `\"v1.0.0\"`\n\n==== [[input_cluster_issuer]] \u003c\u003cinput_cluster_issuer,cluster_issuer\u003e\u003e\n\nDescription: SSL certificate issuer to use. Usually you would configure this value as `letsencrypt-staging` or `letsencrypt-prod` on your root `*.tf` files.\n\nType: `string`\n\nDefault: `\"selfsigned-issuer\"`\n\n==== [[input_helm_values]] \u003c\u003cinput_helm_values,helm_values\u003e\u003e\n\nDescription: Helm chart value overrides. They should be passed as a list of HCL structures.\n\nType: `any`\n\nDefault: `[]`\n\n==== [[input_deep_merge_append_list]] \u003c\u003cinput_deep_merge_append_list,deep_merge_append_list\u003e\u003e\n\nDescription: A boolean flag to enable/disable appending lists instead of overwriting them.\n\nType: `bool`\n\nDefault: `false`\n\n==== [[input_app_autosync]] \u003c\u003cinput_app_autosync,app_autosync\u003e\u003e\n\nDescription: Automated sync options for the Argo CD Application resource.\n\nType:\n[source,hcl]\n----\nobject({\n    allow_empty = optional(bool)\n    prune       = optional(bool)\n    self_heal   = optional(bool)\n  })\n----\n\nDefault:\n[source,json]\n----\n{\n  \"allow_empty\": false,\n  \"prune\": true,\n  \"self_heal\": true\n}\n----\n\n==== [[input_dependency_ids]] \u003c\u003cinput_dependency_ids,dependency_ids\u003e\u003e\n\nDescription: IDs of the other modules on which this module depends on.\n\nType: `map(string)`\n\nDefault: `{}`\n\n=== Outputs\n\nThe following outputs are exported:\n\n==== [[output_id]] \u003c\u003coutput_id,id\u003e\u003e\n\nDescription: ID to pass other modules in order to refer to this module as a dependency.\n// END_TF_DOCS\n\n=== Reference in table format \n\n.Show tables\n[%collapsible]\n====\n// BEGIN_TF_TABLES\n= Requirements\n\n[cols=\"a,a\",options=\"header,autowidth\"]\n|===\n|Name |Version\n|[[requirement_argocd]] \u003c\u003crequirement_argocd,argocd\u003e\u003e |\u003e= 6\n|[[requirement_null]] \u003c\u003crequirement_null,null\u003e\u003e |\u003e= 3\n|[[requirement_utils]] \u003c\u003crequirement_utils,utils\u003e\u003e |\u003e= 1\n|===\n\n= Providers\n\n[cols=\"a,a\",options=\"header,autowidth\"]\n|===\n|Name |Version\n|[[provider_null]] \u003c\u003cprovider_null,null\u003e\u003e |\u003e= 3\n|[[provider_argocd]] \u003c\u003cprovider_argocd,argocd\u003e\u003e |\u003e= 6\n|[[provider_utils]] \u003c\u003cprovider_utils,utils\u003e\u003e |\u003e= 1\n|===\n\n= Resources\n\n[cols=\"a,a\",options=\"header,autowidth\"]\n|===\n|Name |Type\n|https://registry.terraform.io/providers/argoproj-labs/argocd/latest/docs/resources/application[argocd_application.this] |resource\n|https://registry.terraform.io/providers/argoproj-labs/argocd/latest/docs/resources/project[argocd_project.this] |resource\n|https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource[null_resource.dependencies] |resource\n|https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource[null_resource.this] |resource\n|https://registry.terraform.io/providers/cloudposse/utils/latest/docs/data-sources/deep_merge_yaml[utils_deep_merge_yaml.values] |data source\n|===\n\n= Inputs\n\n[cols=\"a,a,a,a,a\",options=\"header,autowidth\"]\n|===\n|Name |Description |Type |Default |Required\n|[[input_cluster_name]] \u003c\u003cinput_cluster_name,cluster_name\u003e\u003e\n|Name given to the cluster. Value used for naming some the resources created by the module.\n|`string`\n|n/a\n|yes\n\n|[[input_base_domain]] \u003c\u003cinput_base_domain,base_domain\u003e\u003e\n|Base domain of the cluster. Value used for the ingress' URL of the application.\n|`string`\n|n/a\n|yes\n\n|[[input_argocd_project]] \u003c\u003cinput_argocd_project,argocd_project\u003e\u003e\n|Name of the Argo CD AppProject where the Application should be created. If not set, the Application will be created in a new AppProject only for this Application.\n|`string`\n|`null`\n|no\n\n|[[input_argocd_labels]] \u003c\u003cinput_argocd_labels,argocd_labels\u003e\u003e\n|Labels to attach to the Argo CD Application resource.\n|`map(string)`\n|`{}`\n|no\n\n|[[input_destination_cluster]] \u003c\u003cinput_destination_cluster,destination_cluster\u003e\u003e\n|Destination cluster where the application should be deployed.\n|`string`\n|`\"in-cluster\"`\n|no\n\n|[[input_target_revision]] \u003c\u003cinput_target_revision,target_revision\u003e\u003e\n|Override of target revision of the application chart.\n|`string`\n|`\"v1.0.0\"`\n|no\n\n|[[input_cluster_issuer]] \u003c\u003cinput_cluster_issuer,cluster_issuer\u003e\u003e\n|SSL certificate issuer to use. Usually you would configure this value as `letsencrypt-staging` or `letsencrypt-prod` on your root `*.tf` files.\n|`string`\n|`\"selfsigned-issuer\"`\n|no\n\n|[[input_helm_values]] \u003c\u003cinput_helm_values,helm_values\u003e\u003e\n|Helm chart value overrides. They should be passed as a list of HCL structures.\n|`any`\n|`[]`\n|no\n\n|[[input_deep_merge_append_list]] \u003c\u003cinput_deep_merge_append_list,deep_merge_append_list\u003e\u003e\n|A boolean flag to enable/disable appending lists instead of overwriting them.\n|`bool`\n|`false`\n|no\n\n|[[input_app_autosync]] \u003c\u003cinput_app_autosync,app_autosync\u003e\u003e\n|Automated sync options for the Argo CD Application resource.\n|\n\n[source]\n----\nobject({\n    allow_empty = optional(bool)\n    prune       = optional(bool)\n    self_heal   = optional(bool)\n  })\n----\n\n|\n\n[source]\n----\n{\n  \"allow_empty\": false,\n  \"prune\": true,\n  \"self_heal\": true\n}\n----\n\n|no\n\n|[[input_dependency_ids]] \u003c\u003cinput_dependency_ids,dependency_ids\u003e\u003e\n|IDs of the other modules on which this module depends on.\n|`map(string)`\n|`{}`\n|no\n\n|===\n\n= Outputs\n\n[cols=\"a,a\",options=\"header,autowidth\"]\n|===\n|Name |Description\n|[[output_id]] \u003c\u003coutput_id,id\u003e\u003e |ID to pass other modules in order to refer to this module as a dependency.\n|===\n// END_TF_TABLES\n====\n","funding_links":[],"categories":["HCL"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamptocamp%2Fdevops-stack-module-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamptocamp%2Fdevops-stack-module-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamptocamp%2Fdevops-stack-module-template/lists"}