Рубрики
Uncategorized

Новый кукольный болт PowerShell Comdlets

Кукольный болт теперь корабли (по состоянию на версии 2.20.0) с нативными командами PowerShell, которые автоматически сгенерированы … С меткой кукол, щекотлями, дежопами.

Кукольный болт Сейчас корабли (по состоянию на версии 2.20.0) с родом PowerShell CMDLETS которые автоматически генерируются из исходного кода болта с правильной PowerShell глагол-существительное семантика, знакомый параметр PowerShell конвенции и идентичный болт Помощь документации . Все эти функции работают вместе, чтобы понизить команды болтов в обнаруженном и понятном способе и позволяют использовать мощные функции языка PowerShell с помощью болта.

Что делать

Как вы узнаете, какой инструмент использовать, если вы не знаете, какие инструменты доступны? Одна из первых вещей, которые вы узнаете, когда используете PowerShell, это как получить помощь, используя Get-Command и Получить справку Отказ Это два очень мощных командлетах, которые позволяют интуитивно понятное обнаружение доступных инструментов и как использовать выбранный инструмент.

Get-Command Это универсальный инструмент, который может найти команду PowerShell в системе с использованием различных фильтров и возвращает информацию как на команде, и откуда приходит команда. Ранее мы отправляем только болт Команда с болтом:

PS > Get-Command bolt

CommandType     Name  Version    Source
-----------     ----  -------    ------
Function        bolt  2.23.0     PuppetBolt

Это не значит для обнаружения и требует, чтобы вы запустили болт Команда, чтобы узнать, что это может сделать. Если мы вместо этого начну на поверхность команд болтов в виде командлетов PowerShell, мы можем начать использовать преимущества обоих Get-Command и конвенции Cmdlet PowerShell для увеличения обнаружения:

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

Теперь мы можем увидеть большой список команд с использованием синтаксиса Verb-существительного VOWERSHELL. Даже если вы не знакомы с Verb-существительными соглашениями PowerShell, чтение списка команд дает вам немедленное общее представление о том, что возможно с помощью болта. Есть планы и Скрипты , Задачи и Проекты , концепции, как вызывающие команды и получают информацию из системы. Сканирование списка Получает немедленную информацию, которую вы можете использовать, чтобы выбрать, какой инструмент для завершения вашей задачи.

Если вы знакомы с соглашениями Verb-существительных PowerShell, вы можете начать просверлить и быстро решить, какую команду сделает то, что вы хотите. Например, вы можете узнать, как получить список задач болтов в системе. Вы знаете, что условные конвенции Verb-существительных PowerShell диктуют, что все команды, которые возвращают использование информации Получить Как глагол, и что существительное должно содержать слово, связанное с возвращенной информацией, Задача Отказ Используя эту информацию, вы запускаете Get-Command и скажи это, чтобы найти Puppetbolt. Модуль для всех команд, использующих глагол Получить и есть существительное со словом Задача В нем используя подстановочный знак:

PS > Get-Command -Module PuppetBolt -Verb Get -Noun *task*

CommandType     Name          Version    Source
-----------     ----          -------    ------
Function        Get-BoltTask  2.23.0     PuppetBolt

С Get-Command Мы нашли Get-BottTask быстро в одной попытке, тогда как нам пришлось бы позвонить болт --help. Тогда Задача болта --help найти ту же информацию. Нам не нужно было читать документацию, чтобы узнать, какую команду запустить, мы уже знали от конвенций Powershell, что любой Получить Команда вернет один или несколько предметов и что команда с существительным Болттасская Возвращает информацию о задачах.

Все это отлично подходит для того, чтобы выяснить, какую команду нам нужно запустить, но как мы знаем, как это использовать? В следующем разделе мы рассмотрим использование Получить справку Для этого, но прежде чем мы можем использовать Get-Command В последний раз выяснить несколько быстрых битов синтаксиса:

PS > Get-Command Get-BoltTask -Syntax

Get-BoltTask [[-Name] ] [-LogLevel ] [-Modulepath ] [-Project ] [-Configfile ] [-Filter ] [-Format ] [-Version] []

Вывод, возвращенный Get-Command звонит обратно в открытие параграфов этого поста. Мы использовали исходный код болта для генерации этих командлетов PowerShell, поэтому каждый командлет заполняется параметрами и справочниками текста для каждой команды BOLT. Поскольку они отформатированы с использованием конвенций PowerShell, такие команды, как Get-Command и Получить справку Может разбирать эти новые COLT PowerShell Cmdlets и возврату структурированной информации. Когда мы побежали Get-Command Get-BottTask -syntax PowerShell анализирует командлеты болтов и возвратил для нас структурированную информацию параметров. Это чрезвычайно мощно для открытия команды.

Получать помощь

Теперь мы знаем команду, которую мы хотим запустить, но как мы узнаем, как запустить его? Мы можем использовать Получить справку для этого. Хотя мы можем получить далеко с несколькими конвенциями, использующими Get-Command , командлет Получить справку Действительно сияет, помогая нам понять, как их использовать. С Get-BottTask Это командлет PowerShell и содержит справку на основе PowerShell Comments, мы можем использовать Получить справку Чтобы прочитать подробную информацию о том, как его использовать:

PS > Get-Help Get-BoltTask

NAME
    Get-BoltTask

SYNOPSIS
    bolt task show [task] [options]


SYNTAX
    Get-BoltTask [[-Name] ] [-LogLevel ] [-Modulepath ] [-Project
    ] [-Configfile ] [-Filter ] [-Format ] [-Version]
    []


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-BottTask -daileded , вы можете увидеть каждый COLT PowerShell Cmdlet содержит весь текст помощи болта для каждой команды и параметра:

PARAMETERS
    -Name 
        The task to show

    -LogLevel 
        Set the log level for the console. Available options are
        debug, info, notice, warn, error, fatal, any.

    -Modulepath 
        List of directories containing modules, separated by ';'
        Directories are case-sensitive

    -Project 
        Specify what project to load config from (default: autodiscovered from current working
        dir)

    -Configfile 
        Specify where to load config from (default: ~/.puppetlabs/bolt/bolt.yaml).
        Directory containing bolt.yaml will be used as the project directory.

Это показывает, что генерируемые командлеты PowerShell имеют Напечатано Параметры. Параметры, которые принимают строки, отлиты от [строка] , параметры, которые принимают ряд значений теперь есть [Validateset ()] , и так далее. Большинство параметров Болла переводят естественным путем к конвенциям PowerShell. Мы потратили много времени, чтобы убедиться, что этот перевод соответствует семантике PowerShell. Небольшой список соображений для параметров следует:

  • Обязательные параметры обнаружены и установлены как Обязательный
  • Обнаруживает, когда атрибуты валидации могут быть применены на уровне PowerShell
  • Обнаруживает общие наборы параметров для команд
  • Добавлено новое Имя Параметры для команд, как команда , Задача или План и установить как Обязательно и позиционный
  • Логические параметры ( - [нет] -SSL-проверки ) рухнуты в одну PowerShell Переключатель параметр --Sslvify.

Все это проявляется в Получить справку Выход, используя команды, с которыми вы знакомы, без страницы через несколько страниц Команда Bolt Run --help Чтобы узнать, какой параметр будет делать то, что.

Используя то, что вы узнали

Установка всех этих усилий в создание этих команд и параметров болтов и параметров имеют типы PowerShell, а валидация платит дивиденды не только с помощью системы PowerShell, но также позволяет некоторым очень мощным способам вызывать команды болтов.

Мы видим, как, используя то, что мы накрыли до сих пор в реальном мире. Допустим, мы хотим получить статус службы печати Spooler на удаленной цели. Использование Болт --help Тогда Задача болта --help Тогда Задача Болта Показать Тогда Задача болта Show Service Мы можем видеть, что нам нужно запустить Задача болтов Run -t localhost сервис Для того, чтобы проверить статус напечатанного Spooler.

Это было около 3 команд и много чтения через страницы параметров, чтобы узнать, что делать. Если парам мы хотим перейти к Сервис Задача становится сложной, мы можем использовать JSON вместо этого, но это еще одна линия для записи.

Если мы помним, что новые Cmdlets New Bolt PowerShell следуют конвенциям PowerShell Verb-существительных, мы можем использовать тот же процесс обнаружения, который мы видели ранее в этом посте, чтобы найти команду для использования. Мы знаем, что Вызывать Является ли Конвенция Powershell Verb для выполнения чего-либо, и мы знаем Болттасская Это существительное, которое нам нужно, применяя конвенции существительных PowerShell. Без необходимости думать об этом много или запускать ряд команд, мы знаем, чтобы использовать Invoke-BottTask выполнять задачи. Чтобы узнать, как использовать Invoke-BottTask Мы бежим Get-Helpoke-botttask -deatailed И посмотрите список параметров, необходимых для запуска команды и придумайте:

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 для облегчения прохождения ввода для крепления. -парамс Параметр принимает хэш PowerShell и преобразует его под крышками на строку JSON, чтобы пройти к болту. Это означает, что мы можем получить так просто или сложно, как мы хотим определить его, и PowerShell справится с сложностью отправки его на болт.

Мы можем сделать его еще один шаг вперед и использовать параметр PowerShell Splatting внутри скрипта PowerShell, чтобы мы могли повторно использовать одни и те же данные для нескольких команд в наших сценариях:

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

Упаковка

Мы думаем, что потратили время и усилия, чтобы пополнить команды болтов, поскольку нативные командлеты PowerShell доказываются эффективными путем простоты использования, продемонстрированной выше. Использование некоторых простых сценариев мы показали, как Comdlets PowerShell увеличивают обнаружение нашего набора набора и облегчают понимание того, как его использовать. Затем мы освещали, как язык PowerShell также облегчает выражение сложных наборов параметров для болта и включает мощные сценарии сценариев.

Оригинал: «https://dev.to/jpogran/new-puppet-bolt-powershell-cmdlets-354f»