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 +4 -4
- data/.git/COMMIT_EDITMSG +1 -1
- data/.git/index +0 -0
- data/.git/logs/HEAD +1 -0
- data/.git/logs/refs/heads/master +1 -0
- data/.git/logs/refs/remotes/origin/master +1 -0
- data/.git/objects/01/6915ad73dd873159f7f9c9f386eb833f683854 +2 -0
- data/.git/objects/03/59b4f788063f520915a41d3d73a0d4631b9dfc +0 -0
- data/.git/objects/04/09e63d7e887019239ac04a2ebf184d2bf1abd5 +0 -0
- data/.git/objects/08/d390fad8629347b01e81e36389b6445bb7be6e +0 -0
- data/.git/objects/1d/24fb1b18e61fee0a5e5a065984b959eb3e26f7 +1 -0
- data/.git/objects/3c/a160491652dbac4b486a67368c3d5571a02ee7 +0 -0
- data/.git/objects/42/a30010d7fb35e5946ac0858140f8286748a49a +0 -0
- data/.git/objects/4a/ded72b0a091965c9cb556c90400e8f116b4a83 +0 -0
- data/.git/objects/60/cffb71344e0595790bc86f9044b635eb584cd5 +0 -0
- data/.git/objects/67/bdace601575b64eb0969c3b291da318069bad0 +0 -0
- data/.git/objects/9a/7a7d20ee398751b7f7c42b93d0db56d5dbe375 +0 -0
- data/.git/refs/heads/master +1 -1
- data/.git/refs/remotes/origin/master +1 -1
- data/.git/refs/tags/0.1.21 +1 -0
- data/priv/layers/admin-api.json +2 -3
- data/priv/layers/client-api.json +2 -3
- data/priv/layers/task-generate-base-image.json +68 -0
- data/priv/roles/Backend.sh +12 -8
- data/priv/roles/Common.sh +38 -29
- data/priv/roles/Frontend.sh +10 -3
- metadata +15 -3
- data/priv/roles/DockerHost.sh +0 -132
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 018a261fc9ce87765f84460e1c207a244caad5b4
|
4
|
+
data.tar.gz: 2332400896bccab5424c9f85c835bbfc7231f07a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a226439257a465b86cedafe66654eecf2511d09722d0934054d392a7a5354ea11e440ebfa3648384eccdb7b99210fa09516fbf6881f3bacf6048a07c9af6584
|
7
|
+
data.tar.gz: 6de6de1874a865280b9bce02600c2e39edfc71e5cf39b391a4ef4d0eb0f396c956bc00ad393fa8c68ebf7cb019d1fafbcd5f495a0be0821b628417043d04c586
|
data/.git/COMMIT_EDITMSG
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
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
|
data/.git/logs/refs/heads/master
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 +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
|
Binary file
|
Binary file
|
Binary file
|
@@ -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��.�6C��6��Wt��N��
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/.git/refs/heads/master
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
016915ad73dd873159f7f9c9f386eb833f683854
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
016915ad73dd873159f7f9c9f386eb833f683854
|
@@ -0,0 +1 @@
|
|
1
|
+
016915ad73dd873159f7f9c9f386eb833f683854
|
data/priv/layers/admin-api.json
CHANGED
@@ -77,7 +77,7 @@
|
|
77
77
|
|
78
78
|
"UpdatePolicy": {
|
79
79
|
"AutoScalingRollingUpdate": {
|
80
|
-
"MinInstancesInService": "
|
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": "
|
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
|
}
|
data/priv/layers/client-api.json
CHANGED
@@ -83,7 +83,7 @@
|
|
83
83
|
|
84
84
|
"UpdatePolicy": {
|
85
85
|
"AutoScalingRollingUpdate": {
|
86
|
-
"MinInstancesInService": "
|
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": "
|
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
|
+
}
|
data/priv/roles/Backend.sh
CHANGED
@@ -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
|
-
|
29
|
+
docker-bootstrap
|
30
|
+
|
31
|
+
docker-define-service "quay.io/bexio/postgresql" \
|
25
32
|
--volume "/volumes/postgresql:/var/lib/postgresql"
|
26
33
|
|
27
|
-
|
34
|
+
docker-define-service "quay.io/bexio/bitcoind" \
|
28
35
|
--volume "/volumes/bitcoind:/var/lib/bitcoin"
|
29
36
|
|
30
|
-
|
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
|
-
|
44
|
+
docker-define-service "quay.io/bexio/bexng_frontend" \
|
38
45
|
--dependency "bexng" \
|
39
46
|
--publish="80:8080"
|
40
47
|
|
41
48
|
|
42
|
-
echo "
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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
|
-
|
data/priv/roles/Frontend.sh
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
-
|
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
|
-
|
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.
|
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-
|
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
|
data/priv/roles/DockerHost.sh
DELETED
@@ -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
|
-
}
|