在批量Windows服务器上安装Puppet Agent

时间:2018-07-23 01:56:46

标签: powershell puppet winrm puppet-enterprise

是否可以在批量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
}

2 个答案:

答案 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

但是,代码的主要问题是:

  • 您的URL错误。 Puppet 5客户端位于/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

我们在这里要注意的主要事情如下所述

Agentless

只需通过SSH或WinRM远程连接到设备,然后在任何受支持的平台上执行命令即可。无需代理,只需密钥对或密码凭据。螺栓也会自行清理!

下面的链接可帮助您“如何运行人偶螺栓命令”

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

在此之前,您必须设置一个清单文件,其中包含您必须添加到puppet master的所有节点。

希望这可以帮助您解决