mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-24 15:11:19 +02:00
oem/azure: add replicate-image.sh
This commit is contained in:
parent
9cd1553286
commit
08f2d4cd23
@ -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
57
oem/azure/replicate-image.sh
Executable 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
|
Loading…
x
Reference in New Issue
Block a user