새 Puppet Bolt PowerShell cmdlet
11542 단어 puppetpuppetboltdevops
어떻게
만약 당신이 어떤 공구를 사용할 수 있는지 모른다면, 당신은 어떻게 사용할 공구를 찾습니까?PowerShell을 사용할 때 가장 먼저 배워야 할 것은
Get-Command
과 Get-Help
을 어떻게 사용해서 도움을 받는지 배우는 것이다.이것은 매우 강력한 cmdlet으로 사용 가능한 도구와 선택한 도구를 직관적으로 발견할 수 있습니다.Get-Command
은 다양한 필터를 사용하여 시스템의 모든 PowerShell 명령을 찾아 명령 및 명령 소스에 대한 정보를 반환하는 다기능 도구입니다.이전에는 bolt
명령만 Bolt와 함께 발포되었습니다.PS > Get-Command bolt
CommandType Name Version Source
----------- ---- ------- ------
Function bolt 2.23.0 PuppetBolt
이것은 발견성에 큰 도움이 되지 않기 때문에 bolt
명령을 실행해서 그것이 무엇을 할 수 있는지 알아야 한다.Bolt 명령을 PowerShell cmdlet으로 공개하기 시작하면, Get-Command
과 PowerShell의 cmdlet 약속을 이용하여 발견성을 높일 수 있습니다.PS > Get-Command *bolt*
CommandType Name Version Source
----------- ---- ------- ------
Function bolt 2.23.0 PuppetBolt
Function Convert-BoltPlan 2.23.0 PuppetBolt
Function Get-BoltGroup 2.23.0 PuppetBolt
Function Get-BoltInventory 2.23.0 PuppetBolt
Function Get-BoltPlan 2.23.0 PuppetBolt
Function Get-BoltPuppetfileModules 2.23.0 PuppetBolt
Function Get-BoltTask 2.23.0 PuppetBolt
Function Install-BoltPuppetfile 2.23.0 PuppetBolt
Function Invoke-BoltApply 2.23.0 PuppetBolt
Function Invoke-BoltCommand 2.23.0 PuppetBolt
Function Invoke-BoltPlan 2.23.0 PuppetBolt
Function Invoke-BoltScript 2.23.0 PuppetBolt
Function Invoke-BoltTask 2.23.0 PuppetBolt
Function New-BoltPlan 2.23.0 PuppetBolt
Function New-BoltProject 2.23.0 PuppetBolt
Function New-BoltSecretKey 2.23.0 PuppetBolt
Function Protect-BoltSecret 2.23.0 PuppetBolt
Function Receive-BoltFile 2.23.0 PuppetBolt
Function Register-BoltPuppetfileTypes 2.23.0 PuppetBolt
Function Send-BoltFile 2.23.0 PuppetBolt
Function Unprotect-BoltSecret 2.23.0 PuppetBolt
Function Update-BoltProject 2.23.0 PuppetBolt
현재 우리는 PowerShell의 동사 - 명사 문법을 대량으로 사용하는 명령을 볼 수 있다.PowerShell의 동사 - 명사 약정에 익숙하지 않더라도 명령 목록을 읽으면 Bolt의 기능을 대략적으로 이해할 수 있습니다.plans
과 scripts
, tasks
과 projects
이 있는데 이런 개념은 명령을 호출하고 시스템에서 정보를 얻는 것을 포함한다.목록을 스캔하면 즉시 정보를 얻을 수 있으며, 이 정보를 사용하여 작업을 완성할 도구를 선택할 수 있습니다.PowerShell의 동사 - 명사 약정에 익숙하면 어떤 명령이 원하는 동작을 실행할지 깊이 있게 이해하고 신속하게 결정할 수 있습니다.예를 들어 시스템에서 볼트 작업 목록을 가져오는 방법을 알고 싶을 수도 있습니다.PowerShell의 동사 - 명사약정은 모든 정보를 반환하는 명령은
Get
을 동사로 사용하고 명사는 되돌아오는 정보와 관련된 단어 Task
을 포함해야 한다는 것을 알고 있습니다.이 정보를 사용하면 Get-Command
을 실행하고 PuppetBolt
모듈에서 동사 Get
을 사용하는 모든 명령과 단어 task
의 명사를 포함하는 어댑터를 사용하는 명령을 검색할 수 있습니다.PS > Get-Command -Module PuppetBolt -Verb Get -Noun *task*
CommandType Name Version Source
----------- ---- ------- ------
Function Get-BoltTask 2.23.0 PuppetBolt
Get-Command
을 사용하면 한 번에 Get-BoltTask
을 찾을 수 있습니다. bolt --help
으로 전화를 걸고 bolt task --help
으로 전화를 걸어야 같은 정보를 찾을 수 있습니다.우리는 실제로 문서를 읽지 않아도 어떤 명령을 실행할지 알 수 있다. PowerShell의 약속에서 Get
명령은 하나 이상의 항목을 되돌려주고, 명사인 BoltTask
명령은 임무에 대한 정보를 되돌려준다는 것을 알았다.이 모든 것은 우리가 어떤 명령을 실행해야 하는지 확인하는 데 도움이 되지만, 우리는 그것을 어떻게 사용하는지 어떻게 알 수 있습니까?다음 섹션에서는
Get-Help
을 사용하여 이 목적을 달성하는 방법을 연구하지만 그 전에 Get-Command
을 사용하여 몇 가지 빠른 문법을 이해할 수 있습니다.PS > Get-Command Get-BoltTask -Syntax
Get-BoltTask [[-Name] <string>] [-LogLevel <string>] [-Modulepath <string>] [-Project <string>] [-Configfile <string>] [-Filter <string>] [-Format <string>] [-Version] [<CommonParameters>]
Get-Command
에서 되돌아오는 출력은 본문의 시작 단락을 되돌려줍니다.Bolt 소스 코드를 사용하여 이 PowerShell cmdlet을 생성합니다. 따라서 모든 cmdlet은 Bolt 명령의 매개 변수와 도움말 텍스트를 채웁니다.PowerShell 규약을 사용하여 포맷된 것이기 때문에 Get-Command
과 Get-Help
등 명령은 이 새로운 Bolt PowerShell cmdlet을 해석하고 구조화된 정보를 되돌려줍니다.Get-Command Get-BoltTask -Syntax
을 실행할 때 PowerShell은 Bolt cmdlet을 분석하고 구조화된 매개 변수 정보를 되돌려줍니다.이것은 명령 발견에 있어서 매우 강력하다.도움을 구하다
이제 우리는 실행할 명령을 알았지만, 어떻게 실행할 명령을 찾을 수 있습니까?
Get-Help
을 사용할 수 있습니다.비록 우리는 Get-Command
을 사용하여 몇 가지 약속을 실현할 수 있지만, cmdlet Get-Help
은 우리가 그것들을 어떻게 사용하는지 이해하는 데 도움을 주는 데 확실히 뛰어나다.Get-BoltTask
은 PowerShell cmdlet이며 PowerShell 주석 기반 도움말이 포함되어 있으므로 Get-Help
을 사용하여 PowerShell 주석을 사용하는 방법에 대한 자세한 내용을 확인할 수 있습니다.PS > Get-Help Get-BoltTask
NAME
Get-BoltTask
SYNOPSIS
bolt task show [task] [options]
SYNTAX
Get-BoltTask [[-Name] <String>] [-LogLevel <String>] [-Modulepath <String>] [-Project
<String>] [-Configfile <String>] [-Filter <String>] [-Format <String>] [-Version]
[<CommonParameters>]
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.
RELATED LINKS
https://puppet.com/products/bolt
https://puppet.com/docs/bolt/latest/bolt_command_reference.html
REMARKS
To see the examples, type: "get-help Get-BoltTask -examples".
For more information, type: "get-help Get-BoltTask -detailed".
For technical information, type: "get-help Get-BoltTask -full".
For online help, type: "get-help Get-BoltTask -online"
Get-Help
을 사용하면 명령을 통해 포맷하는 데 도움을 받을 수 있습니다.Get-Help Get-BoltTask -Detailed
을 사용하여 출력을 보면 각 Bolt PowerShell cmdlet은 각 명령과 매개변수에 대한 Bolt 도움말 텍스트를 모두 볼 수 있습니다.PARAMETERS
-Name <String>
The task to show
-LogLevel <String>
Set the log level for the console. Available options are
debug, info, notice, warn, error, fatal, any.
-Modulepath <String>
List of directories containing modules, separated by ';'
Directories are case-sensitive
-Project <String>
Specify what project to load config from (default: autodiscovered from current working
dir)
-Configfile <String>
Specify where to load config from (default: ~/.puppetlabs/bolt/bolt.yaml).
Directory containing bolt.yaml will be used as the project directory.
이는 생성된 PowerShell cmdlet에 유형화된 매개변수가 있음을 나타냅니다.문자열을 받아들이는 매개 변수는 [string]
으로 강제로 변환되고, 일련의 값을 받아들이는 매개 변수는 현재 [ValidateSet()]
으로 추정됩니다.Bolt의 매개변수 대부분은 PowerShell 규칙으로 변환됩니다.우리는 이 번역들이 PowerShell의 의미에 부합되는지 확인하는 데 많은 시간을 들였다.다음은 매개변수에 대한 주의 사항입니다.Mandatory
으로 설정name
, command
또는 task
등의 명령에 새로운 plan
매개 변수를 추가하고 Mandatory
및 positional
으로 설정합니다.--[no]-ssl-verify
) 축소: PowerShell switch
매개변수 --SslVerify
Get-Help
출력에 표시되며, 익숙한 명령을 사용하십시오. bolt command run --help
의 몇 페이지를 뒤져서 어떤 파라미터가 어떤 역할을 하는지 찾을 필요가 없습니다.네가 배운 것을 이용하다
이러한 Bolt 명령과 파라미터가 PowerShell 형식과 검증을 가지도록 하는 데 모든 정력을 기울이면 PowerShell 도움말 시스템을 통해 이익을 얻을 수 있을 뿐만 아니라, 매우 강력한 방법으로Bolt 명령을 호출할 수 있다.
우리는 현실 세계의 예에서 지금까지 우리가 토론한 내용을 사용함으로써 그것이 어떻게 실현되었는지 이해할 수 있다.원격 목표의 백엔드 프린터 서비스 상태를 가져오려고 한다면
bolt --help
, bolt task --help
, bolt task show
및 bolt task show service
을 사용하여 백그라운드 프린터 상태를 확인하려면 bolt task run -t localhost service name=spooler action=status
을 실행해야 합니다.이것은 무엇을 해야 할지 찾기 위해 세 개의 명령과 대량의 매개 변수 페이지를 읽는 것이다.
service
작업에 전달할 매개 변수가 복잡해지면 JSON을 사용할 수 있지만 이것은 다른 줄 코드입니다.새 Bolt PowerShell cmdlet이 PowerShell 동사 - 명사 약속을 따르는 것을 기억한다면, 본문 앞에서 본 것과 같은 발견 과정을 사용하여 사용할 명령을 찾을 수 있습니다.우리는
Invoke
이 어떤 일을 수행하는 PowerShell 동사 약정이라는 것을 알고 있으며, BoltTask
은 PowerShell 명사 약정을 응용하는 데 필요한 명사라는 것을 알고 있다.너무 많은 명령을 고려하거나 실행할 필요가 없습니다. 우리는 Invoke-BoltTask
을 사용하여 임무를 수행할 수 있습니다.Invoke-BoltTask
을 사용하는 방법에 대해 알아보려면 Get-Help Invoke-BoltTask -detailed
을 실행하고 명령을 실행하는 데 필요한 매개 변수 목록을 살펴보고 다음을 수행합니다.PS > Invoke-BoltTask -Targets localhost -Name service -Params @{ name = 'spooler'; action = 'status' }
Started on localhost...
Finished on localhost:
{
"status": "running",
"enabled": "true"
}
Successful on 1 target: localhost
Ran on 1 target in 9.24 sec
이는 PowerShell 언어 구조를 사용하여 Bolt에 입력을 쉽게 전달하는 능력을 보여 줍니다.-params
매개 변수는 PowerShell 산열을 받아들여 표지 아래에서 JSON 문자열로 변환하여 Bolt에 전달합니다.이것은 우리가 필요에 따라 그것을 정의하여 간단하거나 복잡하게 할 수 있음을 의미하며, PowerShell은 그것을 볼트에 보내는 복잡성을 처리할 것이다.PowerShell 스크립트에서 PowerShell 매개 변수 Splating을 사용하면 스크립트의 여러 명령에서 동일한 데이터를 재사용할 수 있습니다.
PS > gc .\getserviceinfo.ps1
$spoolerParams = @{
Name = 'service'
Params = @{
name = 'spooler'
action = 'status'
}
Targets = 'localhost'
}
Invoke-BoltTask @spoolerParams
PS > .\getserviceinfo.ps1
Started on localhost...
Finished on localhost:
{
"status": "running",
"enabled": "true"
}
Successful on 1 target: localhost
Ran on 1 target in 9.68 sec
마무리
우리는 Bolt 명령을 본체 PowerShell cmdlet으로 보여주는 데 시간과 정력을 들인 것이 이 점을 증명했다고 생각한다.몇 가지 간단한 장면을 통해 PowerShell cmdlet은 도구 모음의 발견성을 향상시키고 이를 어떻게 사용하는지 이해하기 쉽게 보여 줍니다.그리고 PowerShell 언어가 복잡한 매개 변수 집합을 볼트로 표시하고 강력한 스크립트 장면을 지원하는 방법을 소개했습니다.
Reference
이 문제에 관하여(새 Puppet Bolt PowerShell cmdlet), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jpogran/new-puppet-bolt-powershell-cmdlets-354f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)