exécuter des commandes en tant qu'utilisateur après l'Errance de provisionnement
Il y a des commandes qui doivent être exécutées en tant qu'utilisateur normal après la mise en service initiale. Je pensais que je pouvais le faire en utilisant un script shell la commande su --login -c <command> vagrant
, mais il n'est pas d'obtenir le chemin d'accès de l'utilisateur ou d'autres paramètres d'environnement de .bashrc.
par exemple:
#!/usr/bin/env bash
su --login -c "rbenv install 2.0.0-p353" vagrant
su --login -c "rbenv global 2.0.0-p353" vagrant
su --login -c "gem update --system" vagrant
su --login -c "yes | gem update" vagrant
su --login -c "gem install rdoc" vagrant
su --login -c "gem install rails pg" vagrant
Est-il un moyen de faire cela? Peut-être qu'il a à faire avec un autre outil de mise en service comme Puppet ou Chef? J'ai pensé à créer un autre script shell que les sources de la .bashrc
, la copier dans la boîte à l'aide d'un :fichier provisioner et de l'exécution des commandes comme ça, mais il semble comme une sorte de hack.
Quelle est la bonne façon de le faire?
su -p
permettra de préserver les variables d'environnement - cela vous aide?- Je pense que ce sera le préfet à votre question à mentionner à propos de construire
Vagrant
boîte avec Ruby de l'installation, ajoutezRuby
tag et ajouter Rubis Installation sur la question du titre Comme ça => execute Ruby commandes d'installation en tant qu'utilisateur au cours de l'Errance de provisionnement
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure de le faire à l'aide de la Vagrant Shell provisioner, par exemple
La clé est de spécifier
privileged: false
afin qu'il utilise la valeur par défaut de l'utilisateur et de ne pasroot
.Je voulais documenter une solution pour les situations où le shell provisioner devez exécuter des commandes en tant qu'utilisateur non-root dans un shell de connexion:
Mettre de configuration des commandes dans un script shell (par exemple, 'bootstrap.sh'):
Puis dans votre Vagrantfile:
Vous devez remplacer le
/vagrant/bootstrap.sh
chemin le chemin d'accès correct pour votre provisionnement script à l'intérieur de l'errance de la machine.J'ai utilisé cette solution spécifiquement pour obtenir
rvm
commandes de travailler alors que l'approvisionnement avec Vagrant.J'ai essayé les Deux @jabclab et @evanhsu réponses de ne pas travailler avec moi
Pour installer
rbenv
et l'utiliser dans Les processus de configuration.À l'aide de Commandes avant d'utiliser
rbenv
commandesBootstrap.sh Fichier
Puis
VagrantFile
dossier comprendra vagrant provisionnement ligneSource pour ma Réponse de Gits par @creisor
D'une autre Manière à l'aide de
rbenv
les commandes dans les processus d'approvisionnement au les réponses à cette question