是否可以在批量Windows服务器上安装Puppet Agent?
为此,我创建了一个小的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
}
答案 0 :(得分:1)
一方面,您发布的代码中存在几个语法错误。如果您将这样的字符串包装起来:
"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
但是,代码的主要问题是:
/windows/puppet5
下,而不像旧客户端位于/windows
之下。DownloadFile()
方法至少需要两个参数: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'
}
答案 1 :(得分:1)
使用木偶螺栓 请单击链接以查看什么是木偶代码,@ ansgar-wiechers,这是最简单的代码,并且puppet enterprise也随附了powershell
https://puppet.com/docs/pe/2017.3/installing_agents.html#installing-windows-agents
请检查此链接以了解如何使用Powershell脚本在单个节点上安装Windows代理,但是您必须在多个节点上使用安装它,此处提供了puppet bolt帮助。
https://puppet.com/products/puppet-bolt
我们在这里要注意的主要事情如下所述
只需通过SSH或WinRM远程连接到设备,然后在任何受支持的平台上执行命令即可。无需代理,只需密钥对或密码凭据。螺栓也会自行清理!
下面的链接可帮助您“如何运行人偶螺栓命令”
https://puppet.com/docs/bolt/0.x/running_bolt_commands.html
在此之前,您必须设置一个清单文件,其中包含您必须添加到puppet master的所有节点。
希望这可以帮助您解决