使用Puppet时,如何等待主目录出现?

时间:2013-10-08 11:59:05

标签: ubuntu puppet

我在下面有一个puppet脚本来创建一个用户和一个授权的SSH密钥,它在50%的时间内都会失败。似乎/ home / $ username是在后台创建的,并且在尝试创建.ssh和授权密钥时并不总是存在。 Puppet失败,因为/ home / $ username不存在。但是当我看一下之后它实际上已经创建了。

如果实际完全创建主目录,怎么能让puppet继续?

  user { $username:
    name => $username,
    managehome => true,
    shell => "/bin/bash",
    groups => [ 'dip', 'admin' ];
  }

  file { "/home/${username}/.ssh":
    ensure => 'directory';
  }

  file { "/home/${username}/.ssh/authorized_keys":
    owner => "${username}",
    group => "${username}",
    mode => '0664',
    content => "${ssh_public_key}"
  }

Puppet 3.3.1和Ubuntu 12.04.3 LTS。

1 个答案:

答案 0 :(得分:2)

您正在寻找的是元参数(意味着您可以为任何类指定它)require

我假设您的木偶脚本包含在可以访问$username的范围内,因此这样的方法可行:

user { $username:
    name => $username,
    managehome => true,
    shell => "/bin/bash",
    groups => [ 'dip', 'admin' ]
}

file { "/home/${username}/.ssh":
    ensure => 'directory',
    require => User["$username"]
}

file { "/home/${username}/.ssh/authorized_keys":
    require => File["/home/${username}/.ssh"],
    owner => "${username}",
    group => "${username}",
    mode => '0664',
    content => "${ssh_public_key}"
}