Host Rails App в Google Cloud App Engine и установка переменных среды - PullRequest
0 голосов
/ 20 ноября 2018

Я размещу свое RoR API-приложение в Google App-Engine.

Пока все работает, но я должен хранить имена пользователей, пароли и ключи (например, пользователь базы данных / пароль) в виде простого текста вapp.yaml.это просто глупо, поэтому я никогда не смогу запихнуть это в мой репозиторий!Обычно я храню подобные вещи в переменной env и использую их в своем приложении.

Но я не нашел способа установить или получить доступ к переменным env.

Есть ли способ или альтернативасделать это?

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Вы можете получить доступ к переменным env в своем конфигурационном файле, синтаксис erb поддерживается.

Например:

production:
  database: <%= ENV['DB_HOST'] %>
  username: <%= ENV['DB_USER'] %>
  password: <%= ENV['DB_PASS'] %>

Теперь вам просто нужно настроить эти переменные env в Google AppДвигатель.

0 голосов
/ 11 декабря 2018

Я сделал это!

Для локального развития я просто установил свой env как обычно.

Если выбран режим Production, я загружаю их из Google Datastore allпары значений ключей и задайте их как переменную env.

Я делаю это в инициализаторе, для этого просто создаю файл в YourApp/config/initializers/ и помещаю в него код!Просто создайте новые объекты, скопируйте имя Kind в коде и установите идентификатор своего проекта.Поскольку ваше приложение размещено в Google, оно должно иметь доступ к хранилищу данных (необходимо установить права в IAM-менеджере)

require "google/cloud/datastore"
# Load the enviroment variables from the google datastore!
if Rails.env == "production"

  data_store = Google::Cloud::Datastore.new(
      project_id: 'YOUR_PROJECT_ID'
  )

  query = data_store.query "YOUR_KIND_NAME"
  results = data_store.run query

  puts "Set custom env variables!"
  # Set each result as an env variable
  results[0].properties.to_h.each do |key, value|
    ENV[key]= value
  end

end
0 голосов
/ 21 ноября 2018

Как указано в Рекомендации по управлению учетными данными , вы можете использовать переменную среды, указывающую на учетные данные вне исходного кода приложения, например Cloud Key Management Service .Я также рекомендую взглянуть на Секретное управление с документацией Cloud KMS , в котором объясняются решения при выборе секретного управления.

...