在puppet exec命令中使用变量?

时间:2017-03-02 12:51:12

标签: mongodb exec puppet

你好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命令中的变量?非常感谢任何帮助。

1 个答案:

答案 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