oem/azure: add replicate-image.sh

This commit is contained in:
Alex Crawford 2015-02-09 17:58:16 -08:00
parent 9cd1553286
commit 08f2d4cd23
2 changed files with 74 additions and 0 deletions

View File

@ -1,4 +1,21 @@
AZURE_ENVIRONMENT=AzureCloud AZURE_ENVIRONMENT=AzureCloud
REGIONS=(
"West Europe"
"North Europe"
"East Asia"
"Southeast Asia"
"East US"
"West US"
"Japan East"
"Japan West"
"Central US"
"East US 2"
"Brazil South"
"North Central US"
"South Central US"
"Australia East"
"Australia Southeast"
)
getManagementEndpoint() { getManagementEndpoint() {
azure account env show --environment=$AZURE_ENVIRONMENT --json | \ azure account env show --environment=$AZURE_ENVIRONMENT --json | \

57
oem/azure/replicate-image.sh Executable file
View File

@ -0,0 +1,57 @@
#!/bin/bash
# This script will replicate the given image into all Azure regions. It needs
# to be run in an environment where the azure-xplat-cli has been installed and
# configured with the production credentials and (optionally) SUBSCRIPTION_ID
# is defined, containing the subscription GUID.
DIR=$(dirname $0)
. $DIR/common.sh
set -e
GROUP="${1^}"
VERSION=$2
if [[ -z $GROUP || -z $VERSION ]]; then
echo "Usage: $0 <group> <version>"
exit 2
fi
image_name="CoreOS-${GROUP}-${VERSION}"
subscription_id=$SUBSCRIPTION_ID
if [ -z $subscription_id ]; then
subscription_id=$(getSubscriptionId)
fi
requestBody="<ReplicationInput xmlns=\"http://schemas.microsoft.com/windowsazure\">\n\t<TargetLocations>\n"
for region in "${REGIONS[@]}"; do
requestBody+="\t\t<Region>$region</Region>\n"
done
requestBody+="\t</TargetLocations>\n</ReplicationInput>"
url="$(getManagementEndpoint)/${subscription_id}/services/images/${image_name}/replicate"
workdir=$(mktemp --directory)
trap "rm --force --recursive ${workdir}" SIGINT SIGTERM EXIT
azure account cert export \
--file="${workdir}/cert" \
--subscription="${subscription_id}" > /dev/null
result=$(echo -e "${requestBody}" | curl \
--silent \
--request PUT \
--header "x-ms-version: 2014-10-01" \
--header "Content-Type: application/xml" \
--cert "${workdir}/cert" \
--url "${url}" \
--write-out "%{http_code}" \
--output "${workdir}/out" \
--data-binary @-)
if [[ $result != 200 ]]; then
echo "${result} - $(< ${workdir}/out)"
exit 1
fi