tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
Copy AMIs in parallel
Eelco Dolstra
9 years ago
1e9b8bfb
02db7d98
+39
-18
1 changed file
expand all
collapse all
unified
split
nixos
maintainers
scripts
ec2
create-amis.sh
+39
-18
nixos/maintainers/scripts/ec2/create-amis.sh
···
13
14
rm -f ec2-amis.nix
15
0
0
0
16
17
-
for type in hvm pv; do
18
link=$stateDir/$type
19
imageFile=$link/nixos.qcow2
20
system=x86_64-linux
···
31
--arg configuration "{ imports = [ <nixpkgs/nixos/maintainers/scripts/ec2/amazon-image.nix> ]; ec2.hvm = $hvmFlag; }"
32
fi
33
34
-
for store in ebs s3; do
35
36
bucket=nixos-amis
37
bucketDir="$version-$type-$store"
···
39
prevAmi=
40
prevRegion=
41
42
-
for region in eu-west-1 eu-central-1 us-east-1 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 sa-east-1; do
43
44
name=nixos-$version-$arch-$type-$store
45
description="NixOS $system $version ($type-$store)"
···
226
227
echo "region = $region, type = $type, store = $store, ami = $ami"
228
229
-
if [ -z "$NO_WAIT" -o -z "$prevAmi" ]; then
230
-
echo -n "waiting for AMI..."
231
-
while true; do
232
-
status=$(aws ec2 describe-images --image-ids "$ami" --region "$region" | jq -r .Images[0].State)
233
-
if [ "$status" = available ]; then break; fi
234
-
sleep 10
235
-
echo -n '.'
236
-
done
237
-
echo
238
-
239
-
# Make the image public.
240
-
aws ec2 modify-image-attribute \
241
-
--image-id "$ami" --region "$region" --launch-permission 'Add={Group=all}'
242
-
fi
243
-
244
if [ -z "$prevAmi" ]; then
245
prevAmi="$ami"
246
prevRegion="$region"
247
fi
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
248
249
echo " \"$major\".$region.$type-$store = \"$ami\";" >> ec2-amis.nix
250
done
···
13
14
rm -f ec2-amis.nix
15
16
+
types="hvm pv"
17
+
stores="ebs s3"
18
+
regions="eu-west-1 eu-central-1 us-east-1 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 sa-east-1"
19
20
+
for type in $types; do
21
link=$stateDir/$type
22
imageFile=$link/nixos.qcow2
23
system=x86_64-linux
···
34
--arg configuration "{ imports = [ <nixpkgs/nixos/maintainers/scripts/ec2/amazon-image.nix> ]; ec2.hvm = $hvmFlag; }"
35
fi
36
37
+
for store in $stores; do
38
39
bucket=nixos-amis
40
bucketDir="$version-$type-$store"
···
42
prevAmi=
43
prevRegion=
44
45
+
for region in $regions; do
46
47
name=nixos-$version-$arch-$type-$store
48
description="NixOS $system $version ($type-$store)"
···
229
230
echo "region = $region, type = $type, store = $store, ami = $ami"
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
232
if [ -z "$prevAmi" ]; then
233
prevAmi="$ami"
234
prevRegion="$region"
235
fi
236
+
done
237
+
238
+
done
239
+
240
+
done
241
+
242
+
for type in $types; do
243
+
link=$stateDir/$type
244
+
system=x86_64-linux
245
+
arch=x86_64
246
+
247
+
for store in $stores; do
248
+
249
+
for region in $regions; do
250
+
251
+
name=nixos-$version-$arch-$type-$store
252
+
amiFile=$stateDir/$region.$type.$store.ami-id
253
+
ami=$(cat $amiFile)
254
+
255
+
echo "region = $region, type = $type, store = $store, ami = $ami"
256
+
257
+
echo -n "waiting for AMI..."
258
+
while true; do
259
+
status=$(aws ec2 describe-images --image-ids "$ami" --region "$region" | jq -r .Images[0].State)
260
+
if [ "$status" = available ]; then break; fi
261
+
sleep 10
262
+
echo -n '.'
263
+
done
264
+
echo
265
+
266
+
# Make the image public.
267
+
aws ec2 modify-image-attribute \
268
+
--image-id "$ami" --region "$region" --launch-permission 'Add={Group=all}'
269
270
echo " \"$major\".$region.$type-$store = \"$ami\";" >> ec2-amis.nix
271
done