All Projects → shinesolutions → aem-aws-stack-builder

shinesolutions / aem-aws-stack-builder

Licence: Apache-2.0 license
Adobe Experience Manager (AEM) infrastructure builder on AWS using CloudFormation stacks

Programming Languages

shell
77523 projects
python
139335 projects - #7 most used programming language
Jinja
831 projects
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to aem-aws-stack-builder

aem-orchestrator
Java application for orchestrating AEM infrastructure created using aem-aws-stack-builder
Stars: ✭ 12 (-66.67%)
Mutual labels:  aem, aem-opencloud
cfsec
Static analysis for CloudFormation templates to identify common misconfiguration
Stars: ✭ 53 (+47.22%)
Mutual labels:  cloudformation
wcm-io-tooling
Tooling for Maven and IDEs.
Stars: ✭ 12 (-66.67%)
Mutual labels:  aem
qaz
qaz—A CLI tool for Templating & Managing stacks in AWS Cloudformation
Stars: ✭ 89 (+147.22%)
Mutual labels:  cloudformation
cloudniite
AWS Lambda Optimization and Monitoring Tool
Stars: ✭ 25 (-30.56%)
Mutual labels:  cloudformation
cloudformation-operator
A Kubernetes operator for managing CloudFormation stacks via a CustomResource
Stars: ✭ 98 (+172.22%)
Mutual labels:  cloudformation
aws-cloudformation-simplified
AWS CloudFormation - Simplified | Hands On Learning !!
Stars: ✭ 51 (+41.67%)
Mutual labels:  cloudformation
autoscaling-ec2-gitlab-runners-fargate
Autoscaling EC2 GitLab Runners Spawned by Fargate
Stars: ✭ 20 (-44.44%)
Mutual labels:  cloudformation
aemtools
AEM Tools is Intellij IDEA plugin containing Adobe Experience Manager related features
Stars: ✭ 49 (+36.11%)
Mutual labels:  aem
serverless-cognito-add-custom-attributes
Add custom attributes to an existing CloudFormation-managed CognitoUserPool from serverless without losing all your users
Stars: ✭ 30 (-16.67%)
Mutual labels:  cloudformation
brume
Brume: an AWS CloudFormation deployer
Stars: ✭ 12 (-66.67%)
Mutual labels:  cloudformation
AWSlack
Get Slack notifications on AWS CloudWatch events
Stars: ✭ 21 (-41.67%)
Mutual labels:  cloudformation
kubernetes-ami
A simple AMI and CloudFormation for launching Kubernetes on AWS
Stars: ✭ 41 (+13.89%)
Mutual labels:  cloudformation
wcm-io-caconfig
Context-Aware Configuration for AEM applications.
Stars: ✭ 16 (-55.56%)
Mutual labels:  aem
cdkgoat
CdkGoat is Bridgecrew's "Vulnerable by Design" AWS CDK repository. CdkGoat is a learning and training project that demonstrates how common configuration errors can find their way into production cloud environments.
Stars: ✭ 27 (-25%)
Mutual labels:  cloudformation
aem-spa-component-mapping
Provides a way to map Single Page Application front-end components with Adobe Experience Manager resource types.
Stars: ✭ 20 (-44.44%)
Mutual labels:  aem
docker-geth-lb
MyEtherWallet AWS set up. Deploy public-facing Ethereum nodes using AWS CloudFormation / Docker / Parity / Geth / ethstats
Stars: ✭ 127 (+252.78%)
Mutual labels:  cloudformation
zookeeper-on-aws
zookeeper-on-aws (with dynamic reconfiguration based on r3.5.3-beta)
Stars: ✭ 15 (-58.33%)
Mutual labels:  cloudformation
cim
CIM takes the pain out of Infrastructure as Code and CloudFormation
Stars: ✭ 51 (+41.67%)
Mutual labels:  cloudformation
cloudformation-coverage-roadmap
The AWS CloudFormation Public Coverage Roadmap
Stars: ✭ 993 (+2658.33%)
Mutual labels:  cloudformation

Build Status Known Vulnerabilities

AEM AWS Stack Builder

A set of Ansible playbooks for building Adobe Experience Manager (AEM) architectures on AWS using CloudFormation stacks.

Stack Builder has been designed with a focus on modularity, allowing the separation between network and application components, while also providing a flexible way to support multiple architectures that run a combination of the following components across multiple AEM versions:

  • author-primary - contains AEM Author running in primary mode
  • author-standby - contains AEM Author running in standby mode
  • publish - contains AEM Publish
  • author-dispatcher - contains AEM Dispatcher with author-dispatcher configuration, sitting in front of author component
  • publish-dispatcher - contains AEM Dispatcher with publish-dispatcher configuration, sitting in front of publish component
  • orchestrator - contains AEM Orchestrator
  • chaos-monkey - contains Chaos Monkey
  • author-publish-dispatcher - contains AEM Author, AEM Publish, and AEM Dispatcher

Stack Builder currently supports the following AEM architectures:

  • Full Set (diagram) - includes AEM Author, Publish, and Dispatcher on separate EC2 instances with blue-green deployment, auto-recovery, auto-scaling, backup, and compaction support, suitable for all types (e.g. production, staging, testing, and development) of environments
  • Consolidated (diagram) - includes AEM Author, Publish, and Dispatcher on a single EC2 instance with backup and compaction support and a much lower AWS cost footprint, suitable for testing and development environments

Other than the above AEM architectures, Stack Builder also provides the following utilities:

  • Stack Manager(diagram) - includes AEM Stack Manager, set of AWS Lambda functions that will execute AEM functionalities via an SSM agent
  • Network - includes CloudFormation templates for creating VPC, subnets, and some sample NAT Gateway and Bastion set up

Learn more about AEM AWS Stack Builder:

AEM AWS Stack Builder is part of AEM OpenCloud platform.

Installation

  • Either clone AEM AWS Stack Builder git clone https://github.com/shinesolutions/aem-aws-stack-builder.git or download one of the released versions

  • Install the following required tools:

    Alternatively, you can use AEM Platform BuildEnv Docker container to run AEM AWS Stack Builder build targets.

  • Resolve the Python packages dependencies by running make deps

Usage

  • Set up the required AWS resources
  • Create configuration file
  • Set up the configuration files by running make config config_path=<path/to/config/dir>
  • Download open source library artifacts and upload them to S3 by running make library config_path=<path/to/config/dir>

Network

Ensure configuration file for network has been set up.

From the above base configuration, generate template network configuration file:

make generate-network-config stack_prefix=<network_stack_prefix> config_path=<path/to/config/dir>

The above is a once off action which will create a bootstrap network configuration file at <path/to/config/dir>/network.yaml, this will save you the trouble of manually creating a long configuration file. Alternatively, you can create the network configuration file manually.

Create VPC stack:

make create-vpc stack_prefix=<network_stack_prefix> config_path=<path/to/config/dir>

Create network resources stack:

make create-network stack_prefix=<network_stack_prefix> config_path=<path/to/config/dir>

Alternatively, if you don't have the permission to create VPC and/or network resources, you can create a network-exports stack that contains the details of your subnets:

make create-network-exports stack_prefix=<network_stack_prefix> config_path=<path/to/config/dir>

AEM Stack Manager

AEM Stack Manager Diagram

Ensure configuration file for AEM Stack Manager has been set up.

Create AEM Stack Manager stacks:

make create-stack-manager stack_prefix=<stack_manager_stack_prefix> config_path=<path/to/config/dir>

AEM Full-Set Architecture

AEM Full-Set Architecture Diagram

Ensure configuration file for AEM Full-Set architecture has been set up.

The simplest way to create this AEM architecture is by standing up both full set prerequisites and main stacks in one go:

make create-full-set stack_prefix=<fullset_stack_prefix> config_path=<path/to/config/dir>

However, it is also possible to separate the prerequisites from the main stacks. A use case scenario for this set up is when you want to keep the prerequisites stack around while creating/deleting the main stack within an environment, this allows you to cut some cost and to speed up environment standing up time from the second time onward.

Create prerequisites stack which contains the instance profiles, security groups, and messaging SNS SQS resources:

make create-full-set-prerequisites stack_prefix=<fullset_prerequisites_stack_prefix> config_path=<path/to/config/dir>

Create main stack which contains EC2 and Route53 resources:

make create-full-set-main stack_prefix=<fullset_main_stack_prefix> prerequisites_stack_prefix=<fullset_prerequisites_stack_prefix> config_path=<path/to/config/dir>

AEM Consolidated Architecture

AEM Consolidated Architecture Diagram

Ensure configuration file for AEM Consolidated architecture has been set up.

The simplest way to create this AEM architecture is by standing up both full set prerequisites and main stacks in one go:

make create-consolidated stack_prefix=<consolidated_stack_prefix> config_path=<path/to/config/dir>

It is also possible to separate the prerequisites from the main stacks. A use case scenario for this set up is when you want to reuse the same prerequisites stack for multiple main stacks. Please note that having a one to many mapping between prerequisites stack to multiple main stacks is only applicable for development environments, and not for production.

Create prerequisites stack which contains the instance profiles and security groups:

make create-consolidated-prerequisites stack_prefix=<consolidated_prerequisites_stack_prefix> config_path=<path/to/config/dir>

Create main stack which contains EC2 and Route53 resources:

make create-consolidated-main stack_prefix=<consolidated_main_stack_prefix> prerequisites_stack_prefix=<consolidated_prerequisites_stack_prefix> config_path=<path/to/config/dir>

Switch DNS

You can point a DNS record to an AEM Full-Set or AEM Consolidated architecture:

make switch-dns-full-set stack_prefix=<full_set_stack_prefix> config_path=<path/to/config/dir> publish_dispatcher_hosted_zone=<publish_dispatcher_hosted_zone_name> publish_dispatcher_record_set=<publish_dispatcher_record_name> author_dispatcher_hosted_zone=<author_dispatcher_hosted_zone_name>  author_dispatcher_record_set=<author_dispatcher_record_name>

make switch-dns-consolidated stack_prefix=<consolidated_stack_prefix> config_path=<path/to/config/dir> author_publish_dispatcher_hosted_zone=<author_publish_dispatcher_hosted_zone> author_publish_dispatcher_record_set=<author_publish_dispatcher_record_set>

Testing

Testing with remote dependencies

You can run integration test for creating, testing, and deleting the AEM Stack Manager, AEM Consolidated, AEM Full-Set environments using the command make test-integration-<aem_version>-<os_type> test_id=<sometestid>, which downloads the dependencies from the Internet.

Testing with local dependencies

If you're working on the dependencies of AEM AWS Stack Builder and would like to test them as part of environment creation before pushing the changes upstream, you need to:

Presentations

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].