a variety of markdown fixes
This commit is contained in:
parent
db48bf7d58
commit
f48529e6ff
|
@ -30,7 +30,7 @@ container if the parent OS is Debian based.
|
|||
|
||||
Below is a fully functioning example.
|
||||
|
||||
```{.javascript}
|
||||
```json
|
||||
{
|
||||
"builders": [
|
||||
{
|
||||
|
@ -38,37 +38,28 @@ Below is a fully functioning example.
|
|||
"name": "lxc-trusty",
|
||||
"config_file": "/tmp/lxc/config",
|
||||
"template_name": "ubuntu",
|
||||
"template_environment_vars": [
|
||||
"SUITE=trusty"
|
||||
]
|
||||
"template_environment_vars": ["SUITE=trusty"]
|
||||
},
|
||||
{
|
||||
"type": "lxc",
|
||||
"name": "lxc-xenial",
|
||||
"config_file": "/tmp/lxc/config",
|
||||
"template_name": "ubuntu",
|
||||
"template_environment_vars": [
|
||||
"SUITE=xenial"
|
||||
]
|
||||
"template_environment_vars": ["SUITE=xenial"]
|
||||
},
|
||||
{
|
||||
"type": "lxc",
|
||||
"name": "lxc-jessie",
|
||||
"config_file": "/tmp/lxc/config",
|
||||
"template_name": "debian",
|
||||
"template_environment_vars": [
|
||||
"SUITE=jessie"
|
||||
]
|
||||
"template_environment_vars": ["SUITE=jessie"]
|
||||
},
|
||||
{
|
||||
"type": "lxc",
|
||||
"name": "lxc-centos-7-x64",
|
||||
"config_file": "/tmp/lxc/config",
|
||||
"template_name": "centos",
|
||||
"template_parameters": [
|
||||
"-R","7",
|
||||
"-a","x86_64"
|
||||
]
|
||||
"template_parameters": ["-R", "7", "-a", "x86_64"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ builder does not work with LXC.
|
|||
|
||||
Below is a fully functioning example.
|
||||
|
||||
```{.javascript}
|
||||
```json
|
||||
{
|
||||
"builders": [
|
||||
{
|
||||
|
|
|
@ -126,17 +126,17 @@ builder.
|
|||
new OMI, the VM automatically launches with these additional volumes,
|
||||
and will restore them from snapshots taken from the source VM.
|
||||
|
||||
- `delete_on_vm_deletion` (boolean) - Indicates whether the BSU volume is deleted on VM termination. Default `false`. **NOTE**: If this value is not explicitly set to `true` and volumes are not cleaned up by an alternative method, additional volumes will accumulate after every build.
|
||||
- `delete_on_vm_deletion` (boolean) - Indicates whether the BSU volume is deleted on VM termination. Default `false`. **NOTE**: If this value is not explicitly set to `true` and volumes are not cleaned up by an alternative method, additional volumes will accumulate after every build.
|
||||
|
||||
- `device_name` (string) - The device name exposed to the VM (for example, `/dev/sdh` or `xvdh`). Required for every device in the block device mapping.
|
||||
- `device_name` (string) - The device name exposed to the VM (for example, `/dev/sdh` or `xvdh`). Required for every device in the block device mapping.
|
||||
|
||||
- `iops` (number) - The number of I/O operations per second (IOPS) that the volume supports. See the documentation on
|
||||
[IOPs](https://wiki.outscale.net/display/EN/About+Volumes#AboutVolumes-VolumeTypesVolumeTypesandIOPS)
|
||||
for more information.
|
||||
- `iops` (number) - The number of I/O operations per second (IOPS) that the volume supports. See the documentation on
|
||||
[IOPs](https://wiki.outscale.net/display/EN/About+Volumes#AboutVolumes-VolumeTypesVolumeTypesandIOPS)
|
||||
for more information.
|
||||
|
||||
- `volume_size` (number) - The size of the volume, in GiB. Required if not specifying a `snapshot_id`
|
||||
- `volume_size` (number) - The size of the volume, in GiB. Required if not specifying a `snapshot_id`
|
||||
|
||||
- `volume_type` (string) - The volume type. `gp2` for General Purpose (SSD) volumes, `io1` for Provisioned IOPS (SSD) volumes, and `standard` for Magnetic volumes
|
||||
- `volume_type` (string) - The volume type. `gp2` for General Purpose (SSD) volumes, `io1` for Provisioned IOPS (SSD) volumes, and `standard` for Magnetic volumes
|
||||
|
||||
- `run_tags` (object of key/value strings) - Tags to apply to the VM
|
||||
that is _launched_ to create the OMI. These tags are _not_ applied to the
|
||||
|
|
|
@ -64,8 +64,11 @@ necessary for this build to succeed and can be found further down the page.
|
|||
#### Optional:
|
||||
|
||||
@include 'builder/virtualbox/iso/Config-not-required.mdx'
|
||||
|
||||
@include 'builder/virtualbox/common/VBoxVersionConfig-not-required.mdx'
|
||||
|
||||
@include 'builder/virtualbox/common/VBoxBundleConfig-not-required.mdx'
|
||||
|
||||
@include 'builder/virtualbox/common/GuestAdditionsConfig-not-required.mdx'
|
||||
|
||||
### ISO Configuration
|
||||
|
|
|
@ -23,11 +23,13 @@ image).
|
|||
When exporting from VirtualBox make sure to choose OVF Version 2, since Version
|
||||
1 is not compatible and will generate errors like this:
|
||||
|
||||
==> virtualbox-ovf: Progress state: VBOX_E_FILE_ERROR
|
||||
==> virtualbox-ovf: VBoxManage: error: Appliance read failed
|
||||
==> virtualbox-ovf: VBoxManage: error: Error reading "source.ova": element "Section" has no "type" attribute, line 21
|
||||
==> virtualbox-ovf: VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Appliance, interface IAppliance
|
||||
==> virtualbox-ovf: VBoxManage: error: Context: "int handleImportAppliance(HandlerArg*)" at line 304 of file VBoxManageAppliance.cpp
|
||||
```shell
|
||||
==> virtualbox-ovf: Progress state: VBOX_E_FILE_ERROR
|
||||
==> virtualbox-ovf: VBoxManage: error: Appliance read failed
|
||||
==> virtualbox-ovf: VBoxManage: error: Error reading "source.ova": element "Section" has no "type" attribute, line 21
|
||||
==> virtualbox-ovf: VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Appliance, interface IAppliance
|
||||
==> virtualbox-ovf: VBoxManage: error: Context: "int handleImportAppliance(HandlerArg*)" at line 304 of file VBoxManageAppliance.cpp
|
||||
```
|
||||
|
||||
The builder builds a virtual machine by importing an existing OVF or OVA file.
|
||||
It then boots this image, runs provisioners on this new VM, and exports that VM
|
||||
|
|
|
@ -133,7 +133,7 @@ Only use the `cluster` option. Optionally specify a `resource_pool`:
|
|||
## Required vSphere Permissions
|
||||
|
||||
- VM folder (this object and children):
|
||||
```
|
||||
```text
|
||||
Virtual machine -> Inventory
|
||||
Virtual machine -> Configuration
|
||||
Virtual machine -> Interaction
|
||||
|
@ -142,35 +142,35 @@ Only use the `cluster` option. Optionally specify a `resource_pool`:
|
|||
```
|
||||
Individual privileges are listed in https://github.com/jetbrains-infra/packer-builder-vsphere/issues/97#issuecomment-436063235.
|
||||
- Resource pool, host, or cluster (this object):
|
||||
```
|
||||
```text
|
||||
Resource -> Assign virtual machine to resource pool
|
||||
```
|
||||
- Host in clusters without DRS (this object):
|
||||
```
|
||||
```text
|
||||
Read-only
|
||||
```
|
||||
- Datastore (this object):
|
||||
```
|
||||
```text
|
||||
Datastore -> Allocate space
|
||||
Datastore -> Browse datastore
|
||||
Datastore -> Low level file operations
|
||||
```
|
||||
- Network (this object):
|
||||
```
|
||||
```text
|
||||
Network -> Assign network
|
||||
```
|
||||
- Distributed switch (this object):
|
||||
```
|
||||
```text
|
||||
Read-only
|
||||
```
|
||||
|
||||
For floppy image upload:
|
||||
|
||||
- Datacenter (this object):
|
||||
```
|
||||
```text
|
||||
Datastore -> Low level file operations
|
||||
```
|
||||
- Host (this object):
|
||||
```
|
||||
```text
|
||||
Host -> Configuration -> System Management
|
||||
```
|
||||
|
|
|
@ -183,7 +183,7 @@ Only use the `cluster` option. Optionally specify a `resource_pool`:
|
|||
## Required vSphere Permissions
|
||||
|
||||
- VM folder (this object and children):
|
||||
```
|
||||
```text
|
||||
Virtual machine -> Inventory
|
||||
Virtual machine -> Configuration
|
||||
Virtual machine -> Interaction
|
||||
|
@ -192,35 +192,35 @@ Only use the `cluster` option. Optionally specify a `resource_pool`:
|
|||
```
|
||||
Individual privileges are listed in https://github.com/jetbrains-infra/packer-builder-vsphere/issues/97#issuecomment-436063235.
|
||||
- Resource pool, host, or cluster (this object):
|
||||
```
|
||||
```text
|
||||
Resource -> Assign virtual machine to resource pool
|
||||
```
|
||||
- Host in clusters without DRS (this object):
|
||||
```
|
||||
```text
|
||||
Read-only
|
||||
```
|
||||
- Datastore (this object):
|
||||
```
|
||||
```text
|
||||
Datastore -> Allocate space
|
||||
Datastore -> Browse datastore
|
||||
Datastore -> Low level file operations
|
||||
```
|
||||
- Network (this object):
|
||||
```
|
||||
```text
|
||||
Network -> Assign network
|
||||
```
|
||||
- Distributed switch (this object):
|
||||
```
|
||||
```text
|
||||
Read-only
|
||||
```
|
||||
|
||||
For floppy image upload:
|
||||
|
||||
- Datacenter (this object):
|
||||
```
|
||||
```text
|
||||
Datastore -> Low level file operations
|
||||
```
|
||||
- Host (this object):
|
||||
```
|
||||
```text
|
||||
Host -> Configuration -> System Management
|
||||
```
|
||||
|
|
|
@ -101,8 +101,10 @@ Issues may arise using and building Ubuntu AMIs where common packages that
|
|||
_should_ be installed from Ubuntu's Main repository are not found during a
|
||||
provisioner step:
|
||||
|
||||
amazon-ebs: No candidate version found for build-essential
|
||||
amazon-ebs: No candidate version found for build-essential
|
||||
```text
|
||||
amazon-ebs: No candidate version found for build-essential
|
||||
amazon-ebs: No candidate version found for build-essential
|
||||
```
|
||||
|
||||
This, obviously can cause problems where a build is unable to finish
|
||||
successfully as the proper packages cannot be provisioned correctly. The
|
||||
|
|
|
@ -175,7 +175,7 @@ We use that list of variables to generate a custom placeholder map per builder t
|
|||
combines custom variables with the placeholder map of default build variables created by Packer.
|
||||
Here's an example snippet telling packer what will be made available by the builder:
|
||||
|
||||
```
|
||||
```go
|
||||
func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) {
|
||||
// ...
|
||||
|
||||
|
@ -190,7 +190,7 @@ for the template containing the build variable(s) to validate.
|
|||
Once the placeholder is set, it's necessary to pass the variables' real values when calling
|
||||
the provisioner. This can be done as the example below:
|
||||
|
||||
```
|
||||
```go
|
||||
func (b *Builder) Run(ctx context.Context, ui packer.Ui, hook packer.Hook) (packer.Artifact, error) {
|
||||
// ...
|
||||
|
||||
|
@ -210,7 +210,7 @@ will access this data later via the Artifact's `State` method.
|
|||
|
||||
The Artifact code should be implemented similar to the below:
|
||||
|
||||
```
|
||||
```go
|
||||
type Artifact struct {
|
||||
// ...
|
||||
|
||||
|
@ -231,7 +231,7 @@ func (a *Artifact) State(name string) interface{} {
|
|||
The builder should return the above Artifact containing the generated data and the code should be similar
|
||||
to the example snippet below:
|
||||
|
||||
```
|
||||
```go
|
||||
func (b *Builder) Run(ctx context.Context, ui packer.Ui, hook packer.Hook) (packer.Artifact, error) {
|
||||
// ...
|
||||
|
||||
|
@ -246,7 +246,7 @@ The code above assigns the `generated_data` state to the `StateData` map with th
|
|||
|
||||
Here some example of how this data will be used by post-processors:
|
||||
|
||||
```
|
||||
```go
|
||||
func (p *PostProcessor) PostProcess(ctx context.Context, ui packer.Ui, source packer.Artifact) (packer.Artifact, bool, bool, error) {
|
||||
generatedData := source.State("generated_data")
|
||||
|
||||
|
|
|
@ -54,8 +54,10 @@ output prompting you to press "enter" to continue the build when you are ready.
|
|||
|
||||
For example:
|
||||
|
||||
==> docker: Pausing at breakpoint provisioner with note "foo bar baz".
|
||||
==> docker: Press enter to continue.
|
||||
```shell
|
||||
==> docker: Pausing at breakpoint provisioner with note "foo bar baz".
|
||||
==> docker: Press enter to continue.
|
||||
```
|
||||
|
||||
Once you press enter, the build will resume and run normally until it either
|
||||
completes or errors.
|
||||
|
|
|
@ -234,13 +234,15 @@ required for the JSON template to be parsed correctly.
|
|||
|
||||
The above snippet should result in the following output on the Packer console:
|
||||
|
||||
==> amazon-ebs: Provisioning with Powershell...
|
||||
==> amazon-ebs: Provisioning with powershell script: /var/folders/15/d0f7gdg13rnd1cxp7tgmr55c0000gn/T/packer-powershell-provisioner508190439
|
||||
amazon-ebs: A literal dollar $ must be escaped
|
||||
amazon-ebs: A literal backtick ` must be escaped
|
||||
amazon-ebs: Here "double quotes" must be escaped
|
||||
amazon-ebs: Here 'single quotes' don't really need to be
|
||||
amazon-ebs: escaped... but it doesn't hurt to do so.
|
||||
```shell
|
||||
==> amazon-ebs: Provisioning with Powershell...
|
||||
==> amazon-ebs: Provisioning with powershell script: /var/folders/15/d0f7gdg13rnd1cxp7tgmr55c0000gn/T/packer-powershell-provisioner508190439
|
||||
amazon-ebs: A literal dollar $ must be escaped
|
||||
amazon-ebs: A literal backtick ` must be escaped
|
||||
amazon-ebs: Here "double quotes" must be escaped
|
||||
amazon-ebs: Here 'single quotes' don't really need to be
|
||||
amazon-ebs: escaped... but it doesn't hurt to do so.
|
||||
```
|
||||
|
||||
### When Not To Escape...
|
||||
|
||||
|
@ -286,14 +288,16 @@ for the user. There is no need to use escapes in these instances.
|
|||
|
||||
The above snippet should result in the following output on the Packer console:
|
||||
|
||||
==> amazon-ebs: Provisioning with Powershell...
|
||||
==> amazon-ebs: Provisioning with powershell script: /var/folders/15/d0f7gdg13rnd1cxp7tgmr55c0000gn/T/packer-powershell-provisioner961728919
|
||||
amazon-ebs: The dollar in the elevated_password is interpreted correctly
|
||||
==> amazon-ebs: Provisioning with Powershell...
|
||||
==> amazon-ebs: Provisioning with powershell script: /var/folders/15/d0f7gdg13rnd1cxp7tgmr55c0000gn/T/packer-powershell-provisioner142826554
|
||||
amazon-ebs: In the following examples the special character is interpreted correctly:
|
||||
amazon-ebs: The dollar in VAR1: A$Dollar
|
||||
amazon-ebs: The backtick in VAR2: A`Backtick
|
||||
amazon-ebs: The single quote in VAR3: A'SingleQuote
|
||||
amazon-ebs: The double quote in VAR4: A"DoubleQuote
|
||||
amazon-ebs: The dollar in VAR5 (expanded from a user var): My$tring
|
||||
```shell
|
||||
==> amazon-ebs: Provisioning with Powershell...
|
||||
==> amazon-ebs: Provisioning with powershell script: /var/folders/15/d0f7gdg13rnd1cxp7tgmr55c0000gn/T/packer-powershell-provisioner961728919
|
||||
amazon-ebs: The dollar in the elevated_password is interpreted correctly
|
||||
==> amazon-ebs: Provisioning with Powershell...
|
||||
==> amazon-ebs: Provisioning with powershell script: /var/folders/15/d0f7gdg13rnd1cxp7tgmr55c0000gn/T/packer-powershell-provisioner142826554
|
||||
amazon-ebs: In the following examples the special character is interpreted correctly:
|
||||
amazon-ebs: The dollar in VAR1: A$Dollar
|
||||
amazon-ebs: The backtick in VAR2: A`Backtick
|
||||
amazon-ebs: The single quote in VAR3: A'SingleQuote
|
||||
amazon-ebs: The double quote in VAR4: A"DoubleQuote
|
||||
amazon-ebs: The dollar in VAR5 (expanded from a user var): My$tring
|
||||
```
|
||||
|
|
|
@ -88,10 +88,12 @@ Optional parameters:
|
|||
template variables as well as private elements of ExecuteTemplate (see
|
||||
source: provisioner/puppet-masterless/provisioner.go).
|
||||
|
||||
[
|
||||
{{if ne "{{user environment}}" ""}}--environment={{user environment}}{{end}},
|
||||
{{if ne ".ModulePath" ""}}--modulepath="{{.ModulePath}}{{.ModulePathJoiner}}$(puppet config print {{if ne "{{user `environment`}}" ""}}--environment={{user `environment`}}{{end}} modulepath)"{{end}}
|
||||
]
|
||||
```text
|
||||
[
|
||||
{{if ne "{{user environment}}" ""}}--environment={{user environment}}{{end}},
|
||||
{{if ne ".ModulePath" ""}}--modulepath="{{.ModulePath}}{{.ModulePathJoiner}}$(puppet config print {{if ne "{{user `environment`}}" ""}}--environment={{user `environment`}}{{end}} modulepath)"{{end}}
|
||||
]
|
||||
```
|
||||
|
||||
* `facter` (object of key:value strings) - Additional
|
||||
[facts](https://docs.puppet.com/facter/) to make available to the Puppet
|
||||
|
@ -152,30 +154,34 @@ multiple manifests you should use `manifest_file` instead.
|
|||
By default, Packer uses the following command (broken across multiple lines for
|
||||
readability) to execute Puppet:
|
||||
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} {{end}}
|
||||
{{if .Sudo}}sudo -E {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet apply --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .ModulePath ""}}--modulepath='{{.ModulePath}}' {{end}}
|
||||
{{if ne .HieraConfigPath ""}}--hiera_config='{{.HieraConfigPath}}' {{end}}
|
||||
{{if ne .ManifestDir ""}}--manifestdir='{{.ManifestDir}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
{{.ManifestFile}}
|
||||
```shell
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} {{end}}
|
||||
{{if .Sudo}}sudo -E {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet apply --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .ModulePath ""}}--modulepath='{{.ModulePath}}' {{end}}
|
||||
{{if ne .HieraConfigPath ""}}--hiera_config='{{.HieraConfigPath}}' {{end}}
|
||||
{{if ne .ManifestDir ""}}--manifestdir='{{.ManifestDir}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
{{.ManifestFile}}
|
||||
```
|
||||
|
||||
The following command is used if guest OS type is windows:
|
||||
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} && {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet apply --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .ModulePath ""}}--modulepath='{{.ModulePath}}' {{end}}
|
||||
{{if ne .HieraConfigPath ""}}--hiera_config='{{.HieraConfigPath}}' {{end}}
|
||||
{{if ne .ManifestDir ""}}--manifestdir='{{.ManifestDir}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
{{.ManifestFile}}
|
||||
```shell
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} && {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet apply --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .ModulePath ""}}--modulepath='{{.ModulePath}}' {{end}}
|
||||
{{if ne .HieraConfigPath ""}}--hiera_config='{{.HieraConfigPath}}' {{end}}
|
||||
{{if ne .ManifestDir ""}}--manifestdir='{{.ManifestDir}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
{{.ManifestFile}}
|
||||
```
|
||||
|
||||
## Default Facts
|
||||
|
||||
|
|
|
@ -77,9 +77,11 @@ listed below:
|
|||
template variables as well as private elements of ExecuteTemplate (see
|
||||
source: provisioner/puppet-server/provisioner.go).
|
||||
|
||||
[
|
||||
{{if ne "{{user environment}}" ""}}--environment={{user environment}}{{end}}
|
||||
]
|
||||
```text
|
||||
[
|
||||
{{if ne "{{user environment}}" ""}}--environment={{user environment}}{{end}}
|
||||
]
|
||||
```
|
||||
|
||||
* `facter` (object of key/value strings) - Additional
|
||||
[facts](https://puppetlabs.com/facter) to make available to the Puppet run.
|
||||
|
@ -130,30 +132,34 @@ listed below:
|
|||
By default, Packer uses the following command (broken across multiple lines for
|
||||
readability) to execute Puppet:
|
||||
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} {{end}}
|
||||
{{if .Sudo}}sudo -E {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet agent --onetime --no-daemonize --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .PuppetServer ""}}--server='{{.PuppetServer}}' {{end}}
|
||||
{{if ne .PuppetNode ""}}--certname='{{.PuppetNode}}' {{end}}
|
||||
{{if ne .ClientCertPath ""}}--certdir='{{.ClientCertPath}}' {{end}}
|
||||
{{if ne .ClientPrivateKeyPath ""}}--privatekeydir='{{.ClientPrivateKeyPath}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
```shell
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} {{end}}
|
||||
{{if .Sudo}}sudo -E {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet agent --onetime --no-daemonize --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .PuppetServer ""}}--server='{{.PuppetServer}}' {{end}}
|
||||
{{if ne .PuppetNode ""}}--certname='{{.PuppetNode}}' {{end}}
|
||||
{{if ne .ClientCertPath ""}}--certdir='{{.ClientCertPath}}' {{end}}
|
||||
{{if ne .ClientPrivateKeyPath ""}}--privatekeydir='{{.ClientPrivateKeyPath}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
```
|
||||
|
||||
The following command is used if guest OS type is windows:
|
||||
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} && {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet agent --onetime --no-daemonize --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .PuppetServer ""}}--server='{{.PuppetServer}}' {{end}}
|
||||
{{if ne .PuppetNode ""}}--certname='{{.PuppetNode}}' {{end}}
|
||||
{{if ne .ClientCertPath ""}}--certdir='{{.ClientCertPath}}' {{end}}
|
||||
{{if ne .ClientPrivateKeyPath ""}}--privatekeydir='{{.ClientPrivateKeyPath}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
```shell
|
||||
cd {{.WorkingDir}} &&
|
||||
{{if ne .FacterVars ""}}{{.FacterVars}} && {{end}}
|
||||
{{if ne .PuppetBinDir ""}}{{.PuppetBinDir}}/{{end}}
|
||||
puppet agent --onetime --no-daemonize --detailed-exitcodes
|
||||
{{if .Debug}}--debug {{end}}
|
||||
{{if ne .PuppetServer ""}}--server='{{.PuppetServer}}' {{end}}
|
||||
{{if ne .PuppetNode ""}}--certname='{{.PuppetNode}}' {{end}}
|
||||
{{if ne .ClientCertPath ""}}--certdir='{{.ClientCertPath}}' {{end}}
|
||||
{{if ne .ClientPrivateKeyPath ""}}--privatekeydir='{{.ClientPrivateKeyPath}}' {{end}}
|
||||
{{if ne .ExtraArguments ""}}{{.ExtraArguments}} {{end}}
|
||||
```
|
||||
|
||||
## Default Facts
|
||||
|
||||
|
|
|
@ -296,10 +296,12 @@ is an example of packer template inputs and what you should expect to get out:
|
|||
|
||||
Output:
|
||||
|
||||
docker: FOO is foo
|
||||
docker: BAR is bar's
|
||||
docker: BAZ is baz=baz
|
||||
docker: QUX is =qux
|
||||
docker: FOOBAR is foo bar
|
||||
docker: FOOBARBAZ is 'foo bar baz'
|
||||
docker: QUX2 is "qux"
|
||||
```text
|
||||
docker: FOO is foo
|
||||
docker: BAR is bar's
|
||||
docker: BAZ is baz=baz
|
||||
docker: QUX is =qux
|
||||
docker: FOOBAR is foo bar
|
||||
docker: FOOBARBAZ is 'foo bar baz'
|
||||
docker: QUX2 is "qux"
|
||||
```
|
||||
|
|
|
@ -40,16 +40,12 @@
|
|||
[ImageService](https://developer.openstack.org/api-ref/image/v2/), the
|
||||
following are valid:
|
||||
|
||||
- name (string)
|
||||
|
||||
- owner (string)
|
||||
|
||||
- tags (array of strings)
|
||||
|
||||
- visibility (string)
|
||||
|
||||
- properties (map of strings to strings) (fields that can be set
|
||||
with `openstack image set --property key=value`)
|
||||
- name (string)
|
||||
- owner (string)
|
||||
- tags (array of strings)
|
||||
- visibility (string)
|
||||
- properties (map of strings to strings) (fields that can be set
|
||||
with `openstack image set --property key=value`)
|
||||
|
||||
- `most_recent` (boolean) - Selects the newest created image when
|
||||
true.
|
||||
|
|
|
@ -42,9 +42,9 @@
|
|||
used as the serial port. If `path` is empty, then default to the first
|
||||
serial port.
|
||||
|
||||
* `yield` (bool) - This is an optional boolean that specifies
|
||||
whether the vm should yield the cpu when polling the port. By
|
||||
default, the builder will assume this as `FALSE`.
|
||||
- `yield` (bool) - This is an optional boolean that specifies
|
||||
whether the vm should yield the cpu when polling the port. By
|
||||
default, the builder will assume this as `FALSE`.
|
||||
|
||||
- `PIPE:path,endpoint,host(,yield)` - Specifies to use the named-pipe
|
||||
"path" as a serial port. This has a few options that determine how the
|
||||
|
|
Loading…
Reference in New Issue