引号内的傀儡变量解析

引号内的傀儡变量解析

我怎样才能使最后执行的资源解析变量?

目前,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}.") 

这将发出日志流中的变量。

相关内容