仅在完成一个文件后运行另一个PP文件

时间:2019-07-31 13:20:17

标签: ruby puppet

需要巧克力般的提供程序来安装软件包,这将起作用,但是仅在另一个pp文件执行完毕后起作用。

问题在于,up会同时评估no​​de语句下的文件和无效提供程序上的错误;问题是我通过注释掉另一个来运行第一个pp文件,然后让它运行并取消注释,然后使用p代理重新运行-测试所有工程。

我尝试了标签,并在标签中使用了if语句,但这似乎也不起作用。

class windows::chocolatey {
  exec { 'set_executionpolicy':
    command  => "set-executionpolicy unrestricted -force -scope process;
(iex((new-object
net.webclient).DownloadString('https://chocolatey.org/install.ps1')))>\$null
2>&1",
    provider => 'powershell',
    creates  => 'C:/ProgramData/chocolatey',
  }

node "web-iis-02" {
  class { 'windows':} #chocolatey installing to allow atom.pp to work
  class { 'atom': } # init.pp below install using chocolatey

#installs package
class atom {
  if tagged(windows) {
    include atom::pakages
    notify { "Calling Pakagepp script": }
  }
}

#if tagged init.pp above calls this:
class atom::pakages {
  include chocolatey
  package { 'Atom':
    ensure => 'latest',
    provider => 'chocolatey',
  }

我是从pakages.pp那里得到的:

  

错误:无法应用目录:参数提供程序失败   Package [Atom]:无效的软件包提供程序“ chocolatey”(文件:   /etc/puppetlabs/code/environments/production/modules/atom/manifests/pakages.pp,第3行)

1 个答案:

答案 0 :(得分:0)

尝试添加一个require依赖项,以便在atom类之后声明windows类:

class { 'windows': }
class { 'atom':
  require => Class['windows'],
}

又或者又快又脏:

class { 'windows': }
-> class { 'atom': }

您需要删除该tagged条件,因为它不是必需的。

从您的问题中我不能完全确定哪个类取决于哪个类,但是我很确定这是您需要的require。您可能需要为require类添加一个chocolatey

class { 'atom':
  require => Class['windows', 'chocolatey'],
}