Как сделать так, чтобы регион и DNS отображались в моем HTML-документе? - PullRequest
0 голосов
/ 31 января 2019

У меня есть сценарий 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-страница брала переменные и отображала их.Я не знаю, где моя ошибка.

1 Ответ

0 голосов
/ 31 января 2019

Чтобы использовать переменную окружения EC2_REGION после того, как вы установили ее значение, вам нужно использовать $EC2_REGION, а не EC2_REGION.Вот как вы обычно читаете переменные env.

Кроме того, стоит вывести $EC2_AVAIL_ZONE и $EC2_REGION в стандартный вывод после того, как вы их установите, чтобы вы могли отладить это позже, если необходимо, используя Консоль экземпляра EC2 log.Например:

  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]$//'`"
  EC2_DNS=`curl http://169.254.169.254/latest/meta-data/public-hostname`

  echo "AZ: $EC2_AVAIL_ZONE"
  echo "Region: $EC2_REGION"
  echo "DNS: $EC2_DNS"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...