傀儡代码删除了一个文件,而不是替换

puppet code deleted a file, instead of replacing

我在使用 puppet 模块时遇到问题,这个模块应该根据 Redhat 版本替换 /etc/ssh/sshd_config 文件。所以问题是,在应用代码后,puppet 删除了文件,而不是替换它。

如果我的代码有任何错误,请有人提出建议。

这是我的人偶清单文件;

class os_vul_ssh {
    case $::operatingsystemmajrelease {
        '6':{$sshconfigfile = 'sshd_config.rhel6'}
        '7':{$sshconfigfile = 'sshd_config.rhel7'}
    }

    package { "openssh-server":
        ensure    =>  installed,
    }

    service { 'sshd':
        ensure    =>  "running",
        enable    =>  true,
        require   =>  Package["openssh-server"],
    }

    file { "/etc/ssh/sshd_config":
        owner     =>  root,
        group     =>  root,
        mode      =>  '0644',
        source    =>  "puppet:///modules/os_vul/${::sshconfigfile}",
        require   =>  Package["openssh-server"],
        notify    =>  Service["sshd"],
    }
}
file { "/etc/ssh/sshd_config":
  ensure  => file, <----- this is missing
  owner   => root,
  group   => root,
  mode    => '0644',
  source  => "puppet:///modules/os_vul/${::sshconfigfile}",
  require => Package["openssh-server"],
  notify  => Service["sshd"],
}

这里可能会发生更多的事情,但这是我想到的第一个问题。

顺便说一下,你可以用这个清理你的代码:

file { "/etc/ssh/sshd_config":
  ensure  => file,
  owner   => root,
  group   => root,
  mode    => '0644',
  source  => "puppet:///modules/os_vul/sshd_config.rhel${::operatingsystemmajrelease}",
  require => Package["openssh-server"],
  notify  => Service["sshd"],
}

如果您使用的是 Facter 3,请考虑将您的事实更改为:

$facts['operatingsystemmajrelease']

并注意您的 sshconfigfile 是局部变量,应作为局部变量 $sshconfigfile 而不是全局变量 $::sshconfigfile.

包含在您的文件资源中