2017-03-02 1 views
0

안녕하세요, 꼭두각시에 새롭지 만 이제는 꼭두각시를 발견하려고합니다. 실제로 저는 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" ]})\'"' : 
} 
} 

다음과 같습니다 그러나 $의 IP는 몽고의 명령에 IP를 대체하지 않기 때문에 IP 부분이 오류가없는

could not connect to the server --eval:27017 at src/mongo/shell/mongo.js:147 

아래처럼이 스피 점점 오류를 실행하는 동안 .. 나는 다른 방법을 시도했지만 모두 동일한 오류를줍니다. 실제로 꼭두각시 위에서 위와 같이 exec 명령에서 변수를 사용하는 방법을 알고 싶습니까? 어떤 도움이라도 대단히 감사합니다.

답변

1

변수는 따옴표 문자열 ("")없는 작은 따옴표 문자열 ('') 보간되고 (visual index 통해 documentation) 캐릭터 안에 형태 ${ip} 때이어야한다.

은 또한 이렇게 한 세트를 제거하여 그것을 단순화 것 bash -c 래퍼를 제거, 거기에 꽤 많은 따옴표를 가지고 : bash 쉘이 필요

exec { "mongo --host ${ip} --eval ' db = db.getSiblingDB(\"test\"); db.addUser({user: \"test\", pwd: \"test\", roles: [ \"readWrite\", \"dbAdmin\" ]})'" : 
} 

경우, 대신 provider => shell를 사용합니다.

+0

감사합니다 .. 'provider => shell'이 문제를 해결합니다.하지만 위와 같은 명령을 사용하는 bin/bash가 작동하지 않는 이유는 무엇입니까 ?? –