我正在开发一个小网站。我使用vagrant作为开发环境,并希望使用它来部署到生产环境中。Vagrant docs说有一种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中,这将进入我的版本控制系统,这是一个糟糕的做法。
对于这种情况,你能给出一些解决办法吗?
发布于 2017-02-01 09:38:18
生成哈希密码并存储
openssl passwd -1 "Your_password"发布于 2017-02-01 16:47:23
我使用配置文件找到了解决方案。Inspired with this question我把我的敏感数据移到了单独的文件里我将其命名为ftp.yml并添加到.gitignore中
ftp.yml
ftp_host: "host"
ftp_user: "username"
ftp_pass: "password".gitignore
ftp.ymlVagrantfile
# 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它对我来说工作得很好。
发布于 2020-03-13 05:07:33
一个简单的解决方案是使用环境变量。它有一个重要的好处,那就是不用明文存储密码。
Vagrantfile:
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 pushhttps://stackoverflow.com/questions/41970465
复制相似问题