{"id":21726949,"url":"https://github.com/wttech/aemc-ansible","last_synced_at":"2025-04-12T23:33:14.675Z","repository":{"id":119683568,"uuid":"575886808","full_name":"wttech/aemc-ansible","owner":"wttech","description":"AEM Compose - Ansible","archived":false,"fork":false,"pushed_at":"2024-11-18T09:06:25.000Z","size":2099,"stargazers_count":3,"open_issues_count":7,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-26T17:42:27.544Z","etag":null,"topics":["adobe","adobe-experience-manager","aem","aemaacs","ansible","automation","configuration","configuration-management","devops"],"latest_commit_sha":null,"homepage":"","language":"Python","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/wttech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2022-12-08T14:20:25.000Z","updated_at":"2024-11-18T09:06:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"4b1081a7-cd92-49f9-af37-8ae8b6bb72dd","html_url":"https://github.com/wttech/aemc-ansible","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Faemc-ansible","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Faemc-ansible/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Faemc-ansible/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wttech%2Faemc-ansible/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wttech","download_url":"https://codeload.github.com/wttech/aemc-ansible/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","ansible","automation","configuration","configuration-management","devops"],"created_at":"2024-11-26T03:42:18.614Z","updated_at":"2025-04-12T23:33:14.655Z","avatar_url":"https://github.com/wttech.png","language":"Python","readme":"![AEM Compose Logo](https://github.com/wttech/aemc-ansible/raw/main/docs/logo-with-text.png)\n[![WTT Logo](https://github.com/wttech/aemc-ansible/raw/main/docs/wtt-logo.png)](https://www.wundermanthompson.com/service/technology)\n\n[![Last Release Version](https://img.shields.io/github/v/release/wttech/aemc?color=lightblue\u0026label=Last%20Release)](https://github.com/wttech/aemc-ansible/tags)\n[![Ansible Galaxy](https://img.shields.io/badge/Ansible%20Galaxy-8A2BE2)](https://galaxy.ansible.com/wttech/aem)\n[![Apache License, Version 2.0, January 2004](https://github.com/wttech/aemc-ansible/raw/main/docs/apache-license-badge.svg)](http://www.apache.org/licenses/)\n\n# AEM Compose - Ansible Collection\n\nProvides modules and roles built on top of [AEM Compose CLI](https://github.com/wttech/aemc) to provision [AEM](https://business.adobe.com/products/experience-manager/adobe-experience-manager.html) instances to desired state.\nConfiguration changes are applied idempotently in the Ansible spirit to reduce execution time making the tool effective in practice. Published in [Ansible Galaxy](https://galaxy.ansible.com/wttech/aem).\n\n## Example integrations\n\n1. [Packer](examples/packer) - good starting point for baking AWS EC2 image using Ansible and AEM Compose Ansible modules\n2. [Local](examples/local) - development \u0026 testing sandbox for AEM Compose CLI and Ansible Modules which runs Ansible locally/natively\n3. Have an idea for the next one? Want to help? At least raise an [issue](https://github.com/wttech/aemc-ansible/issues/new) :)\n\n## Example configuration\n\n1. Vars \n\n   All configuration options available for AEM Compose CLI are also supported in Ansible. There are two ways to define configuration.\n \n   The first way is **nesting config values** under `aem_config_dict` Ansible variable defined anywhere e.g in the playbook or custom role (according to own [preferences](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.html#where-to-set-variables)).\n   This special variable is passed to all AEM Compose modules automatically for the sake of simplicity.\n\n   ```yaml\n   aem_config_dict: \n     instance:\n    \n     config:\n       local_author:\n         http_url: http://127.0.0.1:4502\n         user: admin\n         password: admin\n         run_modes: [ local ]\n         # ...\n       local_publish:\n         # ...\n\n     package:\n       snapshot_patterns: [ \"**/*-SNAPSHOT.zip\" ]\n       snapshot_deploy_skipping: true\n   \n   # ...\n   ```\n   This approach is used in [local example](examples/local/group_vars/all.yml#L25).\n\n   The second way is **templating configuration file** (*aem.yml*). The path of the templated file need to be defined in `aem_config_file` Ansible variable to be automatically passed to AEM Compose CLI.\n   This approach is used in [default instance role](roles/instance/templates/aem.yml)\n \n\n2. Playbook:\n\n   For better flexibility, it is recommended to create your own instance role by copying the default [instance role](roles/instance) and then adapting it for a project-specific use case.\n   The tasks below are just showcasing meaningful features of AEM Compose Ansible modules.\n\n    ```yaml \n    - name: create instances\n      wttech.aem.instance:\n        command: create\n    \n    - name: turn on instances\n      wttech.aem.instance:\n        command: up\n    \n    - name: configure replication agent\n      wttech.aem.repl_agent:\n        command: setup\n        instance_id: local_author\n        location: author\n        name: publish\n        props:\n          enabled: true\n          transportUri: \"{{ aem.instance.config.local_publish.http_url }}/bin/receive?sling:authRequestLogin=1\"\n          transportUser: \"{{ aem.instance.config.local_publish.user }}\"\n          transportPassword: \"{{ aem.instance.config.local_publish.password }}\"\n          userId: \"{{ aem.instance.config.local_publish.user }}\"\n    \n    - name: setup Crypto Support\n      wttech.aem.crypto:\n        command: setup\n    \n    - name: deploy APM package\n      wttech.aem.pkg:\n        command: deploy\n        url: https://github.com/wttech/APM/releases/download/apm-5.5.1/apm-all-5.5.1.zip\n    \n    - name: read some node\n      wttech.aem.repo_node:\n        command: read\n        instance_id: local_author\n        path: /content/cq:tags/experience-fragments\n      register: res\n    \n    - name: print node creation time\n      debug:\n        msg: \"Node '/content/cq:tags/experience-fragments' was created at '{{ res.data.node.properties['jcr:created'] }}'\"\n    \n    - name: save some node\n      wttech.aem.repo_node:\n        command: save\n        instance_id: local_author\n        path: /content/foo\n        props:\n          foo: bar3\n    \n    - name: read some bundle\n      wttech.aem.osgi_bundle:\n        command: read\n        instance_id: local_author\n        symbolic_name: com.day.cq.wcm.cq-wcm-core\n      register: res\n    \n    - name: print read bundle ID\n      debug:\n        msg: \"Bundle 'com.day.cq.wcm.cq-wcm-core' has ID '{{ res.data.bundle.details.id }}'\"\n    \n    - name: enable CRX DE\n      wttech.aem.osgi_config:\n        command: save\n        pid: org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet\n        props:\n          alias: /crx/server\n    ```\n    \n    Consider reviewing playbooks used in tests in [local example](examples/local) for more example usages.\n\n# Contributing\n\nIssues reported or pull requests created will be very appreciated.\n\n1. Fork plugin source code using a dedicated GitHub button.\n2. See [development guide](DEVELOPMENT.md)\n3. Do code changes on a feature branch created from *main* branch.\n4. Create a pull request with a base of *main* branch.\n\n# License\n\n**AEM Compose** is licensed under the [Apache License, Version 2.0 (the \"License\")](https://www.apache.org/licenses/LICENSE-2.0.txt)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwttech%2Faemc-ansible","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwttech%2Faemc-ansible","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwttech%2Faemc-ansible/lists"}