Не хранить пароль FTP в Vagrantfile (стратегия Vagrant push FTP)

Я разрабатываю небольшой сайт. Я использую vagrant для среды разработки и хочу использовать его для развертывания в рабочей среде. Документы Vagrant говорят, что существует стратегия Vagrant push FTP.

Конфигурация:

config.push.define "ftp" do |push|
  push.host = "ftp.company.com"
  push.username = "username"
  push.password = "password"
end

Применение:

vagrant push

Этого вполне достаточно для меня, но меня останавливает сохранение ftp-хоста, имени пользователя и пароля в Vagrantfile, который идет в мою систему контроля версий, и это плохая практика.

Можете ли вы дать какое-либо обходное решение для этого случая?


person user3192683    schedule 01.02.2017    source источник


Ответы (3)


Сгенерируйте хешированный пароль и сохраните его

openssl passwd -1 "Your_password"
person Avinash    schedule 01.02.2017

Я нашел решение, используя файл конфигурации. Вдохновленный этим вопросом, я переместил свои конфиденциальные данные в отдельный файл. Я назвал его ftp.yml и добавил к .gitignore

ftp.yml

ftp_host: "host"
ftp_user: "username"
ftp_pass: "password"

.gitignore

ftp.yml

бродячий файл

# loading FTP config
require 'yaml'
settings = YAML.load_file 'ftp.yml'

Vagrant.configure("2") do |config|

# vm config omitted

    config.push.define "ftp" do |push|
      push.host = settings['ftp_host']
      push.username = settings['ftp_user']
      push.password = settings['ftp_pass']
    end
end

Это сработало для меня.

person user3192683    schedule 01.02.2017

Простое решение — использование переменной окружения. Важное преимущество заключается в том, что пароль не хранится в открытом виде.

Бродячий файл:

config.push.define "ftp" do |push|
  push.host = "ftp.company.com"
  push.username = "username"
  push.password = ENV["FTP_PASSWORD"]
end

И экспортируйте пароль в переменную среды перед вызовом vagrant:

export FTP_PASSWORD='super_secret'
vagrant push

Лично я использую инструмент командной строки 1Password для извлечения пароля из моего хранилища:

export FTP_PASSWORD=$(op get item ftp.company.com | jq '.details.fields[] | \
                        select(.designation=="password").value' -r)
vagrant push
person Jean-Pierre Matsumoto    schedule 12.03.2020