2013-06-17 4 views
5

Я работаю через несколько прецедентов с Vagrant и испытываю трудности с хорошим решением для работы с корпоративными прокси в элегантном стиле. В моем первоначальном Vagrantfile, я закончил с этой конфигурацией для apt.confЕсть ли способ защитить прокси-пользователя/пароли для конфигураций Vagrant?

user = 'me' 
pwd = 'mypwd'  
config.vm.provision :shell, :inline => "echo 'Acquire::http::Proxy \"http://#{user}:#{pwd}@proxy.corp.com:3210\";' >> /etc/apt/apt.conf" 
config.vm.provision :shell, :inline => "echo 'Acquire::https::Proxy \"http://#{user}:#{pwd}@proxy.corp.com:3210\";' >> /etc/apt/apt.conf" 
config.vm.provision :shell, :inline => "echo 'Acquire::socks::Proxy \"http://#{user}:#{pwd}@proxy.corp.com:3128\";' >> /etc/apt/apt.conf" 

Очевидно, что я хочу, чтобы избежать моего пользователя/пароль, хранящимся в Vagrantfile, так как я планирую держать его под контролем версий. Моя следующая попытка состояла в том, чтобы запросить из Vagrantfile с помощью плагина highline, но это вызывает появление приглашения во время каждой команды бродяг, а не только во время init (когда эта конфигурация будет применяться).

Я иду об этом неправильно? Если да, то какие другие варианты доступны для работы с конфигурацией прокси-сервера, которая хорошо вписывается в модель Vagrant?

ответ

6

Вы можете сделать это следующим образом:

Создайте файл с именем proxy.yml и добавить его в .gitignore так, что он не получает совершено.

Тогда внутри вашего Vagrantfile вы могли бы иметь что-то вроде этого:

if File.exist?("proxy.yml") 
    require 'yaml' 
    proxy = YAML::load(File.open('proxy.yml')) 
    config.vm.provision :shell, :inline => "echo 'Acquire::http::Proxy \"http://#{proxy['user']}:#{proxy['pass']}@proxy.corp.com:3210\";' >> /etc/apt/apt.conf" 
end 

Содержимое proxy.yml будет:

user: "username" 
pass: "password" 
+0

Спасибо, я пробовал этот подход и, похоже, работает нормально. Я рассматриваю возможность его запроса, если файл proxy.yml не работает, но я все еще обсуждаю это, так как я думаю о том, чтобы сделать эту часть процесса непрерывной интеграции, которая будет безгоральной. –

1

Вы можете использовать vagrant-proxyconf плагин:

vagrant plugin install vagrant-proxyconf 

As вы, вероятно, захотите использовать те же настройки для всех Vagra нт виртуальных машин, вы можете поместить в конфигурацию ~/.vagrant.d/Vagrantfile (который является локальным для вашей машины):

config.apt_proxy.http = "http://me:[email protected]:3210" 

Apt использует по умолчанию тот же прокси-сервер с HTTPS URI, тоже, так что вы не должны Не нужно указывать его в вашем случае.

Другой вариант - передать конфигурацию с переменными окружения. Например, на командной строке, ~/.bashrc и т.д .:

export VAGRANT_APT_HTTP_PROXY="http://me:[email protected]proxy.corp.com:3210" 

Плагин может также настроить прокси для всей виртуальной машины, а не только Apt.

Смежные вопросы