diff --git a/CHANGELOG.md b/CHANGELOG.md index 9590f7c94..f40286d44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Finally, check that your custom modifications haven't been added in the official * Minor refactors and colours added to the main provisioner * Improved output of backup and import scripts * SHDocs added to core provisioners +* A new `/srv/vvv` folder for files created inside the VM related to provisioning ( #2328 ) * Improved PHP configuration file installation * Sites can now define composer create-project/install/update commands to run in their folders section in addition to the git options added in v3.5.1 * Adds a `vagrant` command inside the virtual machine to tell users they are still inside the VM and need to exit diff --git a/Vagrantfile b/Vagrantfile index bbb63cb0c..ffe67b757 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -510,7 +510,8 @@ Vagrant.configure('2') do |config| # Disable the default synced folder to avoid overlapping mounts config.vm.synced_folder '.', '/vagrant', disabled: true - config.vm.provision 'file', source: "#{vagrant_dir}/version", destination: '/home/vagrant/version' + config.vm.provision "setup-srv-vvv", type: 'shell', keep_color: true, inline: "mkdir -p /srv/vvv" + config.vm.provision 'file', source: "#{vagrant_dir}/version", destination: '/srv/vvv/version' # /srv/database/ # @@ -686,7 +687,7 @@ Vagrant.configure('2') do |config| unless Vagrant::Util::Platform.windows? if Process.uid == 0 # the VM should know if vagrant was ran by a root user or using sudo - config.vm.provision "flag-root-vagrant-command", type: 'shell', keep_color: true, inline: "mkdir -p /vagrant && touch /vagrant/provisioned_as_root" + config.vm.provision "flag-root-vagrant-command", type: 'shell', keep_color: true, inline: "mkdir -p /srv/vvv && touch /srv/vvv/provisioned_as_root" end end diff --git a/provision/provision-helpers.sh b/provision/provision-helpers.sh index 57f6449ad..93942579e 100755 --- a/provision/provision-helpers.sh +++ b/provision/provision-helpers.sh @@ -17,11 +17,18 @@ export BLUE="\033[0;38;5;4m" # 33m" export PURPLE="\033[0;38;5;5m" # 129m" export CRESET="\033[0m" - -VVV_CONFIG=/vagrant/vvv-custom.yml -if [[ -f /vagrant/config.yml ]]; then - VVV_CONFIG=/vagrant/config.yml -fi +configs=( + /srv/vvv/config.yml + /vagrant/config.yml + /vagrant/vvv-config.yml +) +VVV_CONFIG=/srv/vvv/config.yml +for item in ${configs[*]}; do + if [[ -f $item ]]; then + VVV_CONFIG=$item + break + fi +done export VVV_CONFIG export VVV_CURRENT_LOG_FILE="" @@ -165,7 +172,7 @@ export -f network_check # # @arg $1 string name of the provisioner function log_to_file() { - local date_time=$(cat /vagrant/provisioned_at) + local date_time=$(cat /srv/vvv/provisioned_at) local logfolder="/var/log/provisioners/${date_time}" local logfile="${logfolder}/${1}.log" mkdir -p "${logfolder}" diff --git a/provision/provision-site.sh b/provision/provision-site.sh index c363a6ce0..96dbe6e41 100755 --- a/provision/provision-site.sh +++ b/provision/provision-site.sh @@ -26,8 +26,6 @@ VVV_HOSTS="" SUCCESS=1 -VVV_CONFIG=/vagrant/config.yml - . "/srv/provision/provisioners.sh" # @description Takes 2 values, a key to fetch a value for, and an optional default value diff --git a/provision/provision.sh b/provision/provision.sh index 2f10746bc..ce7953868 100755 --- a/provision/provision.sh +++ b/provision/provision.sh @@ -9,14 +9,17 @@ . "/srv/provision/core/env/homedir/.bash_aliases" # cleanup -mkdir -p /vagrant -rm -rf /vagrant/failed_provisioners -mkdir -p /vagrant/failed_provisioners +mkdir -p /srv/vvv +if [[ ! -d /vagrant ]]; then + ln -s /srv/vvv /vagrant +fi +rm -rf /srv/vvv/failed_provisioners +mkdir -p /srv/vvv/failed_provisioners -rm -f /vagrant/provisioned_at -rm -f /vagrant/version -rm -f /vagrant/vvv-custom.yml -rm -f /vagrant/config.yml +rm -f /srv/vvv/provisioned_at +rm -f /srv/vvv/version +rm -f /srv/vvv/vvv-custom.yml +rm -f /srv/vvv/config.yml if [ -x "$(command -v ntpdate)" ]; then echo " * Syncing clocks" @@ -29,17 +32,15 @@ touch /vagrant/provisioned_at echo $(date "+%Y.%m.%d_%H-%M-%S") > /vagrant/provisioned_at # copy over version and config files -cp -f /home/vagrant/version /vagrant -cp -f /srv/config/config.yml /vagrant - -chmod 0644 /vagrant/config.yml -chmod 0644 /vagrant/version -chmod 0644 /vagrant/provisioned_at +cp -f /home/vagrant/version /srv/vvv +cp -f /srv/config/config.yml /srv/vvv -# change ownership for /vagrant folder -chown -R vagrant:vagrant /vagrant +sudo chmod 0644 /srv/vvv/config.yml +sudo chmod 0644 /srv/vvv/version +sudo chmod 0644 /srv/vvv/provisioned_at -export VVV_CONFIG=/vagrant/config.yml +# change ownership for /srv/vvv folder +sudo chown -R vagrant:vagrant /srv/vvv # initialize provisioner helpers a bit later . "/srv/provision/provisioners.sh" @@ -64,9 +65,6 @@ export VVV_PACKAGE_REMOVAL_LIST=() . "/srv/provision/core/wp-cli/provision.sh" . "/srv/provision/core/phpcs/provision.sh" -### SCRIPT -#set -xv - vvv_hook init if ! network_check; then @@ -96,7 +94,5 @@ vvv_hook after_packages vvv_info " * Finalizing" vvv_hook finalize -#set +xv # And it's done - provisioner_success diff --git a/provision/provisioners.sh b/provision/provisioners.sh index 4a7f1f7aa..7da21a37b 100755 --- a/provision/provisioners.sh +++ b/provision/provisioners.sh @@ -18,7 +18,7 @@ VVV_PROVISIONER_RUNNING="" # @arg $1 string Name of the provisioner function provisioner_begin() { VVV_PROVISIONER_RUNNING="${1:-${FUNCNAME[1]}}" - touch "/vagrant/failed_provisioners/provisioner-${VVV_PROVISIONER_RUNNING}" + touch "/srv/vvv/failed_provisioners/provisioner-${VVV_PROVISIONER_RUNNING}" log_to_file "provisioner-${VVV_PROVISIONER_RUNNING}" vvv_success " ▷ Running the '${VVV_PROVISIONER_RUNNING}' provisioner..." start_seconds="$(date +%s)" @@ -33,7 +33,7 @@ function provisioner_end() { local elapsed="$(( end_seconds - start_seconds ))" if [[ $PROVISION_SUCCESS -eq "0" ]]; then vvv_success " ✔ The '${VVV_PROVISIONER_RUNNING}' provisioner completed in ${elapsed} seconds." - rm -f "/vagrant/failed_provisioners/provisioner-${VVV_PROVISIONER_RUNNING}" + rm -f "/srv/vvv/failed_provisioners/provisioner-${VVV_PROVISIONER_RUNNING}" else vvv_error " ! The '${VVV_PROVISIONER_RUNNING}' provisioner ran into problems, the full log is available at '${VVV_CURRENT_LOG_FILE}'. It completed in ${elapsed} seconds." fi diff --git a/provision/tests/provisioners.sh b/provision/tests/provisioners.sh index b2418cd5a..489a5a460 100644 --- a/provision/tests/provisioners.sh +++ b/provision/tests/provisioners.sh @@ -155,10 +155,18 @@ function provision_main() { vvv_run_provisioner /srv/provision/provision.sh fi - # refresh VVV_CONFIG, as the main provisioner actually creates the /vagrant/config.yml - VVV_CONFIG=/vagrant/vvv-custom.yml - if [[ -f /vagrant/config.yml ]]; then - VVV_CONFIG=/vagrant/config.yml - fi + # refresh VVV_CONFIG, as the main provisioner actually creates the /srv/vvv/config.yml + configs=( + /srv/vvv/config.yml + /vagrant/config.yml + /vagrant/vvv-config.yml + ) + VVV_CONFIG=/srv/vvv/config.yml + for item in ${configs[*]}; do + if [[ -f $item ]]; then + VVV_CONFIG=$item + break + fi + done export VVV_CONFIG }