{"id":21726950,"url":"https://github.com/wttech/terraform-provider-aem","last_synced_at":"2025-04-12T23:33:44.827Z","repository":{"id":207644828,"uuid":"678822925","full_name":"wttech/terraform-provider-aem","owner":"wttech","description":"Easily manage AEM instances in the cloud without a deep dev-ops knowledge","archived":false,"fork":false,"pushed_at":"2024-11-05T10:51:20.000Z","size":571,"stargazers_count":4,"open_issues_count":11,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-12T23:33:40.879Z","etag":null,"topics":["adobe","adobe-experience-manager","aem","aemaacs","automation","configuration","devops","infrastructure-as-code","terraform"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/providers/wttech/aem/latest/docs","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wttech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-15T13:14:50.000Z","updated_at":"2024-10-31T23:41:29.000Z","dependencies_parsed_at":"2023-11-16T22:06:38.723Z","dependency_job_id":"3d1c681b-08a2-401c-9d29-79a868b6368d","html_url":"https://github.com/wttech/terraform-provider-aem","commit_stats":null,"previous_names":["wttech/terraform-provider-aem"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Fterraform-provider-aem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Fterraform-provider-aem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Fterraform-provider-aem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Fterraform-provider-aem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wttech","download_url":"https://codeload.github.com/wttech/terraform-provider-aem/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248647259,"owners_count":21139081,"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":["adobe","adobe-experience-manager","aem","aemaacs","automation","configuration","devops","infrastructure-as-code","terraform"],"created_at":"2024-11-26T03:42:18.930Z","updated_at":"2025-04-12T23:33:44.799Z","avatar_url":"https://github.com/wttech.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![AEM Compose Logo](docs/logo-with-text.png)\n[![WTT Logo](docs/wtt-logo.png)](https://www.wundermanthompson.com/service/technology)\n\n[![Apache License, Version 2.0, January 2004](docs/apache-license-badge.svg)](http://www.apache.org/licenses/)\n\n# AEM Compose - Terraform Provider\n\nThis provider allows development teams to easily set up [Adobe Experience Manager (AEM)](https://business.adobe.com/products/experience-manager/adobe-experience-manager.html) instances on virtual machines in the cloud (AWS, Azure, GCP, etc.) or bare metal machines.\nIt's based on the [AEM Compose](https://github.com/wttech/aemc) tool and aims to simplify the process of creating AEM environments without requiring deep DevOps knowledge.\n\nPublished in [Terraform Registry](https://registry.terraform.io/providers/wttech/aem/latest/docs).\n\n# References\n\n* Talk at AdaptTo 2024 Conference - [First-ever IaC Providers for AEM](https://adapt.to/2024/schedule/lightning-talks/first-ever-iaac-providers-for-aem) by [Krystian Panek](mailto:krystian.panek@vml.com)\n\n## Purpose\n\nThe main purpose of this provider is to enable users to:\n\n- Set up as many AEM environments as needed with minimal effort\n- Eliminate the need for deep DevOps knowledge\n- Allow for seamless integration with popular cloud platforms such as AWS and Azure\n- Provide a simple and efficient way to manage AEM instances\n\n## Features\n\n- Easy configuration and management of AEM instances\n- Support for multiple cloud platforms and bare metal machines\n- Seamless integration with Terraform for infrastructure provisioning\n- Based on the powerful [AEM Compose](https://github.com/wttech/aemc) tool\n\n## Overview\n\nProvides an AEM instance resource to set up one or more AEM instances on virtual machines in the cloud or bare metal machines.\nBelow configuration is a generic example of how to use the provider:\n\n```hcl\nresource \"aem_instance\" \"single\" {\n  depends_on = [] // for example: [aws_instance.aem_single, aws_volume_attachment.aem_single_data]\n\n  // see available connection types: https://github.com/wttech/terraform-provider-aem/blob/main/internal/client/client_manager.go\n  client { \n    type = \"\u003ctype\u003e\"  // 'aws-ssm' or 'ssh'\n    settings = {\n      // type-specific values goes here\n    }\n    credentials = {\n      // type-specific values goes here\n    }\n  }\n\n  system {\n    bootstrap = {\n      inline = [\n        // commands to execute only once on the machine (not idempotent)\n      ]\n    }\n  }\n\n  compose {\n    create = {\n      inline = [\n        // commands to execute before launching AEM instances (idempotent)\n        // for downloading AEM files, etc.\n      ]\n    }\n    configure = {\n      inline = [\n        // commands to execute after launching AEM instances (idempotent)\n        // for provisioning AEM instances: setting replication agents, installing packages, etc.\n      ]\n    }\n  }\n}\n\noutput \"aem_instances\" {\n  value = aem_instance.single.instances\n}\n```\n\n## Quickstart\n\nThe easiest way to get started is to review, copy and adapt provided examples:\n\n1. [AWS EC2 instance with private IP](https://github.com/wttech/terraform-provider-aem/tree/main/examples/aws_ssm)\n2. [AWS EC2 instance with public IP](https://github.com/wttech/terraform-provider-aem/tree/main/examples/aws_ssh)\n3. [Bare metal machine](https://github.com/wttech/terraform-provider-aem/tree/main/examples/bare_metal_ssh)\n\n- - -\n\n## Development\n\n### Requirements\n\n- [Terraform](https://developer.hashicorp.com/terraform/downloads) \u003e= 1.0\n- [Go](https://golang.org/doc/install) \u003e= 1.19\n\n### Building The Provider\n\n1. Clone the repository\n2. Enter the repository directory\n3. Build the provider using the Go `install` command:\n\n```shell\ngo install\n```\n\n### Adding Dependencies\n\nThis provider uses [Go modules](https://github.com/golang/go/wiki/Modules).\nPlease see the Go documentation for the most up to date information about using Go modules.\n\nTo add a new dependency `github.com/author/dependency` to your Terraform provider:\n\n```shell\ngo get github.com/author/dependency\ngo mod tidy\n```\n\nThen commit the changes to `go.mod` and `go.sum`.\n\n### Troubleshooting the provider\n\nBefore running any Terraform command simply set the environment variable `TF_LOG=INFO` (or ultimately `TF_LOG=DEBUG`) to see detailed logs about progress of the setting up the AEM instances.\n\n### Developing the Provider\n\nIf you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (see [Requirements](#requirements) above).\n\nTo compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory.\n\nTo generate or update documentation, run `go generate`.\n\nIn order to run the full suite of Acceptance tests, run `make testacc`.\n\n*Note:* Acceptance tests create real resources, and often cost money to run.\n\n```shell\nmake testacc\n```\n\n### Testing the Provider using examples\n\nRun command: `sh develop.sh \u003cexample_path\u003e \u003ctf_args\u003e`.\n\nFor example: \n\n- `sh develop.sh examples/aws_ssh plan`\n- `sh develop.sh examples/aws_ssh apply -auto-approve`\n- `sh develop.sh examples/aws_ssh destroy -auto-approve`\n\n- `sh develop.sh examples/aws_ssm plan`\n- `sh develop.sh examples/aws_ssm apply -auto-approve`\n- `sh develop.sh examples/aws_ssm destroy -auto-approve`\n\n### Debugging the Provider\n\n1. Run command `go run . -debug` from IDEA in debug mode and copy the value of `TF_REATTACH_PROVIDERS` from the output.\n2. Set up breakpoint in the code.\n3. Run `TF_REATTACH_PROVIDERS=\u003cvalue_copied_above\u003e TF_CLI_CONFIG_FILE=$(pwd)/../../dev_overrides.tfrc terraform apply` in one of the examples directory.\n4. The breakpoint should be hit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwttech%2Fterraform-provider-aem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwttech%2Fterraform-provider-aem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwttech%2Fterraform-provider-aem/lists"}