Как установить переменные среды узла во время облачной подготовки-терраформирования? - PullRequest
0 голосов
/ 14 июля 2020

Я использую response как интерфейс и node js как backend, и я выполняю облачную подготовку, новый экземпляр ec2 с использованием terraform. Я еще не начал писать скрипт terraform.

Но я пишу bash скрипт в значении пользовательских данных для выполнения на новом созданном экземпляре. Я пишу этот атрибут userdata для terraform, просто чтобы знать, верен ли мой поток или нет.

И здесь я чувствую, что поток хорош, поправьте меня, если я ошибаюсь.

Примечание 1: Это условие выполняется с помощью одного щелчка на интерфейсе администратором, и создается новый экземпляр с интерфейсом и сервером вместе с новыми переменными среды (потому что здесь идентификатор клиента Paypal и ключ аутентификации Google остается уникальным для каждого экземпляра, поэтому как мне динамически установить эти переменные среды)

Примечание 2: Поскольку у меня серверная часть как node js, у меня есть данные формы {google auth идентификатор клиента, Paypal Cliend ID}, который я получаю от запрошенного пользователя, отправленного на веб-интерфейс. После того, как администратор примет запрос, вся эта подготовка должна произойти автоматически. И после нажатия этой кнопки администратором я вызываю скрипт terraform в бэкэнде node js, чтобы запустить новый экземпляр, там в атрибуте userdata terraform я использую следующий скрипт bash. Как мне установить значения данных формы {google auth client ID, Paypal Cliend ID} в моем bash скрипте.

Итак, каков метод, который может устанавливать эти node js переменные среды во время облачной подготовки? ?

этот terraform / main.tf будет вызываться node js, так как node js может установить переменные окружения внешнего и внутреннего интерфейса созданного нового экземпляра

terraform /main.tf

resource "aws_instance" "default" {
  ami                    = var.ami-id
  iam_instance_profile   = var.iam-instance-profile
  instance_type          = var.instance-type
  key_name               = var.key-pair
  private_ip             = var.private-ip
  subnet_id              = var.subnet-id
  vpc_security_group_ids = var.vpc-security-group-ids

  user_data = <<EOF
sudo su -
yum install updates -y
yum install mysql -y
yum install nginx -y
sudo service nginx start
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node 
mkdir cd /var/apps
cd /var/apps
yum install git -y
git clone https://username:password@github.com/username/frontend.git
git clone https://username:password@github.com/username/backend.git
cd frontend && npm install
//I want to set some node env variables for my front end here
//like NODE.env.PAYPAL_CLIENT_ID='0000aaaaa' NODE.env.GOOGLE_CLIENT_ID='12321ewre'
npm run build
cd ..
cd backend && npm install
//I want to set some node env variables for my backend here
//like NODE.env.PAYPAL_CLIENT_ID='0000aaaaa' NODE.env.GOOGLE_CLIENT_ID='12321ewre'
npm start
rm -r /etc/nginx/nginx.conf
cp backend/nginx/config/nginx.conf /etc/nginx/nginx.conf
sudo service nginx restart
EOF

  tags = {
    Name = var.name
  }
}

ПРИМЕЧАНИЕ. У меня есть файлы .env.production и .env.development, но я не знаю, как перезаписать их значениями от node js до

...