Le réseau de ma société utilise un proxy. Alors, quand j'utilise vagrant up
, il m'a montré une erreur de permission 401.
Comment puis-je faire quelques réglages pour utiliser vagabond?
Installez proxyconf:
vagrant plugin install vagrant-proxyconf
Configurez votre Vagrantfile:
config.proxy.http = "http://yourproxy:8080"
config.proxy.https = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
Si votre proxy requiert 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 fichier Vagrant. De plus, votre Vagrantfile peut être utilisé facilement par d’autres personnes qui ne sont pas derrière un proxy.
Pour Mac/Linux (en Bash)
export http_proxy="http://user:password@Host:port"
export https_proxy="http://user:password@Host:port"
vagrant plugin install vagrant-proxyconf
ensuite
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
Pour Windows, utilisez set au lieu d'export.
set http_proxy=http://user:password@Host:port
set https_proxy=%http_proxy%
vagrant plugin install vagrant-proxyconf
ensuite
set VAGRANT_HTTP_PROXY="%http_proxy%"
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
L'installation de 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 va générer une erreur.
définir votre proxy dans votre environnement si vous utilisez un système comme unix
export http_proxy=http://user:password@Host:port
ou obtenez une réponse plus détaillée ici: Comment utiliser un bundle derrière un proxy?
après cette configuration proxyconf
Détectez automatiquement vos paramètres de proxy et injectez-les dans toutes vos VM vagrant
installer le plugin proxy
vagrant plugin install vagrant-proxyconf
ajoutez cette conf à votre VagrantFile privé/utilisateur (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 place votre VM!
Sur un hôte Windows
ouvrez 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 par tout ce qui convient à votre situation. Ce qui précède restera activé jusqu'à la fermeture de l'invite CMD. Si cela vous convient, envisagez de les ajouter définitivement aux variables d’environnement afin de ne pas avoir à 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 du proxy, téléchargez le plug-in vagrant-proxyconf: (remplacez {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 en dur vos paramètres de proxy dans le fichier vagrant.
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
et vous pouvez ensuite fournir des paramètres config.proxy.xxx indépendants dans votre Vagrantfile par rapport aux variables de paramètres d'environnement
Vous voudrez installer le plugin proxyconf car cela facilite la configuration du proxy pour les machines invitées dans 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 se passer. Premièrement, vous ne pouvez probablement pas installer de plugins vagrant lorsque vous êtes derrière le proxy. Si tel est le cas, vous devez télécharger la source, par exemple. de rubygems.org et installer depuis 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 ordinateurs invités, vous avez encore du chemin à faire, car l'authentification NTLM n'est pas prise en charge de manière native. Il existe de nombreuses façons de résoudre cela. J'ai utilisé CNTLM pour résoudre cette partie du puzzle. Il agit comme un liant entre les protocoles d'autorisation standard et NTLM
Pour une visite complète, jetez un œil à cette entrée de blog sur la configuration de vagabond derrière un proxy d'entreprise
La question ne mentionne pas le fournisseur VM, mais dans mon cas, j'utilise Virtual Box dans le même environnement. Il y a une option dans l'interface graphique de Virtual Box que je devais activer pour la rendre est situé dans les préférences de l’application Virtual Box: Fichier >> Préférences ... >> Proxy. Une fois cette configuration configurée, j’ai pu travailler sans problèmes. J'espère que cette astuce peut également vous aider .
Certains caractères spéciaux dans le mot de passe créent un problème dans le proxy. Evitez-les ou évitez d’avoir des caractères spéciaux dans le mot de passe.
Si vous souhaitez réellement que vos configurations de proxy et vos installations de plug-in fassent partie de votre Vagrantfile, par exemple si vous créez un fichier Vagrantfile uniquement pour votre environnement d'entreprise et que vous ne pouvez pas obliger les utilisateurs à modifier les variables d'environnement, voici ma réponse:
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 simplement comme des variables d'environnement, comme le disent les autres réponses, et faites-les référence depuis env dans les directives config.proxy.http (s).)
Sous 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 >
Dans PowerShell, vous pouvez définir les variables d’environnement http_proxy et https_proxy comme suit:
$env:http_proxy="http://www-cache-nrs.si.fr.intraorange:3128"
$env:https_proxy="http://www-cache-nrs.si.fr.intraorange:3128"