У меня есть сценарий YAML, который устанавливает сервер Ubuntu.Под частью UserData у меня есть документ HTML, который содержит информацию.Я хочу, чтобы регион AWS и общедоступное DNS-имя сервера отображались на веб-странице после ее создания.
У меня есть переменные в строках 8, 9, которые должны найти зону доступности EC2 и выполнить анализчерез него, чтобы найти конкретный регион.В строке 11 есть переменная для публичного DNS.Сначала я попытался командой sed заменить значения (% AWS_REGION% и% DNS_HOSTNAME%) на странице HTML переменными.Когда я проверил страницу после запуска скрипта, ничего не было заменено.(т. е. было отображено «AWS region:% AWS_REGION%».)
Затем, когда я попробовал приведенный ниже код, я заменил% AWS_REGION% на $ EC2_REGION в надежде на то, что переменная будет просто подставлена, но когда я запустилсценарий, он был пустым (т. е. после «AWS region:» ничего не было, где в прошлый раз был% AWS_REGION%.)
UserData:
'Fn::Base64': |
#!/bin/bash -x
# set timezone
timedatectl set-timezone America/New_York
# get region
EC2_AVAIL_ZONE=curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed 's/[a-z]$//'`"
# get DNS
EC2_DNS=`curl http://169.254.169.254/latest/meta-data/public-hostname`
# install and setup apache
apt-get update
apt-get install -y nginx
cd /var/www/html
echo "<title>Jonah Ryder</title> <h1>Jonah Ryder</h1> <p>AWS region: $EC2_REGION</p> <p>Public hostname: %DNS_HOSTNAME%</p>" > index.html
sed 's/%AWS_REGION%/EC2_REGION/g' index.html
sed 's/%DNS_HOSTNAME%/EC2_DNS/g' index.html
service nginx start
Я хочу, чтобы HTML-страница брала переменные и отображала их.Я не знаю, где моя ошибка.