새 Puppet Bolt PowerShell cmdlet

11542 단어 puppetpuppetboltdevops
Puppet Bolt은 현재(2.20.0 버전부터) PowerShell 네이티브 cmdlets과 함께 Bolt 소스 코드에서 자동으로 생성된 것으로 정확한 PowerShell verb-noun의 의미, 익숙한 PowerShell 매개 변수 conventions과 같은 Bolt help documentation을 가지고 있습니다.이러한 모든 기능은 Bolt 명령을 검색하고 이해할 수 있는 방식으로 표시하며 Bolt에서 강력한 PowerShell 언어 기능을 지원합니다.

어떻게


만약 당신이 어떤 공구를 사용할 수 있는지 모른다면, 당신은 어떻게 사용할 공구를 찾습니까?PowerShell을 사용할 때 가장 먼저 배워야 할 것은 Get-CommandGet-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의 기능을 대략적으로 이해할 수 있습니다.plansscripts, tasksprojects이 있는데 이런 개념은 명령을 호출하고 시스템에서 정보를 얻는 것을 포함한다.목록을 스캔하면 즉시 정보를 얻을 수 있으며, 이 정보를 사용하여 작업을 완성할 도구를 선택할 수 있습니다.
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-CommandGet-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으로 설정
  • PowerShell 레벨
  • 테스트 검증 속성 적용 시기
  • 검측 명령
  • 의 공공 매개 변수 집합
  • name, command 또는 task 등의 명령에 새로운 plan 매개 변수를 추가하고 Mandatorypositional으로 설정합니다.
  • 부울 매개변수(--[no]-ssl-verify) 축소: PowerShell switch 매개변수 --SslVerify
  • 이 모든 것은 Get-Help 출력에 표시되며, 익숙한 명령을 사용하십시오. bolt command run --help의 몇 페이지를 뒤져서 어떤 파라미터가 어떤 역할을 하는지 찾을 필요가 없습니다.

    네가 배운 것을 이용하다


    이러한 Bolt 명령과 파라미터가 PowerShell 형식과 검증을 가지도록 하는 데 모든 정력을 기울이면 PowerShell 도움말 시스템을 통해 이익을 얻을 수 있을 뿐만 아니라, 매우 강력한 방법으로Bolt 명령을 호출할 수 있다.
    우리는 현실 세계의 예에서 지금까지 우리가 토론한 내용을 사용함으로써 그것이 어떻게 실현되었는지 이해할 수 있다.원격 목표의 백엔드 프린터 서비스 상태를 가져오려고 한다면bolt --help, bolt task --help, bolt task showbolt 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 언어가 복잡한 매개 변수 집합을 볼트로 표시하고 강력한 스크립트 장면을 지원하는 방법을 소개했습니다.

    좋은 웹페이지 즐겨찾기