gpt4 book ai didi

windows - 使用 Puppet 启动和停止服务

转载 作者:可可西里 更新时间:2023-11-01 10:04:40 25 4
gpt4 key购买 nike

我想停止服务,执行 Powershell 脚本,然后使用 Puppet 再次启动服务。下面的代码不起作用,因为 My Service 被定义了两次。

service { 'My Service':
ensure => 'stopped',
require => Package['Install Go Agent']
}
exec { 'Do Stuff':
command => '...',
provider => powershell,
require => Service['Go Agent']
}
service { 'My Service':
ensure => 'started',
require => Exec['Install Go Agent']
}

本质上,我的 Powershell 脚本正在设置 Windows 服务用户名和密码,遗憾的是,您无法使用 Puppet。

最佳答案

Puppet 不是程序性的

首先,你是以程序的方式在思考这个问题。 Puppet 不是一种程序语言。它定义了你的最终状态。您想要定义 exec 何时应幂等运行并让服务订阅它。

如何

这类似于包/文件/服务,当文件更改时,您将在其中刷新(重新启动)服务。一个好的阅读是在 https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.htmlhttp://www.puppetcookbook.com/posts/restart-a-service-when-a-file-changes.html .

package { 'My Package':
ensure => latest,
}

exec { 'Do Stuff':
command => '...',
#onlyif/unless => '...', #make it idempotent
#refreshonly => true #make it idempotent
provider => powershell,
require => Package['My Package']
}

service { 'My Service':
ensure => 'started',
require => Exec['Do Stuff']
}

您绝对需要确保 PowerShell 不会每次都运行,only if it is refreshed ,或通过 onlyif 进行检查或 unless .

Windows 细节

那么现在是 Windows 细节。在 Windows 上,与 Linux 不同,您不能简单地替换和/或更新锁定的文件。因此 exec 需要检测服务是否存在,将其关闭,然后进行更新。在您的情况下,如果服务尚不存在,您可能还需要它来创建服务。您还可以在不关闭服务的情况下更新凭据。

Puppet 定义所需状态

exec 不需要做的一件事是将服务置于启动状态。这始终由服务资源处理。该服务将检测到它没有运行并在需要时自行启动。如果 exec['Do Stuf'] 由于定义关系的方式运行,它也会自行重启。

puppet future

现在看看您应该注意的 Puppet 内容!

您可以订阅、投票和评论这些内容。当我们知道用户和客户遇到的问题时,它可以帮助我们确定工作的优先级。

关于windows - 使用 Puppet 启动和停止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36015002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com