Skip to content

Instantly share code, notes, and snippets.

@gsmurali
gsmurali / gist:7675f87a36a3e586dae3b54f6d1b5ba4
Created August 2, 2016 00:17 — forked from mikepfeiffer/gist:3851e3bd95591e0675aa4c76cd57635f
AWS Lambda Function to Start an EC2 Instance
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
var ec2 = new AWS.EC2({region: 'us-east-1'});
ec2.startInstances({InstanceIds : ['i-0114833f8ffc9151c'] },function (err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
context.done(err,data);
});
};
@gsmurali
gsmurali / gist:dbdca0fda724a15772fe58e27707e4ab
Created August 2, 2016 00:18 — forked from mikepfeiffer/gist:d889b3bc78b68193e407d487b197be04
EC2 user data script to bootstrap instance with CloudWatch sample scripts
#!/bin/bash
yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https -y
curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm CloudWatchMonitoringScripts-1.2.1.zip
@gsmurali
gsmurali / gist:d8fd1f883cc83ec1ba575bedae999027
Created August 2, 2016 00:18 — forked from mikepfeiffer/gist:a4ce6d25ae092f1a4ea97afad5879530
EC2 user data script to boostrap Windows instance with Python and AWS CLI
<powershell>
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
choco install python -y
(new-object net.webclient).DownloadFile('https://s3.amazonaws.com/aws-cli/AWSCLI64.msi','c:\AWSCLI64.msi')
msiexec.exe /i 'C:\AWSCLI64.msi' /qn
</powershell>
@gsmurali
gsmurali / gist:3aaa80070a19872c29f3f6e9b50e2731
Created August 2, 2016 00:18 — forked from mikepfeiffer/gist:4d9386afdcceaf29493a
EC2 UserData script to install CodeDeploy agent
#!/bin/bash
yum install -y aws-cli
cd /home/ec2-user/
aws s3 cp 's3://aws-codedeploy-us-east-1/latest/codedeploy-agent.noarch.rpm' . --region us-east-1
yum -y install codedeploy-agent.noarch.rpm
@gsmurali
gsmurali / gist:73b99ff8d6ed313579aae0bbc22f8f25
Created January 2, 2017 23:12 — forked from mikepfeiffer/gist:4aea8cba143ff31fa90a33ff4818b809
How to create and complete a lifecycle hook
aws autoscaling put-lifecycle-hook \
--lifecycle-hook-name scale-out-hook \
--auto-scaling-group-name MyASG \
--lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING
aws autoscaling complete-lifecycle-action \
--lifecycle-action-result CONTINUE \
--instance-id i-0680775fb68bc97a5 \
--lifecycle-hook-name scale-out-hook \
--auto-scaling-group-name MyASG
@gsmurali
gsmurali / gist:1f4d3cf116836943d0aede48aee54a68
Created January 2, 2017 23:12 — forked from mikepfeiffer/gist:6f9e6cac7607fc365874cd7d31dbb141
Example to Create AWS ELB, Launch Config, and Auto Scaling Group
aws elb create-load-balancer \
--load-balancer-name MyELB \
--listeners Protocol=TCP,LoadBalancerPort=80,InstanceProtocol=TCP,InstancePort=80 \
--subnets subnet-46e6506c subnet-57b8010f \
--scheme internet-facing \
--security-groups sg-aec570d4
aws autoscaling create-launch-configuration \
--launch-configuration-name MyLC \
--key-name virginia \
@gsmurali
gsmurali / gist:3965c62d9f5eb4106045cf784a9d3246
Created January 2, 2017 23:13 — forked from mikepfeiffer/gist:7c949e2d04c9e51ef204fb9a7f3d2978
Userdata script to setup a basic web page with instance id and tag instance
#!/bin/bash
yum install httpd -y
/sbin/chkconfig --levels 235 httpd on
service httpd start
instanceId=$(curl http://169.254.169.254/latest/meta-data/instance-id)
region=$(curl http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk -F\" '{print $4}')
echo "<h1>$instanceId</h1>" > /var/www/html/index.html
aws ec2 create-tags --resources "$instanceId" --tags Key=Name,Value="PROD-$instanceId" --region "$region"
@gsmurali
gsmurali / gist:80dbad99e2d331bdbcbd09508116daa3
Last active January 3, 2017 00:51
01 Linux Academy - Certified Chef Developer Basic Chef Fluency Badge- Lecture: Setting up the Lab environment
Configure user 'user' for sudo access and change root password and user password
* use passwd command to change passwords for user and root
Add user 'user' to sudo
* usermod -g wheel user
Download chef development kit
* go to https://downloads.chef.io/chefdk/1.1.16 and copy url for RHEL - https://packages.chef.io/files/stable/chefdk/1.1.16/el/7/chefdk-1.1.16-1.el7.x86_64.rpm
wget the above link in the server to download the software
Install using the command - sudo rpm -ivh chefdk-1.1.16-1.el7.x86_64.rpm
To verify installation, type 'sudo chef-client --local-mode' (running chef-client in local mode)
@gsmurali
gsmurali / gist:8d0bd3f2ee88f5950993fef91053adf1
Created January 4, 2017 04:17
02 Linux Academy - Certified Chef Developer Basic Chef Fluency Badge- Lecture: Understanding Chef and Chef Convergence
Convergence
*Pre-convergence - Phase before a node is configured. Lint tests, foodcritic
*Convergence - Tests the defined resources to ensure they are in the desired state,"Providers' are what do the work (yum, apt-get etc.,) to enforce the desired configuration
*Post-Convergence - Occurs after the Chef convergence - Run tests that verifies a node is in the desired state of configuration/ Unit testing
Chef can be run over and over again without changing configurations if configurations are already in place (Idempotency)
@gsmurali
gsmurali / gist:0e80095ad831c3ff86995b64adaa7991
Last active January 4, 2017 06:11
05 Linux Academy - Certified Chef Developer Basic Chef Fluency Badge- Lecture: Applying Chef Resources Hands On
[root@gsmurali1 user]# vim learn.rb
[root@gsmurali1 user]# cat learn.rb
package 'apache' do
end
This is the pre-convergence checks; to check ruby syntax and chef syntax
------------------------------------------------------------------------
[root@gsmurali1 user]# ruby -c learn.rb
Syntax OK