stacco 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
- }