AWS Automation
This page describes the functionality of a bash script that automates the setup of SAP Sailing Analytics instances.
Importance
- Avoiding misconfiguration of instances due to human mistakes
- Allowing fast reaction times to external needs (e.g. horizontal scaling)
- Saving time
Scenarios
- SAP instance on a dedicated EC2 instance
- SAP instance on a shared EC2 instance
- SAP instance on a dedicated EC2 instance as a master
- SAP instance on a dedicated EC2 instance as a replica
Basics
1. Example setup: SAP instance on a dedicated EC2 instance
Login to the https://aws.amazon.com/console/. Account number: 017363970217.
Parameters necessary for EC2 instance:
- Keypair
- Instance type (e.g. t2.medium)
- Security group
- Image
- User Data
Example of content for parameter User Data:
MONGODB_HOST=123.123.123.123 MONGODB_PORT=27017 MONGODB_NAME=wcsantander2017 SERVER_NAME=wcsantander2017 USE_ENVIRONMENT=live-server INSTALL_FROM_RELEASE=build-201803302246 SERVER_STARTUP_NOTIFY=leon.radeck@sap.com
2. SAP instance configuration
[image1]
Necessary configuration steps:
- Create event in admin console
- Create new user account with permissions for that event
- Change admin password
If instance home page or event page should be reachable by a specific URL:
Add one of the following lines to /etc/httpd/conf.d/001-events.conf:
Use Home-SSL [instance name].sapsailing.com 127.0.0.1 8888"
Use Event-SSL [instance name].sapsailing.com “[event id]“ 127.0.0.1 8888
Then check and reload apache configuration by entering the commands:
apachectl configtest sudo service httpd reload
3. Load Balancer configuration
To reach the SAP instance by a specific URL (e.g. wcsantander2017.sapsailing.com), follow these steps:
- Create target group with name "S-dedicated-wcsantander2017"
- Create rule within HTTPS listener of load balancer. Enter "wcsantander2017.sapsailing.com" as a host name matching rule. Choose target group created in step one.
- Configure the health check of the target group
- Register instance within the target group
[image2]
AWS Command Line Interface (AWS CLI)
Information about installation and configuration of the AWS CLI can be found here https://aws.amazon.com/de/cli/.
Example command and response of the AWS CLI to get information about all existing EC2 instances of a region:
Command: aws –region eu-west-2 ec2 describe-instances
Response:
{
“Reservations”: [
{
“Instances”: [
{
“Monitoring”: {
“State”: “disabled”
},
“PublicDnsName”: “ec2-35-178-117-16.eu-west-2.compute.amazonaws.com”,
“State”: {
“Code”: 16,
“Name”: “running”
},
“EbsOptimized”: false,
“LaunchTime”: “2018-04-06T04:09:29.000Z”,
“PublicIpAddress”: “35.178.117.16”,
“PrivateIpAddress”: “172.31.38.162”,
“ProductCodes”: [],
“VpcId”: “vpc-e5ba568c”,
“StateTransitionReason”: “”,
“InstanceId”: “i-066952116fe71fa65”,
“ImageId”: “ami-39f3e25d”,
“PrivateDnsName”: “ip-172-31-38-162.eu-west-2.compute.internal”,
“KeyName”: “leonradeck-keypair”,
[...]
Filtering
Limit instances that are returned by passing a parameter:
aws ec2 describe-instances –instance-ids i-066952116fe71fa65
Querying
Get value of specific attribute:
aws ec2 describe-instances –instance-ids i-066952116fe71fa65 –query ‘Reservations[*].Instances[*]. PublicDnsName’