Grunt takes all CPU resources from Vagrant VM and VM stops responding - macos

I ran Vagrant/VirtualBox on my MacBook Pro
OS: Yosemite 10.10.5
Model Identifier: MacBookPro11,1
Processor Name: Intel Core i5
Processor Speed: 2.4 GHz
Memory: 8 GB
After few requests it stops responding and I can't even halt it or ctrl + c it via terminal. All I can do is go to VirtualBox and to shut down it.
Installed versions:
Vagrant 1.7.4
VirtualBox 5.0.4
grunt-cli v0.1.13
grunt v0.4.5
Vagrantfile:
$ProjectName = 'projectdev'
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.box_url = "https://atlas.hashicorp.com/ubuntu/boxes/trusty64"
config.vm.hostname = "#{$ProjectName}"
config.vm.network "forwarded_port", guest: 80, host: 8888
config.vm.network "forwarded_port", guest: 5432, host: 15432
config.vm.network :private_network, ip: "10.0.0.10"
config.vm.synced_folder ".", "/vagrant"
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
#config.vm.provider "virtualbox" do |v|
#v.gui = true
#end
config.vm.provision :shell, path: "infra/bootstrap.sh"
end
Vagrant::Config.run do |config|
#config.vm.share_folder "bootstrap", "/mnt/bootstrap", ".", :create => true
config.vm.provision :shell, :path => "infra/postgresql.sh"
# PostgreSQL Server port forwarding
#config.vm.forward_port 5432, 15432
end
Thats how top looked at the moments its stopped responding
top - 18:58:37 up 3 min, 2 users, load average: 3.55, 1.31, 0.48
Tasks: 140 total, 2 running, 138 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.6 us, 74.3 sy, 0.0 ni, 22.9 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem: 2049900 total, 930712 used, 1119188 free, 19608 buffers
KiB Swap: 0 total, 0 used, 0 free. 170280 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1784 vagrant 20 0 756756 104628 7476 R 150.7 5.1 2:09.88 grunt
32 root 20 0 0 0 0 S 0.3 0.0 0:00.14 kworker/0:1
1921 vagrant 20 0 107696 2184 1180 S 0.3 0.1 0:00.06 sshd
1936 vagrant 20 0 23692 1700 1168 R 0.3 0.1 0:00.11 top
1 root 20 0 33640 2996 1492 S 0.0 0.1 0:01.26 init
Is there anything to be done for Grunt to take less resources and not kill my VM ?

So seems I found an answer to my problem!
On MACs you should turn NFS SYNCED FOLDERS on
Use all CPU cores
Don't skimp on memmory for Virtual Machine ;)
Also, I haven't tried this yet, but may be also a good optimisation!
grunt-watch-slow

Related

Connection from DB client tool (Datagrip) to Vagrant

I am having trouble connecting to Vagrant from the DB client tool (Datagrip).
If you know anything about this, we would appreciate it if you could let us know.
connection information
→ vagrant ssh-config
Host default
HostName 127.0.0.1
User bargee
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/〇〇/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
SSH Connection with Terminal
$ ssh bargee#127.0.0.1 -p 2222 -i /Users/〇〇/.vagrant/machines/default/virtualbox/private_key
Welcome to Barge 2.15.0, Docker version 20.10.8, build 75249d8
[bargee#barge app]$
I was able to do it.
ssh connection on Datagrip
↓
Unable to connect.
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ailispaw/barge"
config.vm.box_version = "2.15.0"
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.synced_folder "./", "/app"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.cpus = 4
vb.memory = 4096
vb.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
end
config.vm.provision "shell", inline: <<-SHELL
/etc/init.d/docker restart v20.10.8
wget "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-$(uname -s)-$(uname -m)" -O /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
if ! grep -q "cd /app" /home/bargee/.bashrc ; then
echo "cd /app" >> /home/bargee/.bashrc
fi
SHELL
end

Why is the default Vagrant shared folder empty?

The /vagrant directory is empty. It should contain the workspace where my Vagrantfile is located. I can cd /vagrant, but it's empty.
Vagrantfile
VAGRANTFILE_API_VERSION = '2'
VAGRANT_BOX_NAME = 'nomades.local'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'bento/centos-6.7'
config.vm.box_check_update = false
config.vm.hostname = VAGRANT_BOX_NAME
config.vm.define VAGRANT_BOX_NAME do |dev|
dev.vm.provider 'virtualbox' do |v|
v.name = VAGRANT_BOX_NAME
v.memory = 512
v.cpus = 2
v.gui = true
v.customize ['modifyvm', :id, '--ioapic', 'on', '--vram', '16']
end
# Réseau (penser à configurer son /etc/hosts pointant vers cette ip)
dev.vm.network 'private_network', ip: '192.168.12.2'
# In order to use VPN
# dev.vm.network 'public_network', ip: '172.32.0.101'
# Provision
dev.vm.provision "ansible" do |ansible|
ansible.groups = {
'vagrant' => [VAGRANT_BOX_NAME],
'servers' => [VAGRANT_BOX_NAME],
}
ansible.playbook = 'provision/provision.yml'
ansible.sudo = true
end
end
end
This happens when vagrant can't modify /etc/fstab and tries to mount the current working directory from the host. Make sure it has permissions to mount the directory.
Run this on the Vagrant guest VM, then logout.
$ sudo /etc/init.d/vboxadd setup
Run this on the host.
$ sudo vagrant reload
$ vagrant ssh
This issue happened to me after manually rebooting the VM (i.e. sudo reboot).
Restarting the machine from the host solved the problem for me:
$ vagrant halt
$ vagrant up
you need to define below line in the vagrantfile, . means current directory
config.vm.synced_folder ".", "/vagrant"

Error setting VM Storage size in Vagrant

I'm following this link https://github.com/acfreitas/oraclebox
I tried to include the code for setting up VM storage size on my Vagrant.
But i'm getting error like below.
==> vagrant: Running provisioner: shell...
vagrant: Running: C:/Users/skywork/AppData/Local/Temp/vagrant-shell20151111-11660-1l3hhe.sh
==> vagrant: ++ '[' grep -ic 64GB /sizeDisk ']'
==> vagrant: /tmp/vagrant-shell: line 4: [: too many arguments
==> vagrant: ++ sudo fdisk -u /dev/sdb
==> vagrant: Welcome to fdisk (util-linux 2.23.2).
==> vagrant:
==> vagrant: Changes will remain in memory only, until you decide to write them.
==> vagrant: Be careful before using the write command.
==> vagrant:
==> vagrant:
==> vagrant: Command (m for help): Partition type:
==> vagrant: p primary (0 primary, 0 extended, 4 free)
==> vagrant: e extended
==> vagrant: Select (default p): Partition number (1-4, default 1): First sector (2048-31457279, default 2048): Using default value 2048
==> vagrant: Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): Value out of range.
==> vagrant: Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279):
==> vagrant: Device does not contain a recognized partition table
==> vagrant: Building a new DOS disklabel with disk identifier 0x38d6fb65.
==> vagrant: Do you really want to quit?
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
Here is my Vagrant file codes:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION_NO = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION_NO) do |config|
config.vm.define "vagrant" do |oracle|
oracle.vm.box = "CentOS7"
oracle.vm.boot_timeout = 5000
oracle.vm.box_url = "http://zzz.zzz.zzz/CentOS7.1.1503x86_64.box"
oracle.ssh.username = "root"
oracle.ssh.password = "vagrant"
config.vbguest.auto_update = false
oracle.vm.synced_folder "./share", "/root/share", :create => true, type: "nfs"
oracle.vm.provider :virtualbox do |vb|
vb.gui = true
vb.name = "CentOS7"
vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "1", "--nicpromisc2", "allow-all"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
vb.customize ["modifyvm", :id, "--name", "CentOS7"]
if !File.exist?("disk/oracle.vdi")
vb.customize [
'createhd',
'--filename', 'disk/oracle',
'--format', 'VDI',
'--size', 15360
]
vb.customize [
'storageattach', :id,
'--storagectl', "SATA",
'--port', 1, '--device', 0,
'--type', 'hdd', '--medium', 'disk/oracle.vdi'
]
end
end
oracle.vm.provision "shell", path: "bash_files/add-oracle-disk.sh"
oracle.vm.provision "shell", :inline => "localectl set-locale LANG=en_US.UTF-8"
oracle.vm.provision :chef_solo do |chef|
chef.custom_config_path = "Vagrantfile.chef"
chef.add_recipe "base"
end
end
end
Vagrant::Config.run do |config|
config.vm.network :bridged, auto_config: false
end
Here is my VM default disk size:
How and what value I need to put on my VagrantFile and add-oracle-disk.sh to be able to add disk space (10GB for example).
Please help.

Vagrant permission to provision.sh denied on osx

I have an issue related to running a box on OS X with a Vagrantfile/provision previously tested successfully on Windows. The box has the particularity of running Ansible entirely on the VM, but I think the problem comes way before.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.hostname = "rubicon.vm"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--cpus", "2" ]
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end
config.vm.network "forwarded_port", guest: 8888, host: 8888
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder ".", "/vagrant"
config.vm.provision :shell,
:keep_color => true,
:inline => "export PYTHONUNBUFFERED=1 && export ANSIBLE_FORCE_COLOR=1 && cd /vagrant && ./provision.sh"
end
I get an error at the provision step:
/tmp/vagrant-shell: line 1: ./provision.sh: Permission denied
To verify that (1) provision.sh was found and (2) the user should be root and have all permission, I modified the provision line with:
:inline => "cd /vagrant && ls -al && echo $USER && ./provision.sh"
The output was:
==> default: drwxr-xr-x 1 vagrant vagrant 204 Aug 12 10:06 .
==> default: drwxr-xr-x 23 root root 4096 Aug 12 10:12 ..
==> default: drwxr-xr-x 1 vagrant vagrant 136 Aug 11 14:28 ansible
==> default: -rw-r--r-- 1 vagrant vagrant 767 Aug 11 14:35 provision.sh
==> default: drwxr-xr-x 1 vagrant vagrant 102 Aug 11 14:30 .vagrant
==> default: -rwxr-xr-x 1 vagrant vagrant 785 Aug 12 10:06 Vagrantfile
==> default: root
==> default: /tmp/vagrant-shell: line 1: ./provision.sh: Permission denied
So nothing surprising there.
You need to grant execute permissions on provision.sh
chmod +x provision.sh

Vagrant with VMWare Fusion Plugin

I trying to use the Vagrant VMWare Fusion Plugin, however (whatever I do) to set a static IP address on my private VMWare network the VM only ever gets a DHCP address.
I’ve added this to my Vagrant config file:
server1.vm.network "private_network", ip: "192.168.13.120"
However, it just gets ignored and a dynamic DHCP address is issued. I’m using the hashicorp/precise64 base image.
Here’s a complete listing of the Vagrant file I'm using to test.
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise64_vmware.box"
# Turn off shared folders
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
# Begin server1
config.vm.define "server1" do |server1|
server1.vm.hostname = "server1"
server1.vm.provider "vmware_fusion" do |v|
v.vmx["numvcpus"] = "1"
v.vmx["memsize"] = "512"
end
server1.vm.provider "virtualbox" do |v|
v.customize [ "modifyvm", :id, "--cpus", "1" ]
v.customize [ "modifyvm", :id, "--memory", "512" ]
end
server1.vm.network "private_network", ip: "192.168.13.120"
end
# End server1
....................................
end
And this is how my VMWare private interface is configured:
vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:08
inet 192.168.13.1 netmask 0xffffff00 broadcast 192.168.13.255
Edit /Library/Preferences/VMware\ Fusion/networking and disable DHCP for the adapter that the IP belongs to.
For example:
...
answer VNET_2_DHCP no
answer VNET_2_HOSTONLY_NETMASK 255.255.255.0
answer VNET_2_HOSTONLY_SUBNET 172.17.8.0
answer VNET_2_VIRTUAL_ADAPTER yes
...
And then restart VMware Fusion networking
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli —stop
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli —configure
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli —start
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli —status
My use case:
This helped in my situation which is pretty much the same as yours.
server.vm.network :private_network, ip: 172.17.8.100
With DHCP on I had something like:
inet 172.17.8.131/24 brd 172.17.8.255 scope global dynamic enp0s18
After turning DHCP off, vm is assigned the defined private IP address:
inet 172.17.8.100/24 brd 172.17.8.255 scope global enp0s18
Let me know how it goes.

Resources