PuppetBolt.psm1
function Invoke-BoltCommandline { [CmdletBinding()] param($params) Write-Verbose "Executing bolt $($params -join ' ')" bolt $params } function Get-BoltCommandline { param($parameterHash, $mapping) $common = @( 'ErrorAction', 'ErrorVariable', 'InformationAction', 'InformationVariable', 'OutBuffer', 'OutVariable', 'PipelineVariable', 'WarningAction', 'WarningVariable', 'Confirm', 'Whatif' ) $params = @() foreach ($kvp in $parameterHash.GetEnumerator()) { if ($kvp.Key -in $common) { Write-Verbose "Skipping common parameter: $($kvp.Key)" continue } else { Write-Verbose "Examining $($kvp.Key)" } $pwshParameter = $kvp.Key $pwshValue = $kvp.Value $rubyParameter = $mapping[$pwshParameter] if ($pwshValue -is [System.Management.Automation.SwitchParameter]) { Write-Verbose "Parsing $($kvp.key) as switch parameter" if ($pwshValue -eq $true) { $params += "--$($rubyParameter)" } else { $params += "--no-$($rubyParameter)" } } elseif ($pwshValue -is [System.Collections.Hashtable]) { Write-Verbose "Parsing $($kvp.key) as hashtable parameter" $v = ConvertTo-Json -InputObject $pwshValue -Compress $params += "--$($rubyParameter)" # $IsLinux/IsMacOS are an automatic variables from powershellcore: # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#islinux $IsLinuxEnv = (Get-Variable -Name "IsLinux" -ErrorAction Ignore) -and $IsLinux $IsMacOSEnv = (Get-Variable -Name "IsMacOS" -ErrorAction Ignore) -and $IsMacOS $IsWinEnv = !$IsLinuxEnv -and !$IsMacOSEnv if($IsWinEnv){ $params += "'$($v)'" } else { # Commands run on Linux/Mac platforms will fail because the # the interpolation of the command from powershell -> .NET -> Ruby # will end up stripping out quotes that aren't baskslash-escaped. # # See https://github.com/MicrosoftDocs/PowerShell-Docs/issues/2361 $params += $v -replace '"', '\"' } } elseif ($pwshValue.GetType().Name -eq 'List`1') { Write-Verbose "Parsing $($kvp.key) as array parameter" $pwshValue | Foreach-Object { $params += "$($_)" } } else { Write-Verbose "Parsing $($kvp.key) as default" if ($rubyParameter) { $params += "--$($rubyParameter)" } $parsedValue = switch ($pwshParameter) { 'params' { "'$($pwshValue)'" } 'execute' { "'$($pwshValue)'" } Default { $pwshValue } } $params += $parsedValue } } Write-Output $params } function Get-BoltVersion{ [CmdletBinding()] param() $module = Get-Module -Name PuppetBolt Write-Output [string]($module.Version) } # AUTOGENERATED BY BOLT # DO NOT MODIFY $script:mapping = @{ "Verbose" = "verbose" "Command" = "" "Targets" = "targets" "Query" = "query" "Rerun" = "rerun" "User" = "user" "Password" = "password" "PasswordPrompt" = "password-prompt" "PrivateKey" = "private-key" "HostKeyCheck" = "host-key-check" "Ssl" = "ssl" "SslVerify" = "ssl-verify" "RunAs" = "run-as" "SudoPassword" = "sudo-password" "SudoPasswordPrompt" = "sudo-password-prompt" "SudoExecutable" = "sudo-executable" "Concurrency" = "concurrency" "Inventoryfile" = "inventoryfile" "SaveRerun" = "save-rerun" "Cleanup" = "cleanup" "Project" = "project" "Modulepath" = "modulepath" "Transport" = "transport" "ConnectTimeout" = "connect-timeout" "TTY" = "tty" "NativeSsh" = "native-ssh" "SshCommand" = "ssh-command" "CopyCommand" = "copy-command" "Format" = "format" "Color" = "color" "Trace" = "trace" "Stream" = "stream" "LogLevel" = "log-level" "ClearCache" = "clear-cache" "EnvVar" = "env-var" "Script" = "" "Arguments" = "" "Tmpdir" = "tmpdir" "Name" = "" "Filter" = "filter" "Params" = "params" "Noop" = "noop" "CompileConcurrency" = "compile-concurrency" "HieraConfig" = "hiera-config" "Pp" = "pp" "Source" = "" "Destination" = "" "Text" = "" "Plugin" = "plugin" "Force" = "force" "Detail" = "detail" "Modules" = "modules" "Module" = "" "Resolve" = "resolve" "Manifest" = "" "Execute" = "execute" } <# .SYNOPSIS bolt command run <command> [options] .DESCRIPTION Run a command on the specified targets. .PARAMETER Command The command to execute .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER EnvVar Environment variables to set on the target .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Invoke-BoltCommand { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('cm')] [string] $Command, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $EnvVar ) $executionParams = @('command', 'run') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt script run <script> [arguments] [options] .DESCRIPTION Run a script on the specified targets. Arguments passed to a script are passed literally and are not interpolated by the shell. Any arguments containing spaces or special characters should be quoted. .PARAMETER Script The script to execute .PARAMETER Arguments The arguments to the script .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Tmpdir The directory to upload and execute temporary files on the target .PARAMETER EnvVar Environment variables to set on the target .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Invoke-BoltScript { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('s')] [string] $Script, [Parameter(Position=1)] [Alias('a')] [string] $Arguments, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Tmpdir, [Parameter()] [string] $EnvVar ) $executionParams = @('script', 'run') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt task show [task] [options] .DESCRIPTION Show available tasks and task documentation. Omitting the name of a task will display a list of tasks available in the Bolt project. Providing the name of a task will display detailed documentation for the task, including a list of available parameters. .PARAMETER Name The task to show .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Filter Filter tasks and plans by a matching substring .PARAMETER Format Output format to use: human or json .PARAMETER Version Get the version of the bolt installation .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Get-BoltTask { [CmdletBinding()] param ( [Parameter(Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidatePattern('^[a-z0-9_:]+$')] [string] $Filter, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch]$Version ) if($version){ return Get-BoltVersion } $executionParams = @('task', 'show') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt task run <task> [parameters] [options] .DESCRIPTION Run a task on the specified targets. Parameters take the form parameter=value. .PARAMETER Name The task to run .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Params Parameters to a task or plan as json, a json file '@<file>', or on stdin '-' .PARAMETER Tmpdir The directory to upload and execute temporary files on the target .PARAMETER Noop See what changes Bolt will make without actually executing the changes .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Invoke-BoltTask { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter(Position=1, ValueFromRemainingArguments=$true)] $Params, [Parameter()] [string] $Tmpdir, [Parameter()] [switch] $Noop ) $executionParams = @('task', 'run') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt plan show [plan] [options] .DESCRIPTION Show available plans and plan documentation. Omitting the name of a plan will display a list of plans available in the Bolt project. Providing the name of a plan will display detailed documentation for the plan, including a list of available parameters. .PARAMETER Name The plan to show .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Filter Filter tasks and plans by a matching substring .PARAMETER Format Output format to use: human or json .PARAMETER Version Get the version of the bolt installation .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Get-BoltPlan { [CmdletBinding()] param ( [Parameter(Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidatePattern('^[a-z0-9_:]+$')] [string] $Filter, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch]$Version ) if($version){ return Get-BoltVersion } $executionParams = @('plan', 'show') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt plan run <plan> [parameters] [options] .DESCRIPTION Run a plan on the specified targets. .PARAMETER Name The plan to run .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Params Parameters to a task or plan as json, a json file '@<file>', or on stdin '-' .PARAMETER CompileConcurrency Maximum number of simultaneous manifest block compiles (default: number of cores) .PARAMETER Tmpdir The directory to upload and execute temporary files on the target .PARAMETER HieraConfig Specify where to load Hiera config from (default: ~/.puppetlabs/bolt/hiera.yaml) .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Invoke-BoltPlan { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter(Position=1, ValueFromRemainingArguments=$true)] $Params, [Parameter()] [ValidateNotNullOrEmpty()] [string] $CompileConcurrency, [Parameter()] [string] $Tmpdir, [Parameter()] [string] $HieraConfig ) $executionParams = @('plan', 'run') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt plan convert <path> [options] .DESCRIPTION Convert a YAML plan to a Puppet language plan and print the converted plan to stdout. Converting a YAML plan might result in a plan that is syntactically correct but has different behavior. Always verify a converted plan's functionality. Note that the converted plan is not written to a file. .PARAMETER Name The plan to convert .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Convert-BoltPlan { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath ) $executionParams = @('plan', 'convert') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt plan new <plan> [options] .DESCRIPTION Create a new plan in the current project. .PARAMETER Name The plan to create .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Pp Create a new Puppet language plan. .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function New-BoltPlan { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [switch] $Pp ) $executionParams = @('plan', 'new') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt file download <src> <dest> [options] .DESCRIPTION Download a file or directory from one or more targets. Downloaded files and directories are saved to the a subdirectory matching the target's name under the destination directory. The destination directory is expanded relative to the downloads subdirectory of the project directory. .PARAMETER Source The source file or directory to download .PARAMETER Destination The destination to download to .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Receive-BoltFile { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('s')] [string] $Source, [Parameter(Mandatory=$true, Position=1)] [ValidateNotNullOrEmpty()] [Alias('d')] [string] $Destination, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache ) $executionParams = @('file', 'download') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt file upload <src> <dest> [options] .DESCRIPTION Upload a local file or directory. .PARAMETER Source The source file or directory to upload .PARAMETER Destination The destination to upload to .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Tmpdir The directory to upload and execute temporary files on the target .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Send-BoltFile { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('s')] [string] $Source, [Parameter(Mandatory=$true, Position=1)] [ValidateNotNullOrEmpty()] [Alias('d')] [string] $Destination, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Tmpdir ) $executionParams = @('file', 'upload') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt secret encrypt <plaintext> [options] .DESCRIPTION Encrypt a value. .PARAMETER Text The text to encrypt .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Plugin Select the plugin to use .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Protect-BoltSecret { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Text, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [string] $Plugin ) $executionParams = @('secret', 'encrypt') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt secret decrypt <ciphertext> [options] .DESCRIPTION Decrypt a value. .PARAMETER Text The text to decrypt .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Plugin Select the plugin to use .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Unprotect-BoltSecret { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Text, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [string] $Plugin ) $executionParams = @('secret', 'decrypt') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt secret createkeys [options] .DESCRIPTION Create new encryption keys. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Plugin Select the plugin to use .PARAMETER Force Force a destructive action .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function New-BoltSecretKey { [CmdletBinding()] param ( [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [string] $Plugin, [Parameter()] [switch] $Force ) $executionParams = @('secret', 'createkeys') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt inventory show [options] .DESCRIPTION Show the list of targets an action would run on. .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Format Output format to use: human or json .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER Detail Show resolved configuration for the targets .PARAMETER Version Get the version of the bolt installation .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Get-BoltInventory { [CmdletBinding()] param ( [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $Detail, [Parameter()] [switch]$Version ) if($version){ return Get-BoltVersion } $executionParams = @('inventory', 'show') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt group show [options] .DESCRIPTION Show the list of groups in the inventory. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Format Output format to use: human or json .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER Version Get the version of the bolt installation .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Get-BoltGroup { [CmdletBinding()] param ( [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch]$Version ) if($version){ return Get-BoltVersion } $executionParams = @('group', 'show') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt project init [name] [options] .DESCRIPTION Create a new Bolt project in the current working directory. Specify a name for the Bolt project. Defaults to the basename of the current working directory. .PARAMETER Name The name of the Bolt project to create .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Modules A comma-separated list of modules to install from the Puppet Forge when initializing a project. Resolves and installs all dependencies. .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function New-BoltProject { [CmdletBinding()] param ( [Parameter(Position=0)] [ValidateNotNullOrEmpty()] [Alias('n')] [string] $Name, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] $Modules ) $executionParams = @('project', 'init') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt project migrate [options] .DESCRIPTION Migrate a Bolt project to use current best practices and the latest version of configuration files. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Update-BoltProject { [CmdletBinding()] param ( [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [Alias('i')] [string] $Inventoryfile ) $executionParams = @('project', 'migrate') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt module add <module> [options] .DESCRIPTION Add a module to the project. Module declarations are loaded from the project's configuration file. Bolt will automatically resolve all module dependencies, generate a Puppetfile, and install the modules. The module command is only supported when a project is configured with the 'modules' key. .PARAMETER Module The name of the module to add to the Bolt project .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Add-BoltModule { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [Alias('md')] [string] $Module, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project ) $executionParams = @('module', 'add') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt module generate-types [options] .DESCRIPTION Generate type references to register in plans. The module command is only supported when a project is configured with the 'modules' key. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Register-BoltModuleTypes { [CmdletBinding()] param ( [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath ) $executionParams = @('module', 'generate-types') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt module install [options] .DESCRIPTION Install the project's modules. Module declarations are loaded from the project's configuration file. Bolt will automatically resolve all module dependencies, generate a Puppetfile, and install the modules. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Force Force a destructive action .PARAMETER Resolve Use --no-resolve to install modules listed in the Puppetfile without resolving modules configured in Bolt project configuration .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Install-BoltModule { [CmdletBinding()] param ( [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [switch] $Force, [Parameter()] [switch] $Resolve ) $executionParams = @('module', 'install') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt module show [options] .DESCRIPTION List modules available to the Bolt project. The module command is only supported when a project is configured with the 'modules' key. .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Version Get the version of the bolt installation .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Get-BoltModule { [CmdletBinding()] param ( [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [switch]$Version ) if($version){ return Get-BoltVersion } $executionParams = @('module', 'show') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } <# .SYNOPSIS bolt apply [manifest.pp] [options] .DESCRIPTION Apply Puppet manifest code on the specified targets. .PARAMETER Manifest The manifest to apply .PARAMETER Targets Identifies the targets of command. Enter a comma-separated list of target URIs or group names. Or read a target list from an input file '@<file>' or stdin '-'. Example: --targets localhost,target_group,ssh://nix.com:23,winrm://windows.puppet.com URI format is [protocol://]host[:port] SSH is the default protocol; can be ssh, winrm, pcp, local, lxd, docker, remote For Windows targets, specify the winrm:// protocol if it has not be configured For SSH, port defaults to `22` For WinRM, port defaults to `5985` or `5986` based on the --[no-]ssl setting .PARAMETER Query Query PuppetDB to determine the targets .PARAMETER Rerun Retry on targets from the last run 'all' all targets that were part of the last run. 'failure' targets that failed in the last run. 'success' targets that succeeded in the last run. .PARAMETER User User to authenticate as .PARAMETER Password Password to authenticate with .PARAMETER PasswordPrompt Prompt for user to input password .PARAMETER PrivateKey Path to private ssh key to authenticate with .PARAMETER HostKeyCheck Check host keys with SSH .PARAMETER Ssl Use SSL with WinRM .PARAMETER SslVerify Verify remote host SSL certificate with WinRM .PARAMETER RunAs User to run as using privilege escalation .PARAMETER SudoPassword Password for privilege escalation .PARAMETER SudoPasswordPrompt Prompt for user to input escalation password .PARAMETER SudoExecutable Specify an executable for running as another user. This option is experimental. .PARAMETER Concurrency Maximum number of simultaneous connections .PARAMETER Inventoryfile Specify where to load inventory from (default: ~/.puppetlabs/bolt/inventory.yaml) .PARAMETER SaveRerun Whether to update the rerun file after this command. .PARAMETER Cleanup Whether to clean up temporary files created on targets .PARAMETER Project Path to load the Bolt project from (default: autodiscovered from current dir) .PARAMETER Modulepath List of directories containing modules, separated by ':' Directories are case-sensitive .PARAMETER Transport Specify a default transport: ssh, winrm, pcp, local, lxd, docker, remote .PARAMETER ConnectTimeout Connection timeout in seconds (defaults vary) .PARAMETER TTY Request a pseudo TTY on targets that support it .PARAMETER NativeSsh Whether to shell out to native SSH or use the net-ssh Ruby library. This option is experimental .PARAMETER SshCommand Executable to use instead of the net-ssh Ruby library. This option is experimental. .PARAMETER CopyCommand Command to copy files to remote hosts if using native SSH. This option is experimental. .PARAMETER Format Output format to use: human or json .PARAMETER Color Whether to show output in color .PARAMETER Trace Display error stack traces .PARAMETER Stream Stream output from scripts and commands to the console .PARAMETER LogLevel Set the log level for the console. Available options are trace, debug, info, warn, error, fatal, any. .PARAMETER ClearCache Clear plugin cache before executing .PARAMETER Noop See what changes Bolt will make without actually executing the changes .PARAMETER Execute Puppet manifest code to apply to the targets .PARAMETER CompileConcurrency Maximum number of simultaneous manifest block compiles (default: number of cores) .PARAMETER HieraConfig Specify where to load Hiera config from (default: ~/.puppetlabs/bolt/hiera.yaml) .LINK https://puppet.com/products/bolt .LINK https://puppet.com/docs/bolt/latest/bolt_command_reference.html #> function Invoke-BoltApply { [CmdletBinding()] param ( [Parameter(Mandatory=$true, Position=0, ParameterSetName='manifest')] [ValidateNotNullOrEmpty()] [Alias('mf')] [string] $Manifest, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('t')] [string] $Targets, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('q')] [string] $Query, [Parameter()] [ValidateNotNullOrEmpty()] [ValidateSet("all", "failure", "success")] [string] $Rerun, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('u')] [string] $User, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('p')] [string] $Password, [Parameter()] [switch] $PasswordPrompt, [Parameter()] [ValidateNotNullOrEmpty()] [string] $PrivateKey, [Parameter()] [switch] $HostKeyCheck, [Parameter()] [switch] $Ssl, [Parameter()] [switch] $SslVerify, [Parameter()] [string] $RunAs, [Parameter()] [string] $SudoPassword, [Parameter()] [switch] $SudoPasswordPrompt, [Parameter()] [string] $SudoExecutable, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('c')] [string] $Concurrency, [Parameter()] [Alias('i')] [string] $Inventoryfile, [Parameter()] [switch] $SaveRerun, [Parameter()] [switch] $Cleanup, [Parameter()] [string] $Project, [Parameter()] [ValidateNotNullOrEmpty()] [Alias('m')] [string] $Modulepath, [Parameter()] [ValidateSet("ssh", "winrm", "pcp", "local", "lxd", "docker", "remote")] [string] $Transport, [Parameter()] [ValidateNotNullOrEmpty()] [string] $ConnectTimeout, [Parameter()] [switch] $TTY, [Parameter()] [switch] $NativeSsh, [Parameter()] [string] $SshCommand, [Parameter()] [string] $CopyCommand, [Parameter()] [ValidateSet("human", "json", "rainbow")] [string] $Format, [Parameter()] [switch] $Color, [Parameter()] [switch] $Trace, [Parameter()] [switch] $Stream, [Parameter()] [ValidateSet("trace", "debug", "info", "notice", "warn", "error", "fatal", "any")] [string] $LogLevel, [Parameter()] [switch] $ClearCache, [Parameter()] [switch] $Noop, [Parameter(Mandatory=$true, Position=0, ParameterSetName='execute')] [Alias('e')] [string] $Execute, [Parameter()] [ValidateNotNullOrEmpty()] [string] $CompileConcurrency, [Parameter()] [string] $HieraConfig ) $executionParams = @('apply') $executionParams = $executionParams + (Get-BoltCommandline -parameterHash $PSBoundParameters -mapping $mapping) $result = Invoke-BoltCommandline $executionParams Write-Output $result } |