stacco 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21af987480fa2bb69db33761063b94915053363c
4
- data.tar.gz: 14ea2ffc6c4da1dab971f8f2d7c3416cd5234738
3
+ metadata.gz: 018a261fc9ce87765f84460e1c207a244caad5b4
4
+ data.tar.gz: 2332400896bccab5424c9f85c835bbfc7231f07a
5
5
  SHA512:
6
- metadata.gz: 9dd4a46a9ed4a0928f4f957633a91e440c88b33e74dd07bb7e62b253d074a1348d0292ccac79628592ac8118585d17c9cc363bae47be40bc88561786eab54865
7
- data.tar.gz: fd4cf5500e6b94424316d994bfedcd7917e565b9ce287ef8fe6cd5f0e4e647dc98e317b532a3aa0e2b98195996a866820572b04dcc1b266710db92a5b8bc7ac4
6
+ metadata.gz: 3a226439257a465b86cedafe66654eecf2511d09722d0934054d392a7a5354ea11e440ebfa3648384eccdb7b99210fa09516fbf6881f3bacf6048a07c9af6584
7
+ data.tar.gz: 6de6de1874a865280b9bce02600c2e39edfc71e5cf39b391a4ef4d0eb0f396c956bc00ad393fa8c68ebf7cb019d1fafbcd5f495a0be0821b628417043d04c586
data/.git/COMMIT_EDITMSG CHANGED
@@ -1 +1 @@
1
- Merge Bastion and NAT functions, and move DockerHost to using upstart
1
+ Externalize DockerHost logic
data/.git/index CHANGED
Binary file
data/.git/logs/HEAD CHANGED
@@ -1,2 +1,3 @@
1
1
  0000000000000000000000000000000000000000 43266d16742cc444c81d82f49923f99546bf6702 Levi Aul <levi@leviaul.com> 1402508203 -0700 clone: from git@github.com:bexio/cloudformation.git
2
2
  43266d16742cc444c81d82f49923f99546bf6702 7ae0507874a426eccf1e5cade20bbd06e748026a Levi Aul <levi@leviaul.com> 1402598788 -0700 commit: Merge Bastion and NAT functions, and move DockerHost to using upstart
3
+ 7ae0507874a426eccf1e5cade20bbd06e748026a 016915ad73dd873159f7f9c9f386eb833f683854 Levi Aul <levi@leviaul.com> 1402619504 -0700 commit: Externalize DockerHost logic
@@ -1,2 +1,3 @@
1
1
  0000000000000000000000000000000000000000 43266d16742cc444c81d82f49923f99546bf6702 Levi Aul <levi@leviaul.com> 1402508203 -0700 clone: from git@github.com:bexio/cloudformation.git
2
2
  43266d16742cc444c81d82f49923f99546bf6702 7ae0507874a426eccf1e5cade20bbd06e748026a Levi Aul <levi@leviaul.com> 1402598788 -0700 commit: Merge Bastion and NAT functions, and move DockerHost to using upstart
3
+ 7ae0507874a426eccf1e5cade20bbd06e748026a 016915ad73dd873159f7f9c9f386eb833f683854 Levi Aul <levi@leviaul.com> 1402619504 -0700 commit: Externalize DockerHost logic
@@ -1 +1,2 @@
1
1
  43266d16742cc444c81d82f49923f99546bf6702 7ae0507874a426eccf1e5cade20bbd06e748026a Levi Aul <levi@leviaul.com> 1402598796 -0700 update by push
2
+ 7ae0507874a426eccf1e5cade20bbd06e748026a 016915ad73dd873159f7f9c9f386eb833f683854 Levi Aul <levi@leviaul.com> 1402619519 -0700 update by push
@@ -0,0 +1,2 @@
1
+ x��]
2
+ �0�}�)��&�O��v�j0m��"��x_�a�>�� �F/�$
@@ -0,0 +1 @@
1
+ xe�Mk�0�wΧxȆ�6u��n��aZ6; J���I���!�� V�ly�/Ϗ�.`� ona��^����֕E�Q�V�'v��L�ِ�a4J�e2�|0IJ��aϥ���RC*Y~��^�Q-9����\gu����>�iu�A������w�E)��0�d�gC�B�I!�ݭ�yi�rBq  𮇧��s��_7��?�&��1�:V��ܝ:q6Y��Y����wz�]��)*iwSGiő� �v�u�8��pf~3��.�6 C��6��Wt��N��
@@ -1 +1 @@
1
- 7ae0507874a426eccf1e5cade20bbd06e748026a
1
+ 016915ad73dd873159f7f9c9f386eb833f683854
@@ -1 +1 @@
1
- 7ae0507874a426eccf1e5cade20bbd06e748026a
1
+ 016915ad73dd873159f7f9c9f386eb833f683854
@@ -0,0 +1 @@
1
+ 016915ad73dd873159f7f9c9f386eb833f683854
@@ -77,7 +77,7 @@
77
77
 
78
78
  "UpdatePolicy": {
79
79
  "AutoScalingRollingUpdate": {
80
- "MinInstancesInService": "0",
80
+ "MinInstancesInService": "1",
81
81
  "MaxBatchSize": "1",
82
82
  "PauseTime": "PT0S"
83
83
  }
@@ -89,7 +89,7 @@
89
89
  "LaunchConfigurationName": {"Ref": "BackendLaunchConfiguration"},
90
90
 
91
91
  "MinSize": "1",
92
- "MaxSize": "1",
92
+ "MaxSize": "2",
93
93
 
94
94
  "HealthCheckType": "ELB",
95
95
  "HealthCheckGracePeriod": "1600",
@@ -146,7 +146,6 @@
146
146
  "export AWS_INSTANCE_WAIT_HANDLE='", {"Ref": "AdminAPIScalingGroupReadyWaitHandle"}, "'\n",
147
147
  {"Ref": "UserDataEnvironmentVar"}, "\n",
148
148
  {"Ref": "CommonRoleScriptVar"}, "\n",
149
- {"Ref": "DockerHostRoleScriptVar"}, "\n",
150
149
  {"Ref": "BackendRoleScriptVar"}, "\n"
151
150
  ]]}}
152
151
  }
@@ -83,7 +83,7 @@
83
83
 
84
84
  "UpdatePolicy": {
85
85
  "AutoScalingRollingUpdate": {
86
- "MinInstancesInService": "0",
86
+ "MinInstancesInService": "1",
87
87
  "MaxBatchSize": "1",
88
88
  "PauseTime": "PT0S"
89
89
  }
@@ -95,7 +95,7 @@
95
95
  "LaunchConfigurationName": {"Ref": "FrontendLaunchConfiguration"},
96
96
 
97
97
  "MinSize": "1",
98
- "MaxSize": "1",
98
+ "MaxSize": "2",
99
99
 
100
100
  "HealthCheckType": "ELB",
101
101
  "HealthCheckGracePeriod": "1600",
@@ -147,7 +147,6 @@
147
147
  "export BEXNG_ADMIN_API_HOST='", {"Fn::FindInMap": ["StackZoneRecords", "AdminAPI", "DNSName" ]}, "'\n",
148
148
  {"Ref": "UserDataEnvironmentVar"}, "\n",
149
149
  {"Ref": "CommonRoleScriptVar"}, "\n",
150
- {"Ref": "DockerHostRoleScriptVar"}, "\n",
151
150
  {"Ref": "FrontendRoleScriptVar"}, "\n"
152
151
  ]]}}
153
152
  }
@@ -0,0 +1,68 @@
1
+ {
2
+
3
+ "Resources": {
4
+
5
+ "BaseImageGeneratorSecurityGroup" : {
6
+ "Type" : "AWS::EC2::SecurityGroup",
7
+ "Properties" : {
8
+ "GroupDescription" : "Allow the application instances to access the NAT device",
9
+ "VpcId" : { "Ref" : "VPC" },
10
+
11
+ "SecurityGroupIngress": [
12
+ {"IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": "0.0.0.0/0"}
13
+ ],
14
+ "SecurityGroupEgress": [
15
+ {"IpProtocol": "-1", "CidrIp": "0.0.0.0/0"}
16
+ ]
17
+ }
18
+ },
19
+
20
+ "BaseImageGeneratorReadyWaitHandle": {"Type": "AWS::CloudFormation::WaitConditionHandle", "Properties": {}},
21
+
22
+ "BaseImageGeneratorReady": {"Type": "AWS::CloudFormation::WaitCondition", "DependsOn": ["BaseImageGenerator"], "Properties": {
23
+ "Handle": {"Ref": "BaseImageGeneratorReadyWaitHandle"},
24
+ "Count": "1",
25
+ "Timeout": "1200"
26
+ }},
27
+
28
+ "BaseImageGenerator" : {
29
+ "Type" : "AWS::EC2::Instance",
30
+ "Metadata": {
31
+ "AWS::CloudFormation::Init": {}
32
+ },
33
+ "Properties" : {
34
+ "InstanceType": "m3.large",
35
+ "ImageId": {"Ref": "InstanceAMIVar"},
36
+ "KeyName": {"Ref": "IAMKeypairNameVar"},
37
+
38
+ "NetworkInterfaces": [{
39
+ "DeviceIndex": "0",
40
+ "AssociatePublicIpAddress": "true",
41
+ "DeleteOnTermination": "true",
42
+ "SubnetId": {"Ref": "PublicSubnet"},
43
+ "GroupSet" : [{"Ref" : "BaseImageGeneratorSecurityGroup"}]
44
+ }],
45
+
46
+ "BlockDeviceMappings": [
47
+ {"DeviceName": "/dev/xvdc", "Ebs": {
48
+ "VolumeSize": "5"
49
+ }}
50
+ ],
51
+
52
+ "UserData": {"Fn::Base64": {"Fn::Join": ["", [
53
+ "#!/bin/bash\n",
54
+ "export AWS_REGION='", {"Ref": "AWS::Region"}, "'\n",
55
+ "export AWS_STACK_NAME='", {"Ref": "AWS::StackName"}, "'\n",
56
+ "export AWS_INSTANCE_LOGICAL_NAME='BaseImageGenerator'\n",
57
+ "export AWS_INSTANCE_WAIT_HANDLE='", {"Ref": "BaseImageGeneratorReadyWaitHandle"}, "'\n",
58
+ {"Ref": "UserDataEnvironmentVar"}, "\n",
59
+ {"Ref": "CommonRoleScriptVar"}, "\n",
60
+ {"Ref": "DockerHostRoleScriptVar"}, "\n",
61
+ {"Ref": "BaseImageGeneratorRoleScriptVar"}, "\n"
62
+ ]]}}
63
+ }
64
+ }
65
+
66
+ }
67
+
68
+ }
@@ -1,3 +1,8 @@
1
+ # DockerHost tools
2
+ run-gist "tsutsu/72c4ac40591f96ad379f"
3
+
4
+ mkdir -p /var/lib/docker && mount /dev/xvdc /var/lib/docker
5
+ mkdir -p /volumes && mount /dev/xvdd /volumes
1
6
 
2
7
  # create bexng file-based config
3
8
  mkdir -p /etc/bexng
@@ -21,28 +26,27 @@ cat >"/etc/bexng/secrets.exs" <<EOF
21
26
  EOF
22
27
 
23
28
 
24
- define_container "quay.io/bexio/postgresql" \
29
+ docker-bootstrap
30
+
31
+ docker-define-service "quay.io/bexio/postgresql" \
25
32
  --volume "/volumes/postgresql:/var/lib/postgresql"
26
33
 
27
- define_container "quay.io/bexio/bitcoind" \
34
+ docker-define-service "quay.io/bexio/bitcoind" \
28
35
  --volume "/volumes/bitcoind:/var/lib/bitcoin"
29
36
 
30
- define_container "quay.io/bexio/bexng" \
37
+ docker-define-service "quay.io/bexio/bexng" \
31
38
  --dependency "bitcoind" \
32
39
  --dependency "postgresql" \
33
40
  --volume "/etc/bexng:/target" \
34
41
  --publish="51607:51607" \
35
42
  -e "BEXNG_TARGET_SYSTEM=${DOMAIN}"
36
43
 
37
- define_container "quay.io/bexio/bexng_frontend" \
44
+ docker-define-service "quay.io/bexio/bexng_frontend" \
38
45
  --dependency "bexng" \
39
46
  --publish="80:8080"
40
47
 
41
48
 
42
- echo "setting up docker:"
43
- create_docker_library
44
-
45
- echo "starting container services:"
49
+ echo "starting docker-container services..."
46
50
  start postgresql
47
51
  start bitcoind
48
52
  start bexng
data/priv/roles/Common.sh CHANGED
@@ -2,7 +2,6 @@ _exit_handler_reason=""
2
2
  _exit_handler(){
3
3
  exit_code="$?"
4
4
 
5
-
6
5
  if [ "${exit_code}" -eq 0 ]; then
7
6
  echo "Stacco cloud-init handler finished"
8
7
  cfn-signal -s true "${AWS_INSTANCE_WAIT_HANDLE}"
@@ -22,23 +21,43 @@ die(){
22
21
 
23
22
  trap _exit_handler EXIT
24
23
  set -e
25
-
26
- echo "running as $(whoami) in ${PWD}"
27
24
  export HOME=/root
28
25
  cd "$HOME"
29
26
 
30
27
 
31
- echo "ensuring internet connectivity..."
32
- while true; do
33
- nat_status=$(curl -s -o /dev/null -I -w "%{http_code}" -m 2 http://bex-status.s3.amazonaws.com/status.json)
34
- if [ "${nat_status}" = "200" ]; then
35
- break
36
- fi
37
- sleep 2
38
- done
28
+ cat >/usr/local/bin/run-gist <<EOF
29
+ gist_id="\$1"; shift
30
+
31
+ gist_download_url="https://gist.github.com/\${gist_id}/download"
32
+ extract_dir=\$(mktemp -d /tmp/stacco.XXXXXXXX)
33
+
34
+ echo "unpacking '\${gist_download_url}'..."
35
+
36
+ pushd "\${extract_dir}" >/dev/null
37
+ curl -sL "\${gist_download_url}" | tar -x -z --strip=1
38
+ chmod a+x ./run
39
+ ./run
40
+ popd >/dev/null
41
+
42
+ rm -rf "\${extract_dir}"
43
+ EOF
44
+ chmod a+x /usr/local/bin/run-gist
39
45
 
46
+
47
+ echo "ensuring internet connectivity..."
48
+ curl -I --silent --fail --show-error --retry 100 http://bex-status.s3.amazonaws.com/status.json
40
49
  echo "found an internet connection."
41
50
 
51
+ echo "configuring hostname from aws metadata service"
52
+ private_hostname=$(curl http://169.254.169.254/latest/meta-data/hostname)
53
+ echo "${private_hostname}" > /etc/hostname
54
+ hostname -b -F /etc/hostname
55
+ short_hostname=$(hostname -s)
56
+ sed -i '/127\.0\.0\.1/d' /etc/hosts
57
+ cat >>/etc/hosts <<EOF
58
+ 127.0.0.1 localhost ${short_hostname} ${private_hostname}
59
+ EOF
60
+
42
61
  echo "disablng kernel and initramfs updates"
43
62
  echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections
44
63
  sed -i 's/=yes/=no/g' /etc/initramfs-tools/update-initramfs.conf
@@ -52,23 +71,13 @@ echo "installing aws cfn-tools"
52
71
  easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz
53
72
  cfn-init --region="${AWS_REGION}" --stack="${AWS_STACK_NAME}" --resource="${AWS_INSTANCE_LOGICAL_NAME}" || die 'Failed to run cfn-init'
54
73
 
55
- echo "configuring hostname from aws metadata service"
56
- private_hostname=$(curl http://169.254.169.254/latest/meta-data/hostname)
57
- echo "${private_hostname}" > /etc/hostname
58
-
59
- hostname -b -F /etc/hostname
60
- short_hostname=$(hostname -s)
61
-
62
- sed -i '/127\.0\.0\.1/d' /etc/hosts
63
- cat >>/etc/hosts <<EOF
64
- 127.0.0.1 localhost ${short_hostname} ${private_hostname}
65
- EOF
74
+ for dev in /dev/xvd* /dev/ephemeral*; do
75
+ if [ -n "$(mount | awk '{print $1;}' | grep "^${dev}$")" ]; then
76
+ next
77
+ fi
66
78
 
67
- if [ -b "/dev/xvdd" ]; then
68
- echo "formatting and mounting /volumes storage"
69
- mkfs.btrfs -L datavols /dev/xvdd
70
- mkdir -p /volumes
71
- mount /dev/xvdd /volumes
72
- btrfs filesystem resize max /volumes
79
+ mkfs.btrfs "${dev}" 2>/dev/null || :
80
+ mount "${dev}" /mnt
81
+ btrfs filesystem resize max /mnt 2>/dev/null || :
82
+ umount /mnt
73
83
  fi
74
-
@@ -1,7 +1,14 @@
1
- define_container "quay.io/bexio/bexng_frontend" \
1
+ # DockerHost tools
2
+ run-gist "tsutsu/72c4ac40591f96ad379f"
3
+
4
+ mkdir -p /var/lib/docker && mount /dev/xvdc /var/lib/docker
5
+ mkdir -p /volumes && mount /dev/xvdd /volumes
6
+
7
+ docker-bootstrap
8
+
9
+ docker-define-service "quay.io/bexio/bexng_frontend" \
2
10
  -e "BEXNG_PORT_51607_TCP=tcp://${BEXNG_ADMIN_API_HOST}:51607" \
3
11
  --publish="80:8080"
4
12
 
5
- create_docker_library
6
-
13
+ echo "starting docker-container services..."
7
14
  start bexng_frontend
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stacco
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Levi Aul
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-12 00:00:00.000000000 Z
11
+ date: 2014-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -78,17 +78,28 @@ files:
78
78
  - ./.git/logs/refs/heads/master
79
79
  - ./.git/logs/refs/remotes/origin/HEAD
80
80
  - ./.git/logs/refs/remotes/origin/master
81
+ - ./.git/objects/01/6915ad73dd873159f7f9c9f386eb833f683854
81
82
  - ./.git/objects/01/ddd978bb9fbf18a379fb418080b2fc4d5102b6
83
+ - ./.git/objects/03/59b4f788063f520915a41d3d73a0d4631b9dfc
84
+ - ./.git/objects/04/09e63d7e887019239ac04a2ebf184d2bf1abd5
82
85
  - ./.git/objects/07/1c3c0ff3bbb5d2dee36124869ac978339aa7d8
86
+ - ./.git/objects/08/d390fad8629347b01e81e36389b6445bb7be6e
83
87
  - ./.git/objects/18/ec0e701dcbdb487c91265f32d6d0e12a1cce42
88
+ - ./.git/objects/1d/24fb1b18e61fee0a5e5a065984b959eb3e26f7
84
89
  - ./.git/objects/1d/f93d4a34d891a00b6b11d13e8e9c49e2e918d7
85
90
  - ./.git/objects/36/ba5be11b41d1823658d7ce80027a97ebad5b49
91
+ - ./.git/objects/3c/a160491652dbac4b486a67368c3d5571a02ee7
86
92
  - ./.git/objects/3d/f99825f6039015db4c43abf789d2f1e54649f4
93
+ - ./.git/objects/42/a30010d7fb35e5946ac0858140f8286748a49a
94
+ - ./.git/objects/4a/ded72b0a091965c9cb556c90400e8f116b4a83
87
95
  - ./.git/objects/4b/7e51ebdd2d7ae3ef0b0a27d081ce1579f5a073
88
96
  - ./.git/objects/53/2b0166a9dda8275dcfcba389a1d782269a127f
97
+ - ./.git/objects/60/cffb71344e0595790bc86f9044b635eb584cd5
98
+ - ./.git/objects/67/bdace601575b64eb0969c3b291da318069bad0
89
99
  - ./.git/objects/69/2be5effe74e8c9f60c3a949d383324ac075248
90
100
  - ./.git/objects/7a/e0507874a426eccf1e5cade20bbd06e748026a
91
101
  - ./.git/objects/7e/d9e61793490a93850a3974ab2ab01bc35f4e15
102
+ - ./.git/objects/9a/7a7d20ee398751b7f7c42b93d0db56d5dbe375
92
103
  - ./.git/objects/b8/cd9a56aeab69e861ec8b3449b0910cb9d41d6e
93
104
  - ./.git/objects/c7/9379c6c2ef65dbb2e04e183e00803154cb35ab
94
105
  - ./.git/objects/e1/9b48d2433a281d1a3d1d37877b0c969277a57e
@@ -100,6 +111,7 @@ files:
100
111
  - ./.git/refs/remotes/origin/HEAD
101
112
  - ./.git/refs/remotes/origin/master
102
113
  - ./.git/refs/tags/0.1.20
114
+ - ./.git/refs/tags/0.1.21
103
115
  - ./.gitignore
104
116
  - ./bin/stacco
105
117
  - ./Dockerfile
@@ -118,10 +130,10 @@ files:
118
130
  - ./priv/layers/client-api.json
119
131
  - ./priv/layers/docker-librarian.json
120
132
  - ./priv/layers/static.json
133
+ - ./priv/layers/task-generate-base-image.json
121
134
  - ./priv/layers/vpc.json
122
135
  - ./priv/roles/Backend.sh
123
136
  - ./priv/roles/Common.sh
124
- - ./priv/roles/DockerHost.sh
125
137
  - ./priv/roles/Frontend.sh
126
138
  - ./priv/roles/NAT.sh
127
139
  - ./priv/roles/VPN.sh
@@ -1,132 +0,0 @@
1
-
2
- create_docker_library(){
3
-
4
- echo "mounting docker library..."
5
- docker_volume="/dev/xvdc"
6
- mkfs.btrfs -L dockergraph "${docker_volume}" 2>/dev/null || :
7
- mkdir -p /var/lib/docker
8
- mount -t btrfs -o "rw,noatime,space_cache" "${docker_volume}" /var/lib/docker
9
- btrfs filesystem resize max /var/lib/docker
10
-
11
- echo "installing docker..."
12
- echo 'deb http://get.docker.io/ubuntu docker main' > /etc/apt/sources.list.d/docker.list
13
- apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-keys '36A1D7869245C8950F966E92D8576A8BA88D21E9'
14
- apt-get update
15
- apt-get install -qy lxc-docker
16
- gpasswd -a ubuntu docker
17
-
18
- echo "logging into ${DOCKER_REGISTRY_URL}..."
19
- cat >/root/.dockercfg <<EOF
20
- {"${DOCKER_REGISTRY_URL}": {
21
- "auth": "${DOCKER_REGISTRY_AUTH}",
22
- "email": "${DOCKER_REGISTRY_EMAIL}"
23
- }}
24
- EOF
25
-
26
- }
27
-
28
-
29
- define_container(){
30
-
31
- echo "defining container service '$1'..."
32
-
33
- image_repo=$1
34
- shift
35
-
36
- image_name=$(echo "${image_repo}" | tr '/' ' ' | awk '{print $NF;}')
37
- data_container_name="${image_name}-data"
38
-
39
- image_tag="latest"
40
- dependencies=""
41
- volumes=""
42
- published_ports=""
43
- misc_args=""
44
-
45
- while [ "$#" -gt 0 ]; do
46
- case "$1" in
47
- --tag)
48
- shift; tag_name="$1"; shift
49
- image_tag="${tag_name}"
50
- ;;
51
- --dependency)
52
- shift; dep_name="$1"; shift
53
- dependencies="${dependencies} ${dep_name}"
54
- ;;
55
- --volume)
56
- shift; volume_arg="$1"; shift
57
- volumes="${volumes} ${volume_arg}"
58
- ;;
59
- --publish-all-ports)
60
- shift
61
- publishing_all_ports=1
62
- ;;
63
- *)
64
- misc_arg="$1"; shift
65
- misc_args="${misc_args} ${misc_arg}"
66
- ;;
67
- esac
68
- done
69
-
70
- stopping_stanza="stopping docker"
71
- link_args=""
72
- for dep_name in ${dependencies}; do
73
- stopping_stanza="${stopping_stanza} or stopping ${dep_name}"
74
- link_args="${link_args} --link=\"${dep_name}:${dep_name}\""
75
- done
76
-
77
-
78
- data_container_volume_args=""
79
- for volume_mapping in ${volumes}; do
80
- data_container_volume_args="${data_container_volume_args} --volume=\"${volume_mapping}\""
81
- done
82
-
83
- cat >"/etc/init/${image_name}.conf" <<EOF
84
- stop on (${stopping_stanza})
85
-
86
- console output
87
-
88
- env HOME=/root
89
-
90
- respawn
91
- respawn limit 5 20
92
-
93
- pre-start script
94
- . /etc/environment.local
95
-
96
- echo "creating data container (${data_container_name}) if it doesn't exist..."
97
- docker run --name="${data_container_name}" ${data_container_volume_args} "tianon/true:latest" 2>/dev/null || :
98
-
99
- echo "updating image (${image_repo}:${image_tag})..."
100
- docker pull "${image_repo}:${image_tag}"
101
- end script
102
-
103
- post-stop script
104
- docker rm "${image_name}" || :
105
- end script
106
-
107
- script
108
- . /etc/environment.local
109
-
110
- echo "starting container: ${image_name} (from ${image_repo}:${image_tag})..."
111
-
112
- if [ -n "${publishing_all_ports}" ]; then
113
- published_port_args=""
114
- published_ports="\$(docker inspect --format='{{.Config.ExposedPorts}}' "${image_repo}:${image_tag}" | sed -e 's/[^0-9]/ /g')"
115
- for port in \${published_ports}; do
116
- published_port_args="\${published_port_args} --publish=\"\${port}:\${port}\""
117
- done
118
- fi
119
-
120
- exec docker run --rm -i -t --sig-proxy=true \
121
- --name="${image_name}" \
122
- --volumes-from="${data_container_name}" \
123
- \${published_port_args} \
124
- ${link_args} \
125
- ${misc_args} \
126
- "${image_repo}:${image_tag}"
127
- end script
128
- EOF
129
-
130
- echo "defined."
131
-
132
- }