Use of pre_postinstall_file in definition.rb

RodolpheB edited this page Jun 8, 2012 · 1 revision

pre_postinstall_file allows you to execute an arbitary script before each postinstall_file.

Main purpose was to allow set up of proxy environnment variable for the build of a vagrant box via veewee, without having to persist those modifications in the template box.

Principle is that before each execution of a postinstall_file :

  • if pre_postinstall_file is setted up and has not been transfered :
  • transfer it
  • append call to execution of parameter 1 ($1) of the future command line at the end of the transfered file, by executing :
    execute="\n# We must execute the script passed as the first argument\n\$1" && printf "%b\n" "$execute"
  • if pre_postinstall_file is setted up and has beean transfered :
  • modify the command to be executed for the postinstall_file by calling sh on the pre_postinstall_file with the postinstall_file as the first parameter

How To

  • Create a custom script in the definitions/ directory (i.e. pre_execute.sh)

.pre_execute.sh

# Export for proxy 
export http_proxy=http://this.is.my.proxy:8080
export https_proxy=http://this.is.my.proxy:8080
  • Edit definitions<boxname>\definition.rb to add the pre_postinstall_file property and point it to the custom script

.definition.rb

    Veewee::Definition.declare({
    ...
        :pre_postinstall_file => "pre_execute.sh",
    ...
    })
  • Check execution

At veewee post install build runtime you'll see this type of lines :

[vagrant] Executing command: echo 'vagrant'|sudo -S sh './pre_execute.sh' ./cleanup.sh
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.