Установите Puppet Agent на сервере Windows

Есть ли способ установить Puppet Agent на сервер Windows?

Чтобы добиться этого, я создал небольшой скрипт PowerShell, но не работает должным образом.

$computers = Get-Content "C:\server.txt"
$pm_ip = '10.xx.xx.xx'
$port = '8140'

foreach ($computer in $computers) {
    $ErrorActionPreference = "SilentlyContinue"
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy AllSigned
    [Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; 
    $webClient = New-Object System.Net.WebClient; 
    $webClient.DownloadFile("https://downloads.puppetlabs.com/windows/puppet- 
    agent-5.5.3-x64.msi"); 
    extension_requests:pp_role=utility extension_requests:pp_environment=e1 
    agent:noop=true

    Write-Host "$($_.ServerName) was configured" -BackgroundColor 00 -ForegroundColor 10
}

2 ответа

используйте марионеточный болт Пожалуйста, нажмите на ссылку, чтобы узнать, что такое марионеточный код, и @ ansgar-wiechers, он самый простой, и в него также входит Puppet Enterprise и PowerShell.

https://puppet.com/docs/pe/2017.3/installing_agents.html

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

https://puppet.com/products/puppet-bolt

Главное, что мы должны отметить здесь, как указано ниже,

Безагентное

Просто подключитесь удаленно к устройству через SSH или WinRM и выполняйте команды на любой поддерживаемой платформе. Агенты не нужны, только пара ключей или пароли. Болт убирает за собой тоже!

Ссылка ниже поможет вам "как запустить команды болта марионетки"

https://puppet.com/docs/bolt/0.x/running_bolt_commands.html

перед этим вы должны настроить файл инвентаря, который содержит все узлы, которые вы должны добавить в мастер марионеток.

надеюсь, это поможет вам решить

Во-первых, в опубликованном вами коде есть несколько синтаксических ошибок. Если вы оберните строку следующим образом:

"https://downloads.puppetlabs.com/windows/puppet- 
   agent-5.5.3-x64.msi"

сервер не распознает файл. Кроме того, следующие строки не являются допустимым кодом PowerShell:

extension_requests:pp_role=utility extension_requests:pp_environment=e1 
agent:noop=true

Однако основные проблемы с вашим кодом:

  • Ваш URL неверен. Клиент Puppet 5 находится под /windows/puppet5 не прямо под /windows как старые клиенты.
  • DownloadFile() Метод ожидает как минимум 2 параметра: URL и имя выходного файла.

Измените свой код на это:

$client = 'puppet-agent-5.5.3-x64.msi'
$url    = "https://downloads.puppetlabs.com/windows/puppet5/${client}"
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$webClient = New-Object Net.WebClient
$webClient.DownloadFile($url, $client)

и он должен загрузить установщик клиента в текущий рабочий каталог.

Кроме того, выполнение цикла для каждого сервера магическим образом не запускает код на серверах. Вам нужно написать код, чтобы фактически подключаться к серверам и что-то там запускать. Загрузите установщик всего один раз, затем скопируйте MSI на все ваши серверы и запустите его удаленно:

Invoke-Command -Computer $computers -Scriptblock {
    & msiexec 'C.\path\to\puppet-agent.msi' /qn /l*v 'C:\puppet_install.log'
}
Другие вопросы по тегам