I got some help and the following can be done if used directly in the
vagrantfile
"10.10.10.11 10.10.10.12".scan(/\S+/)
although I am unable to substitute the variable that I export. If before
running vagrant up I export the variable
export LIST_OF_IP="10.10.10.11 10.10.10.12"
and the vagrantfile has the following:
CFG_IP = ENV['LIST_OF_IP'].scan(/\S+/)
It throws an error:
Message: NoMethodError: undefined method `scan' for nil:NilClass. Any
ideas on how the variable can be substituted
CFG_IP = ENV['LIST_OF_IP'].scan(/\S+/) ==> have also tried
"$LIST_OF_IP".scan(/\S+/)
CFG_NAME="test-vm-"
#TODO: Configure private networks and assign static ip
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.ssh.forward_agent = true
#(1..CFG_NUM).each do |i|
CFG_IP.to_enum.with_index(1).each do |ip, i|
config.vm.define CFG_NAME+"#{i}" do |s|
s.vm.box = "ceph/ubuntu-xenial"
s.vm.hostname = CFG_NAME+"#{i}"
s.vm.network :private_network, ip: ip
s.vm.provider :libvirt do |v|
v.memory = 4094
v.cpus = 2
v.nested = true
end
end
end
end
On Tuesday, February 6, 2018 at 8:40:37 AM UTC+5:30, Shashank Korada wrote:
>
> I tried to do the following:
>
> CFG_IP="$LIST_IPS".split(",") or CFG_IP="$LIST_IPS".split(" ")
>
> Neither worked and added a debug to understand
>
> DEBUG create_networks: In config found network type private_network
> options {:ip=>"$LIST_IPS", :protocol=>"tcp",
> :id=>"49129a87-dcdd-4539-a898-e2ef8b2bed38"}
>
> Dont think the substitution worked as I had expected.
>
> On Tuesday, February 6, 2018 at 12:15:05 AM UTC+5:30, Shashank Korada
> wrote:
>>
>> Thank you Alvaro. This certainly helps but since I am exporting a space
>> separated(or comma separated) variable of IP addresses can I perform
>> operations on the env var in the vagrantfile for it to become a list that u
>> mentioned
>>
>> export LIST_IP="10.10.10.10 10.10.10.11"
>>
>> in Vagrantfile:
>> CFG_IP=$LIST_IP (some action on LIST_IP)
>>
>> How can I perform some operation on the var LIST_IP in the vagrant file
>> so that CFG_IP becomes ["10.10.10.10", "10.10.10.11"] so that its usable
>> like the way you defined.
>>
>> Regards,
>>
>>
>>
>> On Monday, February 5, 2018 at 4:14:18 AM UTC+5:30, Alvaro Miranda
>> Aguilera wrote:
>>>
>>> you can use:
>>>
>>> ["192.168.11.11", "192.168.12.12"].to_enum.with_index(1).each do |ip, i|
>>>
>>> then you can use the ip and/or the index/counter i
>>>
>>> On Sun, Feb 4, 2018 at 10:39 PM, Shashank Korada <[email protected]>
>>> wrote:
>>>
>>>> Turns out I cant be exporting an array in bash.
>>>> So I now want to export a variable with space separated IPs
>>>>
>>>> ARR_IP="10.20.20.10 10.20.20.11 10.20.20.12"
>>>>
>>>> Is there a way to break this up in the Vagrantfile? Some sort of
>>>> operations?
>>>>
>>>>
>>>> On Monday, February 5, 2018 at 2:22:47 AM UTC+5:30, Shashank Korada
>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I am trying to write a Vagrantfile that spins up 'N' VMs with static
>>>>> IPs defined my me which are defined by an environment variable(array)
>>>>>
>>>>> export ARR_IP=("10.20.20.10" "10.20.20.11" "10.20.20.12")
>>>>>
>>>>> Vagrantfile:
>>>>>
>>>>> CFG_NUM = 3
>>>>> CFG_IP = "${ARR_IP[*]}"
>>>>>
>>>>> VAGRANTFILE_API_VERSION = "2"
>>>>> Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
>>>>> config.ssh.forward_agent = true
>>>>> (1..CFG_NUM).each do |i|
>>>>> config.vm.define CFG_NAME+"#{i}" do |s|
>>>>> s.vm.box = "ceph/ubuntu-xenial"
>>>>> s.vm.hostname = CFG_NAME+"#{i}"
>>>>> s.vm.network :private_network, ip: CFG_IP["#{i-1}"] ====>
>>>>> trying to iterate over IPs
>>>>> s.vm.provider :libvirt do |v|
>>>>> v.memory = 4094
>>>>> v.cpus = 2
>>>>> v.nested = true
>>>>> end
>>>>> end
>>>>> end
>>>>> end
>>>>>
>>>>> This is throwing an error for me which says IP is nil
>>>>> Error occurred while creating new network:
>>>>> {:iface_type=>:private_network, :netmask=>"255.255.255.0",
>>>>> :dhcp_enabled=>true, :forward_mode=>"nat", :ip=>nil, :protocol=>"tcp",
>>>>> :id=>"5d813bfc-2d27-49cf-8351-9948e73f9b66"}.
>>>>>
>>>>> What is the correct way to substitute the array element here?
>>>>>
>>>>> Regards
>>>>>
>>>>>
>>>>> --
>>>> This mailing list is governed under the HashiCorp Community Guidelines
>>>> - https://www.hashicorp.com/community-guidelines.html. Behavior in
>>>> violation of those guidelines may result in your removal from this mailing
>>>> list.
>>>>
>>>> GitHub Issues: https://github.com/mitchellh/vagrant/issues
>>>> IRC: #vagrant on Freenode
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Vagrant" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/vagrant-up/8af38eae-0606-4f40-ad09-22b2a04c39b3%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/vagrant-up/8af38eae-0606-4f40-ad09-22b2a04c39b3%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> --
>>> Alvaro
>>>
>>>
--
This mailing list is governed under the HashiCorp Community Guidelines -
https://www.hashicorp.com/community-guidelines.html. Behavior in violation of
those guidelines may result in your removal from this mailing list.
GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
---
You received this message because you are subscribed to the Google Groups
"Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vagrant-up/d223b0f1-555d-4f08-80db-43fb8207a29a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.