0

我一直在玩 puppet,遇到了一个困扰我的问题。也许有人可以提供一些启示。这个想法是我有一个 rsync 脚本来更新我的 puppet master 上的 authorized_keys 文件。每 4 小时 puppet 代理抓取新的 authorized_keys 文件。

这是主清单

class policy1::sshkey {
  file { '/root/.ssh/':
    ensure  =>  directory,
    path    =>  '/root/.ssh/',
    owner   =>  'root',
    group   =>  'root',
    mode    =>   '0700',
  }

  file { '/root/.ssh/authorized_keys':
    require => File ["/root/.ssh/authorized_keys"],
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => '0600',
    source  => "puppet:///modules/policy1/authorized_keys",
  }
}

我的代理虽然收到此错误

错误:无法应用目录:不是目录 - /root/.ssh/authorized_keys

4

2 回答 2

0

在您的清单中,特别是您需要的第二个资源定义。也就是说,你想做如下的事情:

class policy1::sshkey {
  file { '/root/.ssh/':
    ensure =>  directory,
    path   =>  '/root/.ssh/',
    owner  =>  'root',
    group  =>  'root',
    mode   =>   '0700',
  }

  file { '/root/.ssh/authorized_keys':
    # Require the parent directory to be created beforehand.
    require => File['/root/.ssh/'],
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => '0600',
    source  => "puppet:///modules/policy1/authorized_keys",
  }
}

...或者我个人更喜欢:

class policy1::sshkey {
  file { '/root/.ssh':
    ensure => directory,
    path   => '/root/.ssh',
    owner  => 'root',
    group  => 'root',
    mode   => '0700',
  }->
  file { '/root/.ssh/authorized_keys':
    ensure => file,
    owner  => 'root',
    group  => 'root',
    mode   => '0600',
    source => 'puppet:///modules/policy1/authorized_keys',
  }
}
于 2014-09-27T18:58:43.670 回答
0

看起来禁用了 ensure => 文件,似乎可以解决问题。感谢 Evgeny 和 Felix 的帮助。

于 2014-09-29T12:04:54.037 回答