你好Iam刚接触木偶,现在正尝试探索木偶清单。实际上我为mongodb创建了一个清单,我想在exec中使用一个变量。但每次它都给我错误。我的mongodb.pp如下
class db::mongodb ($interface) {
$ip = inline_template("<%= scope.lookupvar('::ipaddress_${interface}') -%>")
exec {'/bin/bash -c "mongo --host $ip --eval \' db = db.getSiblingDB("test"); db.addUser({user: "test", pwd: "test", roles: [ "readWrite", "dbAdmin" ]})\'"' :
}
}
但是在运行此Iam时会出现如下错误
could not connect to the server --eval:27017 at src/mongo/shell/mongo.js:147
错误中缺少IP部分,因为$ ip并未在mongo命令中替换IP ..我尝试了不同的方法,但都给出了相同的错误。其实我想知道如何在傀儡中使用exec命令中的变量?非常感谢任何帮助。
答案 0 :(得分:1)
变量仅以双引号字符串(""
)进行插值,而不是单引号字符串(''
),并且在字符串内部时应为${ip}
形式({{ 3}},通过documentation)。
你也有很多引号,所以删除bash -c
包装会通过删除一组来简化它:
exec { "mongo --host ${ip} --eval ' db = db.getSiblingDB(\"test\"); db.addUser({user: \"test\", pwd: \"test\", roles: [ \"readWrite\", \"dbAdmin\" ]})'" :
}
如果需要bash shell,请改用provider => shell
。