Comment utiliser vagrant dans un environnement proxy?
11 réponses
installer proxyconf:
vagrant plugin install vagrant-proxyconf
configurer votre fichier Vagrant:
config.proxy.http = "http://yourproxy:8080"
config.proxy.https = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
si votre proxy nécessite une authentification, il est préférable de définir la variable d'environnement plutôt que de stocker votre mot de passe dans le Vagrantfile. De plus, votre Vagrantfile peut être utilisé facilement par d'autres personnes qui ne sont pas derrière un mandataire.
Pour Mac/Linux (Bash)
export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf
puis
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
Pour Windows utiliser set au lieu de export.
set http_proxy=http://user:password@host:port
set https_proxy=%http_proxy%
vagrant plugin install vagrant-proxyconf
puis
set VAGRANT_HTTP_PROXY="%http_proxy%"
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
installer proxyconf résoudra ce problème, mais derrière un proxy vous ne pouvez pas installer un plugin simplement en utilisant la commande vagrant plugin install
, Bundler soulèvera une erreur.
définissez votre proxy dans votre environnement si vous utilisez un système de type unix
export http_proxy=http://user:password@host:port
ou obtenez une réponse plus détaillée ici: comment utiliser bundler derrière un proxy?
après cette mise en place proxyconf
détecter automatiquement les paramètres de votre proxy et de les injecter dans toutes vos vagrant VM
installer le plugin proxy
vagrant plugin install vagrant-proxyconf
ajouter ce conf à vous Privé/utilisateur VagrantFile (il sera exécuté pour tous vos projets):
vi $HOME/.vagrant.d/Vagrantfile
Vagrant.configure("2") do |config|
puts "proxyconf..."
if Vagrant.has_plugin?("vagrant-proxyconf")
puts "find proxyconf plugin !"
if ENV["http_proxy"]
puts "http_proxy: " + ENV["http_proxy"]
config.proxy.http = ENV["http_proxy"]
end
if ENV["https_proxy"]
puts "https_proxy: " + ENV["https_proxy"]
config.proxy.https = ENV["https_proxy"]
end
if ENV["no_proxy"]
config.proxy.no_proxy = ENV["no_proxy"]
end
end
end
maintenant en haut de votre VM !
sur un hôte Windows
ouvrir une invite CMD;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
remplacez l'adresse et le port dans les extraits ci-dessus à tout ce qui est approprié à votre situation. Le paramètre ci-dessus restera activé jusqu'à ce que vous fermiez L'invite CMD. Si cela fonctionne pour vous, envisagez de les ajouter de façon permanente à vos variables d'environnement afin que vous n'ayez pas à les définir chaque fois que vous ouvrez une nouvelle invite CMD.
sous windows , vous devez définir une variable pour spécifier les paramètres de proxy, télécharger le plugin vagrant-proxyconf: (remplacer {PROXY_SCHEME}(http:// ou https://), {PROXY_IP} et {PROXY_PORT} par les bonnes valeurs)
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
après cela, vous pouvez ajouter le plugin pour coder vos paramètres de proxy dans le fichier vagrant
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
et ensuite vous pouvez fournir la configuration.proxy.xxx paramètres dans votre Vagrantfile pour être indépendant contre les variables d'environnement
vous voudrez installer le plugin proxyconf car cela rend la configuration du proxy pour les machines invités assez simple en avant dans le VagrantFile
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
cependant, il y a encore pas mal de choses qui pourraient mal tourner. Tout d'abord, vous ne pouvez probablement pas installer de plugins vagrant lorsque vous êtes derrière le proxy. Si c'est le cas, vous devriez télécharger la source par exemple à partir de rubygems.org et installer à partir de la source
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
si vous résolvez ce problème, vous pourriez avoir la chance d'être derrière un proxy NTLM, ce qui signifie que si vous utilisez *nix sur vos machines invitées, vous avez encore du chemin à faire, parce que L'authentification NTLM n'est pas supportée nativement. Il y a plusieurs façons de résoudre cela. J'ai utilisé CNTLM pour résoudre cette partie du puzzle. Il sert de colle entre les protocoles d'autorisation standard et NTLM
pour une promenade complète, jetez un oeil à cette entrée de blog à propos réglage de vagrant derrière un proxy d'entreprise
la question ne mentionne pas le fournisseur de VM mais dans mon cas, J'utilise la boîte virtuelle dans le même environnement. Il y a une option dans la boîte virtuelle GUI que j'avais besoin d'activer pour la faire fonctionner. Est situé dans la boîte virtuelle préférences de l'application: Fichier >> Préférences... > > Proxy . Une fois que j'ai configuré ceci, j'ai pu travailler sans problème. J'espère que ce tuyau peut aussi vous aider.
si vous voulez réellement que vos configurations de proxy et vos installations de plugin soient dans votre fichier Vagrantfile, par exemple si vous faites un fichier Vagrantfile juste pour votre environnement d'entreprise et que vous ne pouvez pas avoir d'utilisateurs éditant des variables d'environnement, c'était la réponse pour moi:
ENV['http_proxy'] = 'http://proxyhost:proxyport'
ENV['https_proxy'] = 'http://proxyhost:proxyport'
# Plugin installation procedure from http://stackoverflow.com/a/28801317
required_plugins = %w(vagrant-proxyconf)
plugins_to_install = required_plugins.select { |plugin| not Vagrant.has_plugin? plugin }
if not plugins_to_install.empty?
puts "Installing plugins: #{plugins_to_install.join(' ')}"
if system "vagrant plugin install #{plugins_to_install.join(' ')}"
exec "vagrant #{ARGV.join(' ')}"
else
abort "Installation of one or more plugins has failed. Aborting."
end
end
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.proxy.http = "#{ENV['http_proxy']}"
config.proxy.https = "#{ENV['https_proxy']}"
config.proxy.no_proxy = "localhost,127.0.0.1"
# and so on
(si vous ne le faites pas, définissez-les comme variables d'environnement comme le disent les autres réponses et référez-vous à elles depuis env dans config.proxy.http(s) des directives.)
certains caractères spéciaux du mot de passe créent un problème dans proxy. Soit les échapper ou éviter d'avoir des caractères spéciaux dans le mot de passe.
dans MS Windows cela fonctionne pour nous:
set http_proxy=< proxy_url >
set https_proxy=< proxy_url >
et l'équivalent pour * nix:
export http_proxy=< proxy_url >
export https_proxy=< proxy_url >