我怎样才能使最后执行的资源解析变量?
目前,rc.local 文件内部是空白的,如下所示:
[root@server1 ~]# cat /etc/rc.local
#!/bin/sh
/usr/sbin/balance -b 127.0.0.1 3306 :3306 ! :3306
另外需要澄清的是,“run-balance”执行资源使用正确解析的变量产生正确的输出,这些变量与以下“add-rclocal”资源中使用的变量相同。
班级
class balance (
$dbserver1 = 'server1',
$dbserver2 = 'server2',
) {
package { 'balance': ensure => "installed",
}->
exec { 'run-balance':
command => "/usr/sbin/balance -b 127.0.0.1 3306 ${dbserver1}:3306 ! ${dbserver2}:3306",
unless => '/bin/ps afx | grep balance > /dev/null',
}->
exec { 'add-rclocal':
command => "echo '/usr/sbin/balance -b 127.0.0.1 3306 ${dbserver1}:3306 ! ${dbserver2}:3306' >> /etc/rc.local",
}
}
答案1
我能想到的唯一能产生结果的解决方案是,如果dbserver2
传入的是空字符串。它将被定义,但是为空,因此不会分配默认值。有点像:
class { 'balance':
dbserver1 => 'dbhost1',
dbserver2 => '',
}
您可能需要检查您的输入。也许可以输入类似这样的内容来查询这些变量被分配为:
warning("Balance was passed servers ${dbserver1} and ${dbserver2}.")
这将发出日志流中的变量。