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

时间:2016-09-14 20:01:33

标签: puppet

我遇到了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"],
    }
}

1 个答案:

答案 0 :(得分:3)

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