不在Vagrant文件中存储FTP密码(Vagrant推送FTP策略)

不在Vagrant文件中存储FTP密码(Vagrant推送FTP策略),vagrant,Vagrant,我正在开发一个小网站。我将vagrant用于开发环境,并希望将其用于部署到生产环境。说有流浪者推FTP策略 配置: config.push.define "ftp" do |push| push.host = "ftp.company.com" push.username = "username" push.password = "password" end 用法: vagrant push 这对我来说已经足够了,但阻止我的是将ftp主机、用户名和密码存储在将要进入我的版本控制系

我正在开发一个小网站。我将vagrant用于开发环境,并希望将其用于部署到生产环境。说有流浪者推FTP策略

配置:

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

vagrant push
这对我来说已经足够了,但阻止我的是将ftp主机、用户名和密码存储在将要进入我的版本控制系统的文件中,这是一种糟糕的做法


您能为这种情况提供一些解决方法吗?

生成哈希密码并存储它

openssl passwd -1 "Your_password"

生成哈希密码并存储它

openssl passwd -1 "Your_password"

我使用配置文件找到了解决方案,我将敏感数据移动到单独的文件中。我把它叫做
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

它对我来说很好。

我使用配置文件找到了解决方案,我将敏感数据移动到单独的文件中。我把它叫做
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

这对我来说很好。

一个简单的解决方案是使用环境变量。不以明文形式存储密码具有重要的好处

流浪汉档案:

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命令行工具从我的vault检索密码:

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

一个简单的解决方案是使用环境变量。不以明文形式存储密码具有重要的好处

流浪汉档案:

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命令行工具从我的vault检索密码:

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