Подтвердить что ты не робот

Как установить переменную среды в Amazon EC2

Я создал тег на консоли AWS для одного из моих экземпляров EC2.

enter image description here

Однако, когда я смотрю на сервер, такая переменная среды не установлена.

То же самое работает с эластичным бобовым стеблем. env показывает теги, которые я создал на консоли.

$ env
 [...]
 DB_PORT=5432

Как установить переменные среды в Amazon EC2?

4b9b3361

Ответ 1

Следуя инструкциям Guy, я написал небольшую оболочку script. Этот script использует AWS CLI и jq. Он позволяет импортировать ваши экземпляры AWS и AMI в качестве переменных среды оболочки.

Надеюсь, это может помочь нескольким людям.

https://github.com/12moons/ec2-tags-env

Ответ 2

Вы можете получить эту информацию из метаданных, а затем запустить свои собственные команды среды установки.

Вы можете получить идентификатор экземпляра из метаданных (подробнее см. здесь: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-retrieval)

curl http://169.254.169.254/latest/meta-data/instance-id

Затем вы можете вызвать теги описания, используя предварительно установленный AWS CLI (или установить его на AMI)

aws ec2 describe-tags --filters "Name=resource-id,Values=i-5f4e3d2a" "Name=Value,Values=DB_PORT"

Затем вы можете использовать команду переменной среды установки OS

export DB_PORT=/what/you/got/from/the/previous/call

Вы можете запустить все это в своих пользовательских данных script. Подробнее см. Здесь: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

Ответ 3

Я использовал комбинацию следующих инструментов:

  • Установить библиотеку jq (sudo apt-get install -y jq)
  • Установите инструмент запроса метаданных экземпляра EC2

Вот суть кода ниже, если я обнов его в будущем: https://gist.github.com/marcellodesales/a890b8ca240403187269

######
# Author: Marcello de Sales ([email protected])
# Description: Create Create Environment Variables in EC2 Hosts from EC2 Host Tags
# 
### Requirements:  
# * Install jq library (sudo apt-get install -y jq)
# * Install the EC2 Instance Metadata Query Tool (http://aws.amazon.com/code/1825)
#
### Installation:
# * Add the Policy EC2:DescribeTags to a User
# * aws configure
# * Souce it to the user ~/.profile that has permissions
#### 
# REboot and verify the result of $(env).

# Loads the Tags from the current instance
getInstanceTags () {
  # http://aws.amazon.com/code/1825 EC2 Instance Metadata Query Tool
  INSTANCE_ID=$(./ec2-metadata | grep instance-id | awk '{print $2}')

  # Describe the tags of this instance
  aws ec2 describe-tags --region sa-east-1 --filters "Name=resource-id,Values=$INSTANCE_ID"
}

# Convert the tags to environment variables.
# Based on https://github.com/berpj/ec2-tags-env/pull/1
tags_to_env () {
    tags=$1

    for key in $(echo $tags | /usr/bin/jq -r ".[][].Key"); do
        value=$(echo $tags | /usr/bin/jq -r ".[][] | select(.Key==\"$key\") | .Value")
        key=$(echo $key | /usr/bin/tr '-' '_' | /usr/bin/tr '[:lower:]' '[:upper:]')
        echo "Exporting $key=$value"
        export $key="$value"
    done
}

# Execute the commands
instanceTags=$(getInstanceTags)
tags_to_env "$instanceTags"