Packer shell Provisioner: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 36: Line 36:
       ],
       ],
       "execute_command": "echo '' | {{ .Vars }} sudo -S -E -u root '{{ .Path }}'",
       "execute_command": "echo '' | {{ .Vars }} sudo -S -E -u root '{{ .Path }}'",
       "script": "config/something.sh"
       "script": "scripts/something.sh"
     },
     },
   ...  
   ...  
Line 42: Line 42:
}
}
</syntaxhighlight>
</syntaxhighlight>
While executing the script, its stdout will be relayed to the controlling terminal. However, the name of the script will not match the name of the local source script. Assuming that our script is ./scripts/something.sh, if we echo "executing $0" from it will get something similar to:
<syntaxhighlight lang='text'>
...
    infra-worker: executing /tmp/script_233.sh
...
<syntaxhighlight lang='json'>


==scripts==
==scripts==

Revision as of 17:54, 15 November 2019

External

Internal

Overview

shell Provisioner Types

inline

{
  ...
  "provisioners": [
    {
      "type": "shell",
      "inline": ["sudo yum install ansible"]
    },
  ... 
  ]
}

script

{
  ...
  "provisioners": [
    {
      "type": "shell",
      "only": [
        "my-builder"
      ],
      "environment_vars": [
        "SOMETHING={{ user `something` }}"
      ],
      "execute_command": "echo '' | {{ .Vars }} sudo -S -E -u root '{{ .Path }}'",
      "script": "scripts/something.sh"
    },
  ... 
  ]
}

While executing the script, its stdout will be relayed to the controlling terminal. However, the name of the script will not match the name of the local source script. Assuming that our script is ./scripts/something.sh, if we echo "executing $0" from it will get something similar to:

...
    infra-worker: executing /tmp/script_233.sh
...
<syntaxhighlight lang='json'>

==scripts==
<syntaxhighlight lang='json'>
{
  ...
  "provisioners": [
    {
      "type": "shell",
      "only": [
        "my-builder"
      ],
      "environment_vars": [
        "SOMETHING={{ user `something` }}"
      ],
      "execute_command": "echo '' | {{ .Vars }} sudo -S -E -u root '{{ .Path }}'",
      "scripts": [
        "scripts/something.sh",
        "scripts/something-else.sh",
       ]
    },
  ... 
  ]
}

Parameters

execute_command

A String that specifies the command to use to execute the script. The default value, unless specified, is:

chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}