2016-09-09 1 views
1

여러 VM을 구동하는 데 사용할 수있는 Vagrantfile을 함께 사용하고 있습니다. 사용하려는 플레 북을 안전하게 말할 필요가있는 비트와는 별개로 작동합니다. 이것은 기존 구조의 최상부에 부과되고 있으므로 파일 위치를 변경할 수있는 범위가 거의 없습니다.Vagrantfile에서 변수를 인용 줄에 다시 사용하려면 어떻게해야합니까?

hosts = [ 
{ name: 'myhost01',  hostname: 'vg-myhost01', ip: '172.172.99.99', memory:'512', cpu: 1, box: 'centos', port_forward: [] }, 
] 

    config.vm.provision :ansible do |ansible| 
     ansible.playbook = ['install/mydir/install_', :name, '.yml'] 
    end 

는 기본적으로 나는 그것이

ansible.playbook = 'install/mydir/install_myhost01.yml' 

하지만 같은 설정으로 끝날하는 방법을 알아 내려고 노력 해요 : 여기

Vagrantfile에서 해당 비트의 추출물이다 그 문맥에서 변수로 :name을 인식하도록 올바른 구문을 얻을 수없는 것 같습니다. 그 중 하나는 install_.yml, install_name.yml를 실행하려고하거나 가장 일반적으로 오류 제공 :

`initialize': no implicit conversion of Symbol into String (TypeError)

어떤 제안?

답변

2

Ruby 구문에 대해 더 많은 질문이 있습니다. 당신은 사용할 수 있습니다

ansible.playbook = 'install/mydir/install_' + name + '.yml' 

또는 (Frédéric Henri 덕분에)

ansible.playbook = "install/mydir/install_#{name}.yml" 

을 (OP 자신의 제안에 따라) 해시에서 값을 참조하려면 :

ansible.playbook = "install/mydir/install_#{host[:name]}.yml" 
+0

루비 문법에 대해 어쩌면 "install/mydir/install _ # {name} .yml"이 더 좋을 것입니다. –

+0

실은 외모가 좋고 잘 작동합니다 :) 고맙습니다. 내 자신의 파일 두어. – techraf

+0

그 점에 대해 미안합니다.하지만 몇 달 동안 코드를 읽을 때 감사 할 것입니다. :) –

관련 문제