首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理傀儡模块中的linux和windows?

如何处理傀儡模块中的linux和windows?
EN

Stack Overflow用户
提问于 2015-10-09 10:53:44
回答 1查看 1.8K关注 0票数 2

我有一个为linux系统编写的大型模块。但是我需要它在windows上工作,所以我想重写它来处理这两种情况。

有很多清单,据我所见,到目前为止,大多数清单都应该适用于Windows,因为傀儡会看到它在windows上运行,并选择最佳的提供者。

然而,有一些部分不能工作。例如,此主管将无法在windows上工作。

代码语言:javascript
运行
复制
    exec { 'touch_file' :
      command => 'touch /etc/test.txt',
      path    => ['/bin', '/usr/bin'],
      cwd     => '/tmp',
      creates => '/etc/test.txt',
    }

这在linux中是可行的,但在Windows中,我会将其更改为powershell命令,并更改creates、cwd和path。我可以将每个部分更改为${variable},并在Exec语句之上有一个case语句,该语句基于::osgroup选择正确的变量,但我不确定这是否是处理此问题的最佳方法。有更好的方法来处理多操作系统模块吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 16:02:09

有时候,根据您所针对的操作系统,有不同的执行人员会更好。请参阅agent作为一个很好的例子:

agent/blob/f76482b2b68bd80115de87037ba71068bea4e35b/manifests/init.pp#L36-L46

代码语言:javascript
运行
复制
    if $::osfamily == 'windows' {
      class { '::puppet_agent::prepare': } ->
      class { '::puppet_agent::windows::install': }
    }
    else {

      if $::operatingsystem == 'SLES' and $::operatingsystemmajrelease == '10' {
        $_package_file_name = "${puppet_agent::package_name}-${puppet_agent::params::master_agent_version}-1.sles10.${::architecture}.rpm"
      } elsif $::operatingsystem == 'Solaris' and $::operatingsystemmajrelease == '10' {
        $_package_file_name = "${puppet_agent::package_name}-${puppet_agent::params::master_agent_version}-1.i386.pkg.gz"
      }

      class { '::puppet_agent::prepare':
        package_file_name => $_package_file_name,
      } ->
      class { '::puppet_agent::install':
        package_file_name => $_package_file_name,
      } ->
      class { '::puppet_agent::service': }

      contain '::puppet_agent::prepare'
      contain '::puppet_agent::install'
      contain '::puppet_agent::service'
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33036425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档