Наша установка vagrant включает в себя файл Vagrant, который устанавливает некоторые программы во время инициализации vm.
Для этого у нас есть архив программ, которые мы хотим установить, и некоторые установочные сценарии.
Эти программные архивы и каталоги установочных скриптов мы синхронизируем в бродячем файле.
После завершения установки у файла Vagrant появится триггер для архива несинхронизированных программ и каталога установочных скриптов.
Когда вызывается этот триггер, мы используем каталог unsyncing / vagrant, а также каталог наших архивов программного обеспечения и сценариев установки.
/ vagrant каталог успешно синхронизируется, но архив программного обеспечения и
каталог установочных скриптов не синхронизируется.
Я подозреваю, что неправильный способ синхронизации программных архивов и каталога установочных скриптов. Пожалуйста, подскажите, как правильно отменить синхронизацию программных архивов и директорий установочных скриптов.
Ниже приведен упрощенный скрипт Vagrantfile и оболочки обеспечения: -
Vagrantfile: -
SOFTWARES_DIR = "/Users/dev/bundles/softwares"
Vagrant.configure("2") do |config|
config.vm.define "sampleMachine" do |sm|
#trigger that will unsync /vagrant and /softwares directory
sm.trigger.after :up do |trigger|
trigger.name = "Unsync script"
trigger.info = "Unsyncing /vagrant, /softwares directory"
#unsyncing of /vagrant directory working fine
sm.vm.synced_folder ".", "/vagrant", disabled: true
#unsyncing previously synced /softwares directory, once the installation of softwares is done
#but it's not unsyncing
sm.vm.synced_folder "#{SOFTWARES_DIR}", "/softwares", disabled: true
end
sm.vm.box = "centos/7"
sm.vm.hostname = "machineWithUnsyncedFolders"
sm.vm.network "private_network", ip: "192.168.33.191"
#folders synced for installing softwares at the time of machine provisioning
#is there any alternate way of syncing, so that unsycing works
sm.vm.synced_folder "#{SOFTWARES_DIR}", "/softwares", id: "softwares", :nfs => true, :mount_options => ['nolock,vers=3,udp,noatime']
#this script will use files that are synced in above statement for installing softwares
sm.vm.provision "shell", path: "script.sh"
end
end
script.sh: -
echo "provisioning vm for development setup"
function installSoftwares(){
local MACHINE_NAME=`hostname`
echo "machine name is >$MACHINE_NAME<, installing below softwares :-"
ls -1 /softwares
}
installSoftwares
Когда каталоги перечислены в корневом каталоге, каталог vagrant отсутствует, но каталог программ остается, что означает, что он не синхронизирован в триггере файла Vagrant.
Ниже приведен список каталогов в корневом каталоге в vm: -
vagrant ssh
[vagrant@machineWithUnsyncedFolders ~]$ cd /
[vagrant@machineWithUnsyncedFolders /]$ ls -1
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
softwares
srv
sys
tmp
usr
var
[vagrant@machineWithUnsyncedFolders /]$
Пожалуйста, найдите ниже бродячие журналы: -
~/othervms/vagrantExamples/vbProvider/removeSyncedFolderAfterUse $
ls -a
. .. Vagrantfile script.sh
~/othervms/vagrantExamples/vbProvider/removeSyncedFolderAfterUse $
vagrant up
Bringing machine 'sampleMachine' up with 'virtualbox' provider...
==> sampleMachine: Importing base box 'centos/7'...
==> sampleMachine: Matching MAC address for NAT networking...
==> sampleMachine: Checking if box 'centos/7' version '1804.02' is up to date...
==> sampleMachine: Setting the name of the VM: removeSyncedFolderAfterUse_sampleMachine_1553489790050_21418
==> sampleMachine: Fixed port collision for 22 => 2222. Now on port 2200.
==> sampleMachine: Clearing any previously set network interfaces...
==> sampleMachine: Preparing network interfaces based on configuration...
sampleMachine: Adapter 1: nat
sampleMachine: Adapter 2: hostonly
==> sampleMachine: Forwarding ports...
sampleMachine: 22 (guest) => 2200 (host) (adapter 1)
==> sampleMachine: Booting VM...
==> sampleMachine: Waiting for machine to boot. This may take a few minutes...
sampleMachine: SSH address: 127.0.0.1:2200
sampleMachine: SSH username: vagrant
sampleMachine: SSH auth method: private key
sampleMachine:
sampleMachine: Vagrant insecure key detected. Vagrant will automatically replace
sampleMachine: this with a newly generated keypair for better security.
sampleMachine:
sampleMachine: Inserting generated public key within guest...
sampleMachine: Removing insecure key from the guest if it's present...
sampleMachine: Key inserted! Disconnecting and reconnecting using new SSH key...
==> sampleMachine: Machine booted and ready!
==> sampleMachine: Checking for guest additions in VM...
sampleMachine: No guest additions were detected on the base box for this VM! Guest
sampleMachine: additions are required for forwarded ports, shared folders, host only
sampleMachine: networking, and more. If SSH fails on this machine, please install
sampleMachine: the guest additions and repackage the box to continue.
sampleMachine:
sampleMachine: This is not an error message; everything may continue to work properly,
sampleMachine: in which case you may ignore this message.
==> sampleMachine: Setting hostname...
==> sampleMachine: Configuring and enabling network interfaces...
==> sampleMachine: Exporting NFS shared folders...
==> sampleMachine: Preparing to edit /etc/exports. Administrator privileges will be required...
The nfsd service does not appear to be running.
Starting the nfsd service
==> sampleMachine: Mounting NFS shared folders...
==> sampleMachine: Running provisioner: shell...
sampleMachine: Running: /var/folders/3y/zgjk378n4r968pv_q095ttkh0000gn/T/vagrant-shell20190325-42456-bm7v10.sh
sampleMachine: provisioning vm for development setup
sampleMachine: machine name is >machineWithUnsyncedFolders<, installing below softwares :-
sampleMachine: apache-hive-1.1.0-bin.tar.gz
sampleMachine: apache-hive-1.2.2-bin.tar.gz
sampleMachine: apache-hive-2.1.1-bin.tar.gz
sampleMachine: apache-hive-2.3.3-bin.tar.gz
sampleMachine: apache-hive-3.1.0-bin.tar.gz
sampleMachine: apache-maven-3.6.0-bin.tar.gz
sampleMachine: apache-tomcat-7.0.90.tar.gz
sampleMachine: hadoop-2.6.0.tar.gz
sampleMachine: hadoop-2.8.4.tar.gz
sampleMachine: hadoop-2.9.0.tar.gz
sampleMachine: jdk-8u171-linux-x64.tar.gz
sampleMachine: mysql-connector-java-5.1.47.tar.gz
sampleMachine: scala-2.11.12.tgz
sampleMachine: spark-2.3.1-bin-hadoop2.7.tgz
sampleMachine: spark-2.4.0-bin-hadoop2.7.tgz
==> sampleMachine: Running action triggers after up ...
==> sampleMachine: Running trigger: Unsync script...
==> sampleMachine: Unsyncing /vagrant, /softwares directory
~/othervms/vagrantExamples/vbProvider/removeSyncedFolderAfterUse $
vagrant ssh
[vagrant@machineWithUnsyncedFolders ~]$ whoami
vagrant
[vagrant@machineWithUnsyncedFolders ~]$ hostname
machineWithUnsyncedFolders
[vagrant@machineWithUnsyncedFolders ~]$ pwd
/home/vagrant
[vagrant@machineWithUnsyncedFolders ~]$ cd /
[vagrant@machineWithUnsyncedFolders /]$ pwd
/
[vagrant@machineWithUnsyncedFolders /]$ ls -1
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
softwares
srv
sys
tmp
usr
var
[vagrant@machineWithUnsyncedFolders /]$
Как правильно синхронизировать пользовательскую папку.