Установите 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'
}