{"id":20509032,"url":"https://github.com/shinesolutions/puppet-aem-resources","last_synced_at":"2026-03-11T10:04:52.605Z","repository":{"id":45649406,"uuid":"76822667","full_name":"shinesolutions/puppet-aem-resources","owner":"shinesolutions","description":"Puppet module for provisioning Adobe Experience Manager (AEM) resources","archived":false,"fork":false,"pushed_at":"2024-08-02T00:20:09.000Z","size":701,"stargazers_count":7,"open_issues_count":12,"forks_count":12,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-02-19T17:16:57.952Z","etag":null,"topics":["aem","aem-opencloud","puppet"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/shinesolutions.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":"2016-12-19T02:53:50.000Z","updated_at":"2024-07-31T13:15:52.000Z","dependencies_parsed_at":"2024-06-19T05:29:23.411Z","dependency_job_id":"1628a131-dd4b-434f-adbb-df326737209d","html_url":"https://github.com/shinesolutions/puppet-aem-resources","commit_stats":{"total_commits":543,"total_committers":13,"mean_commits":41.76923076923077,"dds":0.2578268876611418,"last_synced_commit":"7d15b5342745d6969592d9a67bb43193c3ffab21"},"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"purl":"pkg:github/shinesolutions/puppet-aem-resources","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fpuppet-aem-resources","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fpuppet-aem-resources/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fpuppet-aem-resources/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fpuppet-aem-resources/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shinesolutions","download_url":"https://codeload.github.com/shinesolutions/puppet-aem-resources/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fpuppet-aem-resources/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30377838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["aem","aem-opencloud","puppet"],"created_at":"2024-11-15T20:21:56.526Z","updated_at":"2026-03-11T10:04:48.592Z","avatar_url":"https://github.com/shinesolutions.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/shinesolutions/puppet-aem-resources/workflows/CI/badge.svg)](https://github.com/shinesolutions/puppet-aem-resources/actions?query=workflow%3ACI)\n[![Published Version](https://img.shields.io/puppetforge/v/shinesolutions/aem_resources.svg)](http://forge.puppet.com/shinesolutions/aem_resources)\n[![Downloads Count](https://img.shields.io/puppetforge/dt/shinesolutions/aem_resources.svg)](http://forge.puppet.com/shinesolutions/aem_resources)\n[![Known Vulnerabilities](https://snyk.io/test/github/shinesolutions/puppet-aem-resources/badge.svg)](https://snyk.io/test/github/shinesolutions/puppet-aem-resources)\n\nPuppet AEM Resources\n--------------------\n\nA Puppet module for provisioning [Adobe Experience Manager (AEM)](http://www.adobe.com/au/marketing-cloud/enterprise-content-management.html) resources.\n\nLearn more about Puppet AEM Resources:\n\n* [Installation](https://github.com/shinesolutions/puppet-aem-resources#installation)\n* [Usage](https://github.com/shinesolutions/puppet-aem-resources#usage)\n* [Multi AEM Instances](https://github.com/shinesolutions/puppet-aem-resources#multi-aem-instances)\n* [Multi AEM Versions](https://github.com/shinesolutions/puppet-aem-resources#multi-aem-versions)\n* [Alias](https://github.com/shinesolutions/puppet-aem-resources#alias)\n* [Upgrade](https://github.com/shinesolutions/puppet-aem-resources#upgrade)\n* [Testing](https://github.com/shinesolutions/puppet-aem-resources#testing)\n\nPuppet AEM Resources is part of [AEM OpenCloud](https://aemopencloud.io) platform but it can be used as a stand-alone.\n\nInstallation\n------------\n\n    puppet module install shinesolutions-aem_resources\n\nOr via a Puppetfile:\n\n    mod 'shinesolutions/aem_resources'\n\nIf you want to use the `main` version:\n\n    mod 'shinesolutions/aem_resources', :git =\u003e 'https://github.com/shinesolutions/puppet-aem-resources'\n\nAnd because [PUP-3386](https://tickets.puppetlabs.com/browse/PUP-3386) hasn't been implemented, you have to install [ruby_aem](https://github.com/shinesolutions/ruby_aem) prior to using aem_resource Puppet module.\n\n    package { 'ruby_aem':\n      ensure   =\u003e '3.8.0',\n      provider =\u003e 'puppet_gem',\n    }\n\nConfiguration\n-------------\n\nAEM username, password, protocol, host, port, and debug can be set via environment variables or a configuration file.\n\nEnvironment variables have `aem_` prefix, e.g. `aem_username`, `aem_password`, `aem_protocol`, `aem_host`, `aem_port`, `aem_timeout`, and `aem_debug`.\n\nConfiguration file should be named `aem.yaml` and be placed under [Puppet config directory](https://docs.puppet.com/puppet/latest/dirs_confdir.html). Example config file:\n\n    ---\n    :username: 'admin'\n    :password: 'admin'\n    :protocol: 'http'\n    :host: 'localhost'\n    :port: 4502\n    :timeout: 300\n    :debug: False\n\nIf a configuration property is not set, then it will use the default value set in [ruby_aem](https://github.com/shinesolutions/ruby_aem).\n\nHowever, if the invocation specifies an `aem_id` attribute, then the value of that attribute will be used to identify the environment variables and configuration file. For example:\n\n    aem_bundle {\n      ...\n      aem_id =\u003e 'myaem',\n      ...\n    }\n\nThe invocation above will use environment variables with `myaem_` prefix, e.g. `myaem_username`, and it will use a configuration file named `myaem.yaml` under Puppet config directory.\n\nIt is also possible to specify username and password at invocation level by specifying `aem_username` and `aem_password` attributes. For example:\n\n    aem_bundle {\n      ...\n      aem_username =\u003e 'myusername',\n      aem_password =\u003e 'mypassword',\n      ...\n    }\n\nUsage\n-----\n\nAEM\n\n    aem_aem { 'Wait until login page is ready':\n      ensure                     =\u003e login_page_is_ready,\n      retries_max_tries          =\u003e 60,\n      retries_base_sleep_seconds =\u003e 5,\n      retries_max_sleep_seconds  =\u003e 5,\n    }\n\n    aem_aem { 'Wait until CRX Package Manager is ready':\n      ensure                     =\u003e aem_package_manager_is_ready,\n      retries_max_tries          =\u003e 60,\n      retries_base_sleep_seconds =\u003e 5,\n      retries_max_sleep_seconds  =\u003e 5,\n    }\n\n    # this requires aem-healthcheck package to be installed\n    # https://github.com/shinesolutions/aem-healthcheck\n    aem_aem { 'Wait until health is ok':\n      ensure                     =\u003e aem_health_check_is_ok,\n      tags                       =\u003e 'deep',\n      combine_tags_or            =\u003e false,\n      retries_max_tries          =\u003e 60,\n      retries_base_sleep_seconds =\u003e 5,\n      retries_max_sleep_seconds  =\u003e 5,\n    }\n\n    aem_aem { 'Wait until install status is finished':\n      ensure                     =\u003e install_status_is_finished,\n      retries_max_tries          =\u003e 60,\n      retries_base_sleep_seconds =\u003e 5,\n      retries_max_sleep_seconds  =\u003e 5,\n    }\n\n    aem_aem { 'Remove all agents':\n      ensure   =\u003e all_agents_removed,\n      run_mode =\u003e 'author',\n    }\n\nAuthorizable Keystore\n\n    aem_authorizable_keystore { \"Create new keystore for user authentication-service\":\n      ensure            =\u003e present,\n      aem_id            =\u003e 'author',\n      aem_username      =\u003e 'admin',\n      aem_password      =\u003e 'admin',\n      authorizable_id   =\u003e 'authentication-service',\n      intermediate_path =\u003e '/home/users/system',\n      password          =\u003e 'password1'\n    }\n\n    aem_authorizable_keystore { \"Archive keystore for user authentication-service to a specific path\":\n      ensure            =\u003e archived,\n      aem_id            =\u003e 'author',\n      aem_username      =\u003e 'admin',\n      aem_password      =\u003e 'admin',\n      authorizable_id   =\u003e 'authentication-service',\n      intermediate_path =\u003e '/home/users/system',\n      path              =\u003e '/tmp'\n    }\n\n    aem_authorizable_keystore { \"Archive keystore for user authentication-service to a specific path\":\n      ensure            =\u003e archived,\n      aem_id            =\u003e 'author',\n      aem_username      =\u003e 'admin',\n      aem_password      =\u003e 'admin',\n      authorizable_id   =\u003e 'authentication-service',\n      intermediate_path =\u003e '/home/users/system',\n      file              =\u003e '/tmp/store.p12'\n    }\n\n    aem_authorizable_keystore { \"Remove keystore for user authentication-service\":\n      ensure            =\u003e absent,\n      aem_id            =\u003e 'author',\n      aem_username      =\u003e 'admin',\n      aem_password      =\u003e 'admin',\n      authorizable_id   =\u003e 'authentication-service',\n      intermediate_path =\u003e '/home/users/system',\n    }\n\nAuthorizable Keystore Certificate\n\n    aem_certificate_chain { \"Add certificate to user authentication-service keystore with certificate provided as file\":\n      ensure                      =\u003e present,\n      aem_id                      =\u003e 'author',\n      aem_username                =\u003e 'admin',\n      aem_password                =\u003e 'admin',\n      authorizable_id             =\u003e 'authentication-service',\n      intermediate_path           =\u003e '/home/users/system',\n      private_key_alias           =\u003e 'alias_123'\n      private_key_file_path       =\u003e '/tmp/private_key_pkcs8.der'\n      certificate_chain_file_path =\u003e '/tmp/cert_pem.crt'\n    }\n\n    aem_certificate_chain { \"Remove a certificate from User1 keystore\":\n      ensure            =\u003e present,\n      aem_id            =\u003e 'author',\n      aem_username      =\u003e 'admin',\n      aem_password      =\u003e 'admin',\n      authorizable_id   =\u003e 'authentication-service',\n      intermediate_path =\u003e '/home/users/system',\n      private_key_alias =\u003e 'alias_123'\n    }\n\nBundle\n\n    aem_bundle { 'Stop webdav bundle':\n      ensure =\u003e stopped,\n      name   =\u003e 'org.apache.sling.jcr.webdav',\n    }\n\n    aem_bundle { 'Start webdav bundle':\n      ensure =\u003e started,\n      name   =\u003e 'org.apache.sling.jcr.webdav',\n    }\n\nCertificate\n\n    aem_certificate { \"Add certificate by file name\":\n      ensure       =\u003e present,\n      aem_id       =\u003e 'author',\n      aem_username =\u003e 'admin',\n      aem_password =\u003e 'admin',\n      file         =\u003e '/tmp/cert.crt'\n    }\n\n    aem_certificate { \"Force adding certificate by file name\":\n      ensure       =\u003e present,\n      aem_id       =\u003e 'author',\n      aem_username =\u003e 'admin',\n      aem_password =\u003e 'admin',\n      file         =\u003e '/tmp/cert.crt',\n      force        =\u003e true\n    }\n\n    aem_certificate { \"Archive certificate via serial number to a specified file path\":\n      ensure              =\u003e archived,\n      aem_id              =\u003e 'author',\n      aem_username        =\u003e 'admin',\n      aem_password        =\u003e 'admin',\n      truststore_password =\u003e 'admin'\n      serial              =\u003e '1234567890'\n      file                =\u003e '/tmp/cert.crt',\n    }\n\n    aem_certificate { \"Remove certificate by file name\":\n      ensure       =\u003e absent,\n      aem_id       =\u003e 'author',\n      aem_username =\u003e 'admin',\n      aem_password =\u003e 'admin',\n      file         =\u003e '/tmp/cert.crt'\n    }\n\n    aem_certificate { \"Remove certificate by serial number\":\n      ensure       =\u003e absent,\n      aem_id       =\u003e 'author',\n      aem_username =\u003e 'admin',\n      aem_password =\u003e 'admin',\n      serial       =\u003e '1234567890'\n    }\n\nConfig property\n\n    aem_config_property { 'Create https.enable property':\n      ensure    =\u003e present,\n      name      =\u003e 'org.apache.felix.https.enable',\n      type      =\u003e 'Boolean',\n      value     =\u003e true,\n      run_mode  =\u003e 'author',\n      node_name =\u003e 'org.apache.felix.http',\n    }\n\nFlush agent\n\n    aem_flush_agent { 'Create flush agent':\n      ensure        =\u003e present,\n      name          =\u003e 'some-flush-agent',\n      run_mode      =\u003e 'author',\n      title         =\u003e 'Some Flush Agent Title',\n      description   =\u003e 'Some flush agent description',\n      dest_base_url =\u003e 'http://somehost:8080',\n      log_level     =\u003e 'info',\n      retry_delay   =\u003e 60000,\n      force         =\u003e true,\n    }\n\n    aem_flush_agent { 'Delete flush agent':\n      ensure   =\u003e absent,\n      name     =\u003e 'some-flush-agent',\n      run_mode =\u003e 'author',\n    }\n\nGroup\n\n    aem_group { 'Create staff group':\n      ensure =\u003e present,\n      name   =\u003e 'staff',\n      path   =\u003e '/home/groups/s',\n    }\n\n    aem_group { 'Create contractor group':\n      ensure =\u003e present,\n      name   =\u003e 'contractor',\n      path   =\u003e '/home/groups/c',\n    }\n\n    aem_group { 'Create contractor group as a member of staff group':\n      ensure            =\u003e present,\n      name              =\u003e 'contractor',\n      path              =\u003e '/home/groups/c',\n      parent_group_name =\u003e 'staff',\n      parent_group_path =\u003e '/home/groups/s',\n    }\n\n    aem_group { 'Create staff group and add contractor group as a member':\n      ensure            =\u003e present,\n      name              =\u003e 'staff',\n      path              =\u003e '/home/groups/s',\n      member_group_name =\u003e 'contractor',\n      member_group_path =\u003e '/home/groups/c',\n    }\n\n    aem_group { 'Delete staff group':\n      ensure =\u003e absent,\n      name   =\u003e 'staff',\n      path   =\u003e '/home/groups/s',\n    }\n\nNode\n\n    aem_node { 'Create http OSGI config node':\n      ensure =\u003e present,\n      name   =\u003e 'org.apache.felix.http',\n      path   =\u003e '/apps/system/config',\n      type   =\u003e 'sling:OsgiConfig',\n    }\n\n    aem_node { 'Delete http OSGI config node':\n      ensure =\u003e absent,\n      name   =\u003e 'org.apache.felix.http',\n      path   =\u003e '/apps/system/config',\n    }\n\nPackage\n\n    aem_package { 'Install AEM6.2 hotfix 12785':\n      ensure    =\u003e present,\n      name      =\u003e 'cq-6.2.0-hotfix-12785',\n      group     =\u003e 'adobe/cq620/hotfix',\n      version   =\u003e '7.0',\n      path      =\u003e '/tmp/',\n      replicate =\u003e false,\n      activate  =\u003e true,\n      force     =\u003e true,\n    }\n\n    aem_package { 'Archive Geometrixx apps':\n      ensure  =\u003e archived,\n      name    =\u003e 'somearchivedpackage',\n      group   =\u003e 'somepackagegroup',\n      version =\u003e '1.2.3',\n      path    =\u003e '/tmp/',\n      filter  =\u003e '[{\"root\":\"/apps/geometrixx\",\"rules\":[]},{\"root\":\"/apps/geometrixx-common\",\"rules\":[]}]',\n    }\n\nPath\n\n    aem_path { 'Activate /etc/designs/cloudservices/':\n      ensure =\u003e is_activated,\n      name   =\u003e '/etc/designs/cloudservices/',\n    }\n\n    aem_path { 'Delete /etc/designs/somepath/':\n      ensure =\u003e absent,\n      name   =\u003e '/etc/designs/somepath/',\n    }\n\nReplication agent\n\n    aem_replication_agent { 'Create replication agent':\n      ensure             =\u003e present,\n      name               =\u003e 'some-replication-agent',\n      run_mode           =\u003e 'author',\n      title              =\u003e 'Some Replication Agent Title',\n      description        =\u003e 'Some replication agent description',\n      dest_base_url      =\u003e 'http://somehost:8080',\n      transport_user     =\u003e 'someuser',\n      transport_password =\u003e 'somepass',\n      log_level          =\u003e 'info',\n      retry_delay        =\u003e 60000,\n      force              =\u003e true,\n    }\n\n    aem_replication_agent { 'Delete replication agent':\n      ensure   =\u003e absent,\n      name     =\u003e 'some-replication-agent',\n      run_mode =\u003e 'author',\n    }\n\nOutbox replication agent\n\n    aem_outbox_replication_agent { 'Create outbox replication agent':\n      ensure      =\u003e present,\n      name        =\u003e 'some-outbox-replication-agent',\n      run_mode    =\u003e 'publish',\n      title       =\u003e 'Some Outbox Replication Agent Title',\n      description =\u003e 'Some outbox replication agent description',\n      user_id     =\u003e 'admin',\n      log_level   =\u003e 'info',\n      force       =\u003e true,\n    }\n\n    aem_outbox_replication_agent { 'Delete outbox replication agent':\n      ensure   =\u003e absent,\n      name     =\u003e 'some-outbox-replication-agent',\n      run_mode =\u003e 'publish',\n    }\n\nRepository\n\n    aem_repository { 'Block repository writes':\n      ensure =\u003e writes_blocked,\n    }\n\n    aem_repository { 'Unblock repository writes':\n      ensure =\u003e writes_unblocked,\n    }\n\nSaml\n\n    aem_saml { 'Create SAML configuration for AEM 6.2 with certificate provided via idp_cert_alias parameter':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      idp_cert_alias             =\u003e 'certalias___1542770831396',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.3 with certificate provided via idp_cert_alias parameter':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      idp_cert_alias             =\u003e 'certalias___1542770831396',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      clock_tolerance            =\u003e 60,\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n      digest_method \t           =\u003e 'http://www.w3.org/2001/04/xmlenc#sha256',\n      signature_method\t         =\u003e 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.4 with certificate provided via idp_cert_alias parameter':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      idp_cert_alias             =\u003e 'certalias___1542770831396',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      clock_tolerance            =\u003e 60,\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n      digest_method \t           =\u003e 'http://www.w3.org/2001/04/xmlenc#sha256',\n      signature_method\t         =\u003e 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'\n      user_intermediate_path     =\u003e '',\n      assertion_consumer_service_url =\u003e ''\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.2 with certificate provided via serial number':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      serial                     =\u003e '1234567890',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.3 with certificate provided via serial number':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      serial                     =\u003e '1234567890',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      clock_tolerance            =\u003e 60,\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n      digest_method \t           =\u003e 'http://www.w3.org/2001/04/xmlenc#sha256',\n      signature_method\t         =\u003e 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.4 with certificate provided via serial number':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      serial                     =\u003e '1234567890',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      clock_tolerance            =\u003e 60,\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n      digest_method \t           =\u003e 'http://www.w3.org/2001/04/xmlenc#sha256',\n      signature_method\t         =\u003e 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'\n      user_intermediate_path     =\u003e '',\n      assertion_consumer_service_url =\u003e ''\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.2 with certificate provided as a file':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      file                       =\u003e '/tmp/cert.crt',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.3 with certificate provided as a file':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      file                       =\u003e '/tmp/cert.crt',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      clock_tolerance            =\u003e 60,\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n      digest_method \t           =\u003e 'http://www.w3.org/2001/04/xmlenc#sha256',\n      signature_method\t         =\u003e 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'\n    }\n\n    aem_saml { 'Create SAML configuration for AEM 6.4 with certificate provided as a file':\n      ensure                     =\u003e present,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n      key_store_password         =\u003e 'admin',\n      service_ranking            =\u003e 5002,\n      idp_http_redirect          =\u003e true,\n      create_user                =\u003e true,\n      default_redirect_url       =\u003e '/sites.html',\n      user_id_attribute          =\u003e 'NameID',\n      default_groups             =\u003e ['def-groups'],\n      file                       =\u003e '/tmp/cert.crt',\n      add_group_memberships      =\u003e true,\n      path                       =\u003e ['/'],\n      synchronize_attributes     =\u003e [\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\\=profile/givenName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\\=profile/familyName',\n      'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\\=profile/email'\n      ],\n      clock_tolerance            =\u003e 60,\n      group_membership_attribute =\u003e 'http://temp/variable/aem-groups',\n      idp_url                    =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx?RequestBinding\\=HTTPPost\u0026loginToRp\\=https://prod-aemauthor.com/saml_login',\n      logout_url                 =\u003e 'https://federation.prod.com/adfs/ls/IdpInitiatedSignOn.aspx',\n      service_provider_entity_id =\u003e 'https://prod-aemauthor.com/saml_login',\n      handle_logout              =\u003e true,\n      sp_private_key_alias       =\u003e '',\n      use_encryption             =\u003e false,\n      name_id_format             =\u003e 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n      digest_method \t           =\u003e 'http://www.w3.org/2001/04/xmlenc#sha256',\n      signature_method\t         =\u003e 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'\n      user_intermediate_path     =\u003e '',\n      assertion_consumer_service_url =\u003e ''\n    }\n\n    aem_saml { 'Remove SAML configuration':\n      ensure                     =\u003e absent,\n      aem_username               =\u003e 'admin',\n      aem_password               =\u003e 'admin',\n      aem_id                     =\u003e 'author',\n    }\n\nSSL\n\n    aem_ssl { 'Enable Granite SSL Config':\n      ensure                =\u003e present,\n      https_hostname        =\u003e 'localhost',\n      https_port            =\u003e 5432,\n      keystore_password     =\u003e 'somekeystorepassword',\n      truststore_password   =\u003e 'sometruststorepassword',\n      privatekey_file_path  =\u003e '/tmp/shinesolutions/puppet-aem-resources/cert_ssl.der',\n      certificate_file_path =\u003e '/tmp/shinesolutions/puppet-aem-resources/cert_ssl.crt',\n    }\n\n    aem_ssl { 'Remove Granite SSL Config':\n      ensure =\u003e absent\n    }\n\nTruststore\n\n    aem_truststore { \"Create Truststore\":\n      ensure              =\u003e present,\n      aem_id              =\u003e 'author',\n      aem_username        =\u003e 'admin',\n      aem_password        =\u003e 'admin',\n      password            =\u003e 'admin'\n    }\n\n    aem_truststore { \"Import Truststore from file provided via file\":\n      ensure              =\u003e present,\n      aem_id              =\u003e 'author',\n      aem_username        =\u003e 'admin',\n      aem_password        =\u003e 'admin',\n      password            =\u003e 'admin'\n      file                =\u003e '/root/truststore.p12'\n    }\n\n    aem_truststore { \"Archive Truststore to /root\":\n      ensure              =\u003e archived,\n      aem_id              =\u003e 'author',\n      aem_username        =\u003e 'admin',\n      aem_password        =\u003e 'admin',\n      path                =\u003e '/root'\n    }\n\n    aem_truststore { \"Archive Truststore to /root/truststore.p12\":\n      ensure              =\u003e archived,\n      aem_id              =\u003e 'author',\n      aem_username        =\u003e 'admin',\n      aem_password        =\u003e 'admin',\n      file                =\u003e '/root/truststore.p12'\n    }\n\n    aem_truststore { \"Delete Truststore\":\n      ensure       =\u003e absent,\n      aem_id       =\u003e 'author',\n      aem_username =\u003e 'admin',\n      aem_password =\u003e 'admin'\n    }\n\nUser\n\n    aem_user { 'Create user charlie without any group':\n      ensure     =\u003e present,\n      name       =\u003e 'charlie',\n      path       =\u003e '/home/users/c',\n      password   =\u003e 'somepassword',\n      permission =\u003e {\n        '/libs' =\u003e ['read:false', 'modify:false', 'create:false', 'delete:false', 'acl_read:false', 'acl_edit:false', 'replicate:false'],\n        '/var'  =\u003e ['read:false', 'modify:false', 'create:false', 'delete:false', 'acl_read:false', 'acl_edit:false', 'replicate:false'],\n        '/tmp'  =\u003e ['read:false', 'modify:false', 'create:false', 'delete:false', 'acl_read:false', 'acl_edit:false', 'replicate:false'],\n      },\n    }\n\n    aem_user { 'Create user bob and add to administrators group':\n      ensure     =\u003e present,\n      name       =\u003e 'bob',\n      path       =\u003e '/home/users/b',\n      password   =\u003e 'somepassword',\n      group_name =\u003e 'administrators',\n      group_path =\u003e '/home/groups/a',\n    }\n\n    aem_user { 'Add user charlie to administrators group':\n      ensure     =\u003e added_to_group,\n      name       =\u003e 'charlie',\n      path       =\u003e '/home/users/c',\n      group_name =\u003e 'administrators',\n      group_path =\u003e '/home/groups/a'\n    }\n\n    aem_user { 'Change user bob password':\n      ensure       =\u003e password_changed,\n      name         =\u003e 'bob',\n      path         =\u003e '/home/users/b',\n      old_password =\u003e 'somepassword',\n      new_password =\u003e 'somenewpassword'\n    }\n\n    aem_user { 'Delete user':\n      ensure =\u003e absent,\n      name   =\u003e 'bob',\n      path   =\u003e '/home/users/b',\n    }\n\n    aem_user { 'Update replication-service user permission':\n      ensure     =\u003e has_permission,\n      name       =\u003e 'replication-service',\n      path       =\u003e '/home/users/system/',\n      permission =\u003e {\n        '/etc/replication/agents.author' =\u003e ['replicate:false'],\n        '/etc/replication/agents.publish' =\u003e ['replicate:false']\n      }\n    }\n\nOther than single AEM resource, this module also provides predefined classes for common AEM provisioning tasks.\n\nRemove default agents on AEM Author:\n\n    aem_resources::author_remove_default_agents { 'Remove default author agents':\n    }\n\nRemove default agents on AEM Publish:\n\n    aem_resources::publish_remove_default_agents { 'Remove default publish agents':\n    }\n\nSet AEM Author Primary configuration:\n\n    aem_resources::author_primary_set_config { 'Set author primary config':\n      aem_home_dir =\u003e '/opt/aem/author'\n    }\n\nSet AEM Author Standby configuration:\n\n    aem_resources::author_standby_set_config { 'Set author standby config':\n      aem_home_dir =\u003e '/opt/aem/author',\n      primary_host =\u003e 'somehost',\n    }\n\nSet AEM Publish configuration:\n\n    aem_resources::publish_set_config { 'Set Publish config':\n      aem_home_dir =\u003e '/opt/aem/publish'\n    }\n\nCreate system users (orchestrator, replicator, deployer, exporter, importer):\n\n    aem_resources::create_system_users { 'Create system users':\n    }\n\nCreate system users with predefined path and password:\n\n    aem_resources::create_system_users { 'Create system users with custom passwords':\n      aem_system_users =\u003e {\n        deployer =\u003e {\n          name     =\u003e 'deployer',\n          path     =\u003e '/home/users/q',\n          password =\u003e 'customdeployerpassword',\n        },\n        exporter =\u003e {\n          name     =\u003e 'exporter',\n          path     =\u003e '/home/users/e',\n          password =\u003e 'customexporterpassword',\n        },\n        importer =\u003e {\n          name     =\u003e 'importer',\n          path     =\u003e '/home/users/i',\n          password =\u003e 'customimporterpassword',\n        },\n        orchestrator =\u003e {\n          name     =\u003e 'orchestrator',\n          path     =\u003e '/home/users/o',\n          password =\u003e 'customorchestratorpassword',\n        },\n        replicator =\u003e {\n          name     =\u003e 'replicator',\n          path     =\u003e '/home/users/r',\n          password =\u003e 'customreplicatorpassword',\n        }\n      }\n    }\n\nChange system users password:\n\n    aem_resources::change_system_users_password { 'Change system users password':\n      aem_system_users =\u003e {\n        deployer =\u003e {\n          name         =\u003e 'deployer',\n          path         =\u003e '/home/users/q',\n          old_password =\u003e 'deployer',\n          new_password =\u003e 'newdeployerpassword',\n        },\n        exporter =\u003e {\n          name         =\u003e 'exporter',\n          path         =\u003e '/home/users/e',\n          old_password =\u003e 'exporter',\n          new_password =\u003e 'newexporterpassword',\n        },\n        importer =\u003e {\n          name         =\u003e 'importer',\n          path         =\u003e '/home/users/i',\n          old_password =\u003e 'importer',\n          new_password =\u003e 'newimporterpassword',\n        },\n        orchestrator =\u003e {\n          name         =\u003e 'orchestrator',\n          path         =\u003e '/home/users/o',\n          old_password =\u003e 'orchestrator',\n          new_password =\u003e 'neworchestratorpassword',\n        },\n        replicator =\u003e {\n          name         =\u003e 'replicator',\n          path         =\u003e '/home/users/r',\n          old_password =\u003e 'replicator',\n          new_password =\u003e 'newreplicatorpassword',\n        }\n      }\n    }\n\nCreate Puppet AEM Resources' configuration file:\n\n    aem_resources::puppet_aem_resources_set_config { 'Set puppet-aem-resources config file for author':\n      conf_dir =\u003e '/tmp/puppet-aem-resources/',\n      username =\u003e 'admin',\n      password =\u003e 'admin',\n      protocol =\u003e 'http',\n      host     =\u003e 'localhost',\n      port     =\u003e 4502,\n      timeout  =\u003e 300,\n      debug    =\u003e false,\n    }\n\nEnable CRXDE:\n\n    aem_resources::enable_crxde { 'Enable CRXDE':\n      run_mode =\u003e 'author',\n    }\n\nCreate OSGI Configuration:\n  Setting the OSGI configuration in the manifest `set_osgi_config` is done by using the class `aem::osgi::config` from the puppet-module `bstopp/aem`.\n\n    aem_resources::set_osgi_config {\"Author-Primary set OSGI configuration\":\n      aem_home_dir   =\u003e '/opt/aem/author',\n      aem_user       =\u003e 'aem-author',\n      aem_user_group =\u003e 'aem-author',\n      aem_id         =\u003e 'author',\n      osgi_configs   =\u003e {\n        'org.apache.jackrabbit.oak.plugins.segment' =\u003e {\n          'org.apache.sling.installer.configuration.persist' =\u003e false,\n          'name'                                             =\u003e 'Oak-Tar',\n          'service.ranking'                                  =\u003e 100,\n          'standby'                                          =\u003e false,\n          'customBlobstore'                                  =\u003e true\n        },\n        'org.apache.jackrabbit.oak.plugins.segment.standby.store.StandbyStoreService' =\u003e {\n          'org.apache.sling.installer.configuration.persist'                          =\u003e false,\n          'mode'                                                                      =\u003e 'primary',\n          'port'                                                                      =\u003e 8023,\n          'secure'                                                                    =\u003e true,\n          'interval'                                                                  =\u003e 5\n        }\n      }\n    }\n\nEnable Development bundles:\n\n    aem_resources::enable_development_bundles { 'Enable Development bundles':\n      run_mode =\u003e 'author',\n    }\n\nDisable Development bundles:\n\n    aem_resources::disable_development_bundles { 'Disable Development bundles':\n      run_mode =\u003e 'author',\n    }\n\nMulti AEM Instances\n-------------------\n\nStarting from version 2.0.0, it is possible to use Puppet AEM Resources to provision multiple AEM instances on the same machine.\n\nLet's say you have an AEM author instance at http://localhost:4502 and an AEM publish instance at https://localhost:5433 . Set up the following configuration files:\n\n`\u003cpuppet-config-dir\u003e/myaemauthor.yaml`\n\n    ---\n    :username: 'admin'\n    :password: 'admin'\n    :protocol: 'http'\n    :host: 'localhost'\n    :port: 4502\n    :timeout: 300\n    :debug: False\n\n`\u003cpuppet-config-dir\u003e/myaempublish.yaml`\n\n    ---\n    :username: 'admin'\n    :password: 'admin'\n    :protocol: 'https'\n    :host: 'localhost'\n    :port: 5433\n    :timeout: 300\n    :debug: False\n\nThen specify `aem_id` attribute on resource invocation in Puppet manifest:\n\n    aem_bundle { 'Stop webdav bundle':\n      ensure =\u003e stopped,\n      name   =\u003e 'org.apache.sling.jcr.webdav',\n      aem_id =\u003e 'myaemauthor',\n    }\n\n    aem_bundle { 'Stop webdav bundle':\n      ensure =\u003e stopped,\n      name   =\u003e 'org.apache.sling.jcr.webdav',\n      aem_id =\u003e 'myaempublish',\n    }\n\nThe above example will stop webdav bundle on both your AEM author instance and AEM publish instance.\n\nMulti AEM Versions\n------------------\n\nSome types support multiple AEM versions due to differences how particular features are implemented between those AEM versions.\n\nFor example, AEM Author Standby configuration package was `org.apache.jackrabbit.oak.plugins.segment` in AEM \u003c= 6.2, and it was changed to `org.apache.jackrabbit.oak.segment` in AEM \u003e= 6.3 .\n\nStarting version 2.1.1, `aem_version` attribute was added to the corresponding types:\n\n    aem_resources::author_standby_set_config { 'Set author standby config':\n      install_dir  =\u003e '/opt/aem/crx-quickstart/install',\n      primary_host =\u003e 'somehost',\n      aem_version  =\u003e '6.3',\n    }\n\nAlias\n-----\n\nDue to the need to change the state of some resources from within the same manifest, both `aem_bundle` and `aem_user` have alias resources named `aem_bundle_alias` and `aem_user_alias` .\n\nFor example, this allows you to stop and start a bundle from within the same manifest:\n\n  aem_bundle { 'Stop webdav bundle':\n    ensure =\u003e stopped,\n    name   =\u003e 'org.apache.sling.jcr.webdav',\n  }\n\n  # Do other things here\n  ...\n\n  aem_bundle_alias { 'Start webdav bundle':\n    ensure =\u003e started,\n    name   =\u003e 'org.apache.sling.jcr.webdav',\n  }\n\nUpgrade\n-------\n\nUpgrading to 2.x.x:\n\n* Replace all class calls to definitions.\n\n  From:\n\n    class { 'aem_resources::enable_crxde':\n      run_mode =\u003e 'author',\n    }\n\n  To:\n\n    aem_resources::enable_crxde { 'Enable CRXDE':\n      run_mode =\u003e 'author',\n    }\n\nTesting\n-------\n\nIf you run AEM on a non default port `4502`, then you need to specify the port number as environment variable:\n\n    aem_port=45622 author_port=45622 make test-integration\n\nThe `aem_port` environment variable is used by provisioning steps that use default `aem_id`. `author_port` is used by the ones that specify `author` `aem_id`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshinesolutions%2Fpuppet-aem-resources","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshinesolutions%2Fpuppet-aem-resources","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshinesolutions%2Fpuppet-aem-resources/lists"}