Créer un environnement linux variable à l'aide de vagrant provisioner
J'ai vagrant Ubuntu à des fins de développement. J'ai utilisé un script shell provisioner à télécharger/installer mes dépendances, et de créer des alias, mais j'ai frappé un mur dans l'utilisation de la provisioner pour créer des variables d'environnement (qui sont utilisés pour plusieurs drapeaux au sein de mon projet). A l'origine, j'avais quelque chose comme:
export MY_VAR='value'
Dans mon provisioner script, mais que vous ne pouvez pas ajouter les variables d'environnement de l'intérieur d'un script shell en cours d'exécution normalement. Juste assez, donc j'ai plutôt essayé de changer ma ligne de la Vagrantfile à:
config.vm.provision "shell", inline: “source setup.sh"
Qui ne résout pas le problème. Les variables d'environnement n'étions toujours pas là. J'ai essayé d'ajouter les exportations directement en ligne:
config.vm.provision "shell", inline: “export MY_VAR='value'"
Pas de chance. Toujours pas de mondial de l'environnement quand je ssh ed dans. Est-il un moyen d'utiliser le shell script pour créer un environnement bash variable, ou est-il temps de lancer la serviette sur le shell de ravitailleurs et apprendre le chef?
Vous devez vous connecter pour publier un commentaire.
Vous devriez avoir le provisionnement script ajouter une ligne à votre .profil:
Sur la connexion, l' .script de profil sera lu par bash et la variable sera réglé.
echo "export VAR=value" >> ~/.bashrc
De voir que l'on a accepté la réponse, en effet, ajouter un
export VAR=value
pour votre .profil (ou .bashrc) fichier chaque fois que vous exécutezvagrant provision
, voici comment j'ai ajouté des variables d'environnement rapidementVentilation:
source ~/.profile
: charger le courant.profile
fichier[ -z "$VAR"]
: vérifier si oui ou nonVAR
est définie, si ce n'est:echo "export VAR=value" >> ~/.profile
: ajouter la ligne d'export de.profile
Mettant tous ensemble:
J'utilise normalement puphpet pour mon errance des boîtes, de sorte que j'ai tendance à coller à la structure de répertoire qu'il utilise, ce qui signifie de mettre mon provisionnement script dans
puphpet/shell/*
(par rapport à laVagrantfile
fichier). Dans ce fichier, vous pouvez ajouter autant de variables d'environnement que vous aimez:Si vous souhaitez définir les variables d'environnement à une valeur spécifique, même si ils sont définis, vous pouvez remplacer
[ -z "$VAR" ]
avec ce (Que Maks3w suggéré):Puis il suffit de l'ajouter à votre Vagrantfile:
Qui devrait faire l'affaire...
[ $VAR != "value" ]
peu, puisque la variable env pourrait peut avoir été modifié par l'utilisateur de la vbox pour des raisons de développement, et il pourrait ne pas vouloir les valeurs à modifier par la mise en serviceCette réponse montre comment ajouter des variables d'environnement simple modification d'
VagrantFile
à l'aide de Ruby HEREDOC (Ici doc) syntaxeRemarque: La fermeture
SCRIPT
doit être le premier caractère de sa propre ligneVoici comment je l'ai eu
$GOPATH
de travail:L'utilisation de guillemets simples et
$HOME
(au lieu de~
) étaient nécessaires---je ne pouvais pas le faire fonctionner autrement.Je cherchais la même chose. Je voulais mettre en
http(s)_proxy
variables d'environnement dans le Vagrantfile. La condition était que je peux modifier ces variables, à tout moment etvagrant reload
de les appliquer.Enfin, j'ai trouvé la solution:
0) /etc/profile.d/*.sh scripts sont exécutés au démarrage du shell bash
1) supprime tous les éléments de myvars.sh
2) définit la première variable
3) définit la deuxième variable
En raison de exécuter: "toujours" je peux ajouter/supprimer des variables et après
vagrant reload
ils sont appliqués.Dans CentOs7 vous devez placer env vars sous
/etc/profile.d/
Cela a fonctionné dans mon cas: