On Wednesday, 30 August 2017 01:06:35 UTC+3, Alvaro Miranda Aguilera wrote:
>
> Please share back what you got working, so other people can learn from it.
>
> Sharing is caring :D
>

 Hi Alviro,

The code you posted provoked errors, but it did give me a starting point 
from which to work out a solution. 

# cp -ap /vagrant/nginx/* /etc/nginx/ ## should be:
cp -ap /vagrant/nginx/. /etc/nginx/
# chkconfig nginx on
## chkconfig is not shipped with Ubuntu since 12.04,
## if my research is accurate. Should be:
service nginx start


To help others who may not be using the custom package that I have, I've 
prepared a Vagrantfile that can be used after a simple `vagrant init` in an 
empty folder:

# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<SCRIPT
# Install nginx.
apt-get -y update
apt-get -y install nginx
service nginx start

# Copy the nginx and www folders to the /vagrant folder, so that they
# can be synced with the host. The www and nginx folders will be
# created automatically. They don't need to exist on the host yet.
cp -ap /etc/nginx/. /vagrant/nginx/
cp -ap /var/www/. /vagrant/www/

# Syncing must be done as a second step. Uncomment the lines beginning
# #*# below after the first `vagrant up`, then use `vagrant reload`
SCRIPT


Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"

  #Run a provisioning script on first launch
  config.vm.provision "shell", inline: $script

  ## Sync the www and nginx folders, so that they can be edited on
  ## the host machine.
  ## Uncomment the next line only after the box has been provisioned,
  ## otherwise the host's nginx/folder will overwrite the
  ## guest's installation.
  #*#config.vm.synced_folder 'www', '/var/www'
  #*#config.vm.synced_folder 'nginx', '/etc/nginx'

  ## On the first `vagrant up`, Vagrant will automatically create a
  ## /vagrant file at the root of the guest, and sync it with the
  ## folder that contains this Vagrantfile. This is necessary so that
  ## the command `cp -ap /etc/nginx/. /vagrant/nginx/` can copy the
  ## contents of the /etc/nginx/ folder to the host.
  ## 
  ## On subsequent launches, only the ./www/ and ./nginx/ folders need
  ## to be synced, so you can uncomment the line below.
  #*#config.vm.synced_folder '.', '/vagrant', disabled: true
end 

This installed nginx and copied the contents of the /etc/nginx/ and 
/var/www/ directories to the host. I then manually uncommented three lines 
(as shown in *bold* below) and called vagrant reload.

# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<SCRIPT
# Install nginx.
apt-get -y update
apt-get -y install nginx
service nginx start

# Copy the nginx and www folders to the /vagrant folder, so that they
# can be synced with the host. The www and nginx folders will be
# created automatically. They don't need to exist on the host yet.
cp -ap /etc/nginx/. /vagrant/nginx/
cp -ap /var/www/. /vagrant/www/

# Syncing must be done as a second step. Uncomment the lines beginning
# #*# below after the first `vagrant up`, then use `vagrant reload`
SCRIPT


Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"

  #Run a provisioning script on first launch
  config.vm.provision "shell", inline: $script

  ## Sync the www and nginx folders, so that they can be edited on
  ## the host machine.
  ## Uncomment the next line only after the box has been provisioned,
  ## otherwise the host's nginx/folder will overwrite the
  ## guest's installation.
  *config*
*.vm.synced_folder 'www', '/var/www'  config.vm.synced_folder 'nginx', 
'/etc/nginx'*

  ## On the first `vagrant up`, Vagrant will automatically create a
  ## /vagrant file at the root of the guest, and sync it with the
  ## folder that contains this Vagrantfile. This is necessary so that
  ## the command `cp -ap /etc/nginx/. /vagrant/nginx/` can copy the
  ## contents of the /etc/nginx/ folder to the host.
  ## 
  ## On subsequent launches, only the ./www/ and ./nginx/ folders need
  ## to be synced, so you can uncomment the line below.
*  config*
*.vm.synced_folder '.', '/vagrant', disabled: true*end

It seems cumbersome to have to make these manual changes and to run vagrant 
reload. Is it possible to modify this script so that the 
config.vm.synced_folder calls are made only if /etc/nginx/ already exists, 
and vagrant reload is called automatically if not?

Having a single, unchanging file that gets read twice would make sharing 
the Vagrant package much more straightforward.

Thanks in advance for your ideas,

James


-- 
This mailing list is governed under the HashiCorp Community Guidelines - 
https://www.hashicorp.com/community-guidelines.html. Behavior in violation of 
those guidelines may result in your removal from this mailing list.

GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
--- 
You received this message because you are subscribed to the Google Groups 
"Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vagrant-up/565994ce-4612-4cfc-ae01-48a12983e5b2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to