2014-09-27 22 views
0

我一直在玩弄木偶,我遇到了一个难倒我的问题。也许有人可以点亮一些光。这个想法是我有一个rsync脚本,更新我的puppet master上我的authorized_keys 文件。每4个小时的puppet代理抓取新的authorized_keys文件。Puppet root authorized_key文件

这里是明显的

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", 
    } 
} 

大师给我的经纪人,虽然得到这个错误

Error: Failed to apply catalog: Not a directory - /root/.ssh/authorized_keys

+0

你能确保在主模块上的'modules/policy1/files/authorized_keys'不是一个目录吗? – 2014-09-28 12:56:21

+0

是的,它不是一个目录。 – crypticsec 2014-09-28 16:37:15

回答

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', 
    } 
} 
+0

尝试两个,仍然给我的目录错误。 – crypticsec 2014-09-28 16:44:07

+0

所以我禁用清单的下半部分,我可以确认上半部分的工作 class policy1 :: sshkeys {'/root/.ssh': ensure => directory, path =>'/ root/.ssh', owner =>'root', group =>'root', mode =>'0700', – crypticsec 2014-09-28 17:53:14

+0

所以我禁用了上半部分,并且可以验证它的工作原理。所以我认为这个问题可能是第二部分,如果我禁用确保=>文件的作品。我可以看到来自主服务器的pre-seeded authorized_keys。 – crypticsec 2014-09-28 18:01:32

0

它看起来像禁用 确保=>文件, 似乎这样的伎俩。感谢Evgeny和Felix的帮助。

+0

请将答案标记为已接受。谢谢。 – 2014-09-29 13:40:32