M deploy-ec2-cloudinit/files/build_app => deploy-ec2-cloudinit/files/build_app +2 -0
@@ 3,6 3,7 @@
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin/
export HOME=/home/ec2-user
+export GOPATH=$HOME/go
cd $HOME
@@ 23,4 24,5 @@ cd $GIT_REPO_NAME
go get -u
go build
+# Move the config file over
mv /tmp/config.toml $HOME/=
\ No newline at end of file
A deploy-ec2-cloudinit/files/run.yml => deploy-ec2-cloudinit/files/run.yml +8 -0
@@ 0,0 1,8 @@
+cmd: /home/ec2-user/go/bin/api.zacbrown.org /home/ec2-user/config.toml
+cwd: /home/ec2-user
+log:
+ file: /var/log/api.zacbrown.org.log
+ age: 10 # seconds
+ num: 7 # int
+ size: 1 # MegaBytes
+wait: 1
M deploy-ec2-cloudinit/files/start_app => deploy-ec2-cloudinit/files/start_app +3 -1
@@ 2,5 2,7 @@
export HOME=/home/ec2-user
export GOPATH=$HOME/go
+export GOROOT=/opt/go
+export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
-$GOPATH/bin/api.zacbrown.org $HOME/config.toml>
\ No newline at end of file
+immortal -c /tmp/run.yml<
\ No newline at end of file
M deploy-ec2-cloudinit/files/update_system => deploy-ec2-cloudinit/files/update_system +4 -1
@@ 1,4 1,7 @@
#!/bin/bash -e
yum update -y
-yum install -y git>
\ No newline at end of file
+
+curl -s https://packagecloud.io/install/repositories/immortal/immortal/script.rpm.sh | sudo bash
+yum install -y git immortal
+
M deploy-ec2-cloudinit/index.ts => deploy-ec2-cloudinit/index.ts +19 -1
@@ 65,6 65,18 @@ const keypair = new aws.ec2.KeyPair("keypair", {
publicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD2uYdBlc7pPZvZ0bJDfRuqj4JEEhhTlGXYIZm0/K613S01d7WsxfXcJJOuy/ZrtGluBAtHVMDHfeD4eSrISstI5BxkFJILKLsw6yyAGDmNHvs+bMG3a6+9PWc8MFUlbJ5c33331Rb69I209Zem8kHuL62GBLIqgWVmYWL60zMTYvCSNCpFYOxzhdCAF8yDWtG6tI0DU6C+bXsD3c7guzxTqzehnfFg1IdcLdEH9ITtFFJnmvm4JIcWA7BohgY1UdXuNV0d1yGy3c3UtZOxHfZdzw6QERLXQ8X6sSupEA0dRZ/PpEQxrkWHnpDbAhLt3Cl5e83yUIyT+57/UkoXWrab",
});
+function renderAwsConfig(config: { iamAccessKeyId: any; iamAccessKeySecret: any; awsRegion: any; }) {
+ let c = {
+ AwsConfig: {
+ IamAccessKeyId: config.iamAccessKeyId,
+ IamAccessKeySecret: config.iamAccessKeySecret,
+ Region: config.awsRegion
+ }
+ };
+
+ return Promise.resolve(toml.stringify(c))
+}
+
// Create our AMI.
const awsInstanceWeb = new aws.ec2.Instance("webServer", {
ami: amiId.id,
@@ 108,7 120,7 @@ const awsInstanceWeb = new aws.ec2.Instance("webServer", {
"build_app": {
files: {
"/tmp/config.toml": {
- content: renderConfigFile("./files/config.toml", config),
+ content: renderAwsConfig(config),
mode: "000400",
owner: "root",
group: "root",
@@ 133,6 145,12 @@ const awsInstanceWeb = new aws.ec2.Instance("webServer", {
mode: "000500",
owner: "root",
group: "root",
+ },
+ "/tmp/run.yml": {
+ content: renderConfigFile("./files/run.yml", config),
+ mode: "000400",
+ owner: "root",
+ group: "root",
}
},
commands: {