Импорт новых переменных окружения при выполнении bash-скрипта

Рейтинг: 0Ответов: 0Опубликовано: 06.05.2023

Пишу terraform-спецификацию, хочу использовать bash-скрипт для быстрого разворота приложения на Java в docker-контейнере. Docker-compose использует переменные окружения Linux, поэтому для выполнения скрипта, мне сначала необходимо импортировать переменные в .bashrc на ВМ. Но перезапустить bash в скрипте я не могу. Подскажите, пожалуйста, как импортировать переменные окружения в bash без перезагрузки. Packer-конфигурация:

variable "port" {
  type = string
  default = 8000
}
variable "user" {
  type = string
  default = "user"
}
variable "host" {
  type = string
  default = "хост"
}
variable "secret" {
  type = string
  default = "secret"
}
variable "accsess" {
  type = string
  default = "accsess-ключ"
}
variable "bucket" {
  type = string
  default = "bucket"
}
variable "password" {
  type = string
  default = "password"
}

 source "yandex" "ubuntu-docker" {
   token               = "мой токен"
   folder_id           = "мой id"
   source_image_family = "ubuntu-2004-lts"
   ssh_username        = "ubuntu"
   use_ipv4_nat        = "true"
   image_description   = "my custom ubuntu with docker"
   image_family        = "ubuntu-2004-lts"
   image_name          = "my-ubuntu"
   subnet_id           = "подсеть"
   disk_type           = "network-ssd"
   zone                = "ru-central1-a"
 }

 build {
   sources = ["source.yandex.ubuntu-docker"]

   provisioner "shell" {
     inline = ["sudo echo $SHELL",
"whoami",
"sudo echo 'export APP_PORT=${var.port}'>>.bashrc",
"sudo echo 'export DB_USERNAME=${var.user}'>>.bashrc",
"sudo echo 'export DB_HOST=${var.host}'>>.bashrc",
"sudo echo 'export DB_PORT=6432'>>.bashrc",
"sudo echo 'export DB_NAME=db1'>>.bashrc",
"sudo echo 'export S3_SECRET_KEY=${var.secret}'>>.bashrc",
"sudo echo 'export S3_ACCSESS_KEY=${var.accsess}'>>.bashrc",
"sudo echo 'export S3_URL=https://storage.yandexcloud.net'>>.bashrc",
"sudo echo 'export S3_BUCKET_NAME=${var.bucket}'>>.bashrc",
"sudo echo 'export S3_REGION=ru-central1'>>.bashrс",
"sudo echo 'export DB_PASSWORD=${var.password}'>>.bashrc",
"tail -6 .bashrc",
"wget http://141.8.195.193/script.sh",
"chmod +x script.sh",
"sudo ./script.sh"]
   }
 }

Bash-скрипт:

#!/bin/bash
sudo apt-get update -y && \
sudo apt-get install -y git docker docker-compose && \
sudo usermod -aG docker $USER && \
git clone ссылка на репозиторий && \
cd backend/src/main/docker && \
docker-compose up

После выполнения получаю Warning: "The APP_PORT valiable is not set. Defaulting to a blank string." Соответственно, приложение не запускаются. Полагаю, что я неправильно перечитываю переменные. Пробовал и перезапускать оболочку:

exec -l $SHELL

И перечитывать через source:

source ~/.bashrc

Но эти команды почему-то не удаётся выполнить при сборке образа. Желаемого результата не достиг. Заранее благодарю за ответ.

Ответы

Ответов пока нет.