Tidak menyimpan kata sandi FTP di Vagrantfile (strategi Vagrant push FTP)

Saya sedang mengembangkan situs kecil. Saya menggunakan gelandangan untuk lingkungan pengembangan dan ingin menggunakannya untuk penerapan ke produksi. Dokumen Vagrant menyatakan bahwa ada strategi Vagrant push FTP.

Konfigurasi:

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

Penggunaan:

vagrant push

Itu cukup bagi saya, tetapi hal yang menghentikan saya adalah menyimpan host ftp, nama pengguna dan kata sandi di Vagrantfile yang masuk ke Sistem Kontrol Versi saya dan ini adalah praktik yang buruk.

Bisakah Anda memberikan solusi untuk kasus ini?


person user3192683    schedule 01.02.2017    source sumber


Jawaban (3)


Hasilkan kata sandi hash dan simpan

openssl passwd -1 "Your_password"
person Avinash    schedule 01.02.2017

Saya menemukan solusi menggunakan file konfigurasi. Terinspirasi dengan pertanyaan ini, saya memindahkan data sensitif saya ke file terpisah. Saya menyebutnya ftp.yml dan menambahkan ke .gitignore

ftp.yml

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

.gitignore

ftp.yml

file gelandangan

# 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

Ini bekerja dengan baik untukku.

person user3192683    schedule 01.02.2017

Solusi sederhana adalah penggunaan variabel lingkungan. Ini memiliki manfaat penting untuk tidak menyimpan kata sandi dalam teks yang jelas.

file gelandangan:

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

Dan ekspor kata sandi dalam variabel lingkungan sebelum panggilan ke gelandangan:

export FTP_PASSWORD='super_secret'
vagrant push

Secara pribadi, saya menggunakan alat baris perintah 1Password untuk mengambil kata sandi dari brankas saya:

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