2个CentOS服务器,我想申请相同的清单。 清单在/var/username下创build一个具有自定义主目录位置的/var/username
问题是在其中一个服务器上/var/username必须是符号链接/data/username 。 所以简单的运行ensure => 'directory',会试图覆盖符号链接。
而且我不能使用ensure => 'present'因为如果它不存在的话默认会创build一个文件。 所以对于新的服务器,这个清单适用于一个空白文件将被创build时,我真的需要它是一个目录。
有没有办法ensure目录或链接? 所以,如果没有创build一个目录。 如果这是一个链接,那么就把它放在一边? 默认情况下,Puppet filetypes在ensure => 'present'时创build一个文件。
或者, if absent ensure directory else leave it alone一种方式?
怎么样的exec ,做一个简单的bash if /var/username not exist then mkdir有点事情?
讨厌,但它会工作。
理想的解决scheme可能是从一开始就避免特殊情况。 在单个清单中有多个configuration变体似乎有点错误。 所以最终我会:
但为了这个问题的目的,我想知道在Puppet中是否有任何选项/语法,我目前不知道。
您始终可以使用$hostname或$certname处理exception:
file { "/var/username": mode => 440, ensure => $hostname ? { 'oddballserver' => link, default => directory, }, target => $hostname ? { 'oddballserver' => '/data/username', }
这是未经testing的,但基于我用于清单中各种事物的逻辑。 因人而异。