web-dev-qa-db-fra.com

Comment utiliser vagrant dans un environnement proxy?

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?

87
ithelloworld

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"
94
Alejandro Moreno

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
80
rjdkolb

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

53
pingween

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!

27
quazardous

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.

11
snacks

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

9
l.cotonea

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

4
Rune FS

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 .

2
James

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.

1
ernitingoel

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).)

1
eis

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 >
0
csoria

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"
0
kal3v