Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change file through Vagrantfile

Tags:

vagrant

puppet

I am not sure if I should use Puppet for this. I update and install through provision.sh.

My Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu32"
  config.vm.provision :shell, path: './provision.sh'  
  config.vm.network "public_network"
end

provision.sh

apt-get update
apt-get -y install build-essential git-core python-software-properties nodejs
apt-get -y install vim
apt-get -y install curl
curl https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash

Now I need to add the following to ~/.bashrc at the top. Or I can prepare a file .bashrc and replace it with ~/.bashrc

export RBENV_ROOT="${HOME}/.rbenv"

if [ -d "${RBENV_ROOT}" ]; then
  export PATH="${RBENV_ROOT}/bin:${PATH}"
  eval "$(rbenv init -)"
fi

Then run source .bashrc

Then run following commands.

rbenv install 2.0.0-p247
rbenv rehash
gem install bundler
bundle
sudo apt-get install libpq-dev 
gem install pg -v '0.15.0'
like image 993
shin Avatar asked Nov 08 '13 00:11

shin


People also ask

What type of file is a Vagrantfile?

A Vagrantfile is a Ruby file that instructs Vagrant to create, depending on how it is executed, new Vagrant machines or boxes. You can see a box as a compiled Vagrantfile. It describes a type of Vagrant machines. From a box, we can create new Vagrant machines.

Which programming language is used to build a Vagrantfile?

Vagrant is written in Ruby, but it can be used in projects written in other programming languages such as PHP, Python, Java, C#, and JavaScript. Since version 1.6, Vagrant natively supports Docker containers, which in some cases can serve as a substitute for a fully virtualized operating system.

How do I open a vagrant file?

Click “Load” and browse to your project folder all the way to **\\. vagrant\machines\default\virtualbox** . Switch to see “all files”, select “private_key” and click Open.


1 Answers

You can do this in your provision.sh script. Vagrant automatically shares the directory where your Vagrantfile lives with the guest VM as the /vagrant folder.

Create the .bashrc file as you want it, and put it in the same directory as your Vagrantfile. I would leave out the '.' and call it bashrc so you don't loose track of it.

Then you can add to your provision.sh script:

cp /vagrant/bashrc ~/.bashrc
source ~/.bashrc

Note: the bash provisioning runs as the root user, you'll have to modify this a bit if you want to use it as a non-root user.

cp /vagrant/bashrc /home/<username>/.bashrc
su - <username> -c "<command to run as user>"
like image 94
mattwise Avatar answered Sep 25 '22 07:09

mattwise