By default, the shell provisioner does not run as root. This could explain the reason why you get different results. Your example outside of vagrant was run as root, where as the provisioner in Vagrant was run as the Vagrant user:
https://www.vagrantup.com/docs/provisioning/shell.html#privileged You can update the provisioner to run as root with this option, which might fix it. On Sun, Mar 3, 2019 at 4:44 PM shaun smiley <[email protected]> wrote: > I added > > set -euo pipefail > > to the top of the embedded bash script, which would fail instantly on > errors. I still get different results, but no errors. > > On Saturday, March 2, 2019 at 5:13:16 PM UTC-8, shaun smiley wrote: >> >> I have a strange issue where the bash code I put into Vagrantfile and run >> with 'provision' gives different output than if I copy/paste the exact same >> code into the shell of the vagrant machine. >> >> Here's a stripped down version of my Vagrantfile I've gotten to prove >> this strange issue. >> >> # -*- mode: ruby -*- >> # vi: set ft=ruby : >> >> $test_apt = <<-SCRIPT >> #!/usr/bin/env bash >> >> dpkg_find() { >> pkgname="$1" >> echo "in dpkg_find, pkgname=${pkgname}" >> dpkg --get-selections | egrep "${pkgname}"'\s+install' && { >> echo "FOUND" >> } || { >> echo "NOT_FOUND" >> } >> } >> >> dpkg_find vim >> SCRIPT >> >> Vagrant.configure("2") do |config| >> config.vm.box = "peru/ubuntu-18.04-desktop-amd64" >> config.vm.box_version = "20190222.03" >> config.vm.network :private_network, ip: '192.168.85.102' >> config.vm.provision "shell", inline: $test_apt >> end >> >> >> $ vagrant provision >> ==> default: Running provisioner: shell... >> default: Running: inline script >> default: in dpkg_find, pkgname=vim >> default: NOT_FOUND >> >> >> >> >> >> I can copy paste the dpkg_find function and its call line and get >> different output! >> >> $ vagrant ssh >> >> vagrant@linux:~$ sudo su - >> root@linux:~# dpkg_find() { >> pkgname="$1" >> echo "in dpkg_find, pkgname=${pkgname}" >> dpkg --get-selections | egrep "${pkgname}"'\s+install' && { >> echo "FOUND" >> } || { >> echo "NOT_FOUND" >> } >> } >> >> >> >> root@linux:~# dpkg_find vim >> in dpkg_find, pkgname=vim >> vim install >> FOUND >> >> >> >> What is going on here? >> >> -- > 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/6607f137-4311-4a8c-892d-7dae7bfaa274%40googlegroups.com > <https://groups.google.com/d/msgid/vagrant-up/6607f137-4311-4a8c-892d-7dae7bfaa274%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Brian Cain -- 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/CADHESCXJ6x_%3Dfmox5WpSE1bfwHa60h-Chi93hjo-yqJuy6-%2BHg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
