Назад | Перейти на главную страницу

Понимание варианта использования Puppet в автоматизации развертывания Windows

Мне нужно автоматизировать несколько задач в среде Windows. Используемые технологии: MS SQL Server 2008, IIS, MSMQ и т. Д. Все зависимости для запуска приложения устанавливаются на одном компьютере. Однако в производственной среде зависимости устанавливаются в разных экземплярах. На данный момент установка зависимостей (SQL-сервер, IIS и т. Д.) На любой экземпляр выполняется вручную.

Первое, что я планирую сделать, это создать базовый образ, который будет содержать все зависимые компоненты (программное обеспечение). Я думаю, что Puppet и Powershell вместе с Дженкинсом помогут мне в этом. Я новичок в Puppet и Powershell.

Моя цель:
1) автоматизировать установку программного обеспечения на базовую машину.
2) используйте этот образ во всех (или большинстве) средах (Dev, Integration, Staging, UAT, Production)

Оба вышеуказанных шага следует автоматизировать.

Теперь у меня возникла путаница, если я использую Powershell, скажем, для установки SQL-сервера (и другого программного обеспечения), тогда где Puppet появляется в картине? Я могу вызвать этот скрипт Powershell из Jenkins для развертывания в разных средах с помощью пользовательских файлов конфигурации для сред. Я не понимаю реальный вариант использования Puppet? Стоит ли мне использовать какой-либо другой инструмент, например Docker и т. Д.? Пожалуйста, направь меня.

PowerShell против Puppet - неправильный вопрос

Это даже не совсем так. Puppet может запускать сценарии PowerShell. Но есть еще одна важная причина, по которой они не совсем сопоставимы.

PowerShell - процедурный, Puppet - декларативный. Вы также можете использовать PowerShell с марионеткой, при условии, что вы используете методы, чтобы эти вызовы скриптов имели проверку идемпотентности.

exec { 'rename-guest':
  command   => file('guest/rename-guest.ps1'),
  onlyif    => file('guest/guest-exists.ps1'),
  provider  => powershell,
  logoutput => true,
}

Puppet также имеет отчеты, сравнение, автоматическое исправление изменений вне Puppet (известное как дрейф конфигурации) и многие другие функции, которые делают его инструментом управления конфигурацией, а не языком сценариев.

Puppet + PowerShell это гораздо более полное решение. Теперь давайте, возможно, посмотрим на использование собственных ресурсов для реального сокращения кода.

Пример - обеспечение установки IIS и ASP.NET

Допустим, вы хотите запустить сценарий, чтобы обеспечить установку IIS и ASP.NET. Вам нужно будет убедиться, что вы выполнили все необходимые проверки, чтобы при более чем однократном запуске этого сценария не возникла ошибка. В основном вы хотели бы убедиться, что IIS установлен, а ASP.NET настроен и выйти в противном случае.

Сделать это в Puppet несложно. Скажем, это развертывание в Windows Server 2012:

  windowsfeature { 'Web-WebServer':
    installmanagementtools => true,
  } ->
  windowsfeature { 'Web-Asp-Net45':
  } 

Это буквально все, что вам нужно для установки IIS и ASP.NET. Представьте себе количество строк PowerShell, которые вам нужно будет написать, чтобы сделать то же самое.

Существует более полный пример этого для настройки веб-сайта с разрешениями на марионетка-шоколадный_сервер.

Управление установкой SQL Server

Вы можете использовать Модуль SQL Server. Вот пример (есть более сложные примеры):

sqlserver_instance{ 'MSSQLSERVER':
  features              => ['SQL'],
  source                => 'E:/',
  sql_sysadmin_accounts => ['myuser'],
} 

Установка программного обеспечения

Это становится тривиальным, когда вы используете Шоколадный.

  • Да, Chocolatey основан на автоматической установке и PowerShell.
  • Да, Chocolatey работает с zip-файлами и исполняемыми двоичными файлами.
  • Нет, это не требует интернета.
  • Также не требуется загружать что-либо во время выполнения из Интернета.

Chocolatey - это полноценный инструмент для управления программным обеспечением, который интегрируется прямо в Puppet.

Организации, которые обычно используют Chocolatey, не используют репозиторий пакетов сообщества (https://chocolatey.org/packages) потому что предлагаемые там пакеты являются подлежат распространению и должны загружаться из официальных источников во время выполнения. Организации обычно имеют очень низкую терпимость к поломкам, поэтому они создают и размещают свои собственные пакеты (внутренне они не имеют законных прав на распространение). Таким образом, процесс является полностью безопасным, повторяемым и надежным.

package { 'notepadplusplus':
  ensure   => latest,
  provider => 'chocolatey',
  source   => 'https://internal/odata/repo/',
}