server-control
Version:
Easy updating of Amazon AWS instances inside of an Autoscale Group
91 lines (80 loc) • 2 kB
Markdown
# server-control
* create AMI with supervisor, git and node
* create user node with home in /var/node
* add an ssh pull only key to the node user in /var/node/.ssh/id_rsa
* clone your project
sample config to add to your app:
```javascript
sc.init(app, {
prefix: '/',
repo_url: 'git.com:user/project.git',
repo_dir: '/var/node/project',
service_port: port,
secret: "update-secret"
});
```
* npm install jim-lake/server-control --save
* cp node_modules/server-control/git_update_to_hash.sh /var/node/project/git_update_to_hash.sh
* chmod +x git_update_to_hash.sh
* cp node_modules/server-control/api_update.sh /var/lib/cloud/scripts/per-instance/api_update.sh
* chmod +x /var/lib/cloud/scripts/per-instance/api_update.sh
* create an Autoscale group with that AMI.
* pass the project dir and git HASH in your user datain the user-data:
```bash
PROJECT_DIR=/var/node/project
API_GIT_HASH=6c3xxx12348e2e97560e0081d3bf44bdbfb8ifn3
```
* assign an IAM role with the following configuration:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1412101976000",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances"
],
"Resource": [
"*"
]
},
{
"Sid": "Stmt1412101976001",
"Effect": "Allow",
"Action": [
"ec2:DescribeLaunchTemplateVersions",
"ec2:ModifyLaunchTemplate",
"ec2:CreateLaunchTemplateVersion"
],
"Resource": [
"*"
]
},
{
"Sid": "Stmt1412102095000",
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingGroups"
],
"Resource": [
"*"
]
}
]
}
```
* If your config has a role, you'll also need to add passrole
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::<account>:role/<role>"
}
]
}
```
* launch!