Ask for user input during vagrant up only

Hi,

I am playing around with user input using ruby inside a trigger during vagrant up. However, the variable I save the input to is empty when it is being used in a later provisioning step.

The below code works, I can reference $NetworkPassword later in a provisioning step. The downside is that the code is always run, also for other Vagrant commands like destroy.

Vagrant.configure("2") do |config|
  $NetworkPassword    = ""

  if $NetworkPassword.empty?
    puts "Enter NetworkPassword"
    $NetworkPassword         = STDIN.noecho(&:gets).chomp
  end

The below command will only run as part of vagrant up because it is placed inside a trigger. The problem here is that $NetworkPassword is empty when it is later referenced in a provisioning step.

Vagrant.configure("2") do |config|
  $NetworkPassword    = ""

  config.trigger.before :up do |trigger|
    # --- Ask user input for empty parameters
    trigger.ruby do |env, machine|
      if $NetworkPassword.empty?
        puts "Enter NetworkPassword"
        $NetworkPassword         = STDIN.gets.chomp
      end
    end
  end

What am I doing wrong here? How can I run ruby code to assign a value to a variable such that the value is available when the variable is later referenced in a provisioning step?