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.

Reply via email to