User Tools

Site Tools


технология_vagrant

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
технология_vagrant [2022/08/17 14:31]
val
технология_vagrant [2022/08/17 15:37]
val [win cmd]
Line 15: Line 15:
 ===== Подготовка командной строки ===== ===== Подготовка командной строки =====
  
-==== win cmd === 
  
-<​code>​ 
-C:​\Users\Administrator>​ C:​\HashiCorp\Vagrant\bin\vagrant.exe 
-</​code>​ 
  
 ==== Cmder ==== ==== Cmder ====
  
   * [[Cmder]]   * [[Cmder]]
- 
 <​code>​ <​code>​
-λ alias vagrant=C:​\HashiCorp\Vagrant\bin\vagrant.exe $* 
- 
 λ bash λ bash
  
-alias vagrant=C:/\HashiCorp/\Vagrant/\bin/\vagrant.exe ​$* +λ alias vagrant=/c/HashiCorp/​Vagrant/​bin/​vagrant.exe ​  # может не понадобится, уже прописан в PATH
-или +
-$ alias vagrant=/​c/​HashiCorp/​Vagrant/​bin/​vagrant.exe+
 </​code>​ </​code>​
  
-==== mobaxterm ==== +
-<​code>​ +
-mobaxterm>​ alias vagrant=/​drives/​c/​HashiCorp/​Vagrant/​bin/​vagrant.exe $* +
-</​code>​+
  
  
Line 111: Line 99:
   config.vm.network "​private_network",​ ip: "​192.168."​ + X + "​.201"​   config.vm.network "​private_network",​ ip: "​192.168."​ + X + "​.201"​
  
-#  ​config.vm.provider "​virtualbox"​ do |vb| +  ​config.vm.provider "​virtualbox"​ do |vb| 
-   ​vb.memory = "​2048"​ +    vb.memory = "​2048"​ 
-   ​vb.cpus = "​2"​+    vb.cpus = "​2"​
  
 #    file_to_disk = config.vm.hostname + '​_disk2.vdi'​ #    file_to_disk = config.vm.hostname + '​_disk2.vdi'​
Line 120: Line 108:
 #    end #    end
 #    vb.customize ['​storageattach',​ :id, '​--storagectl',​ '​SATA',​ '​--port',​ 2, '​--device',​ 0, '​--type',​ '​hdd',​ '​--medium',​ file_to_disk] #    vb.customize ['​storageattach',​ :id, '​--storagectl',​ '​SATA',​ '​--port',​ 2, '​--device',​ 0, '​--type',​ '​hdd',​ '​--medium',​ file_to_disk]
- end+ 
 +  end
   ​   ​
 ### /My config ### ### /My config ###
Line 227: Line 216:
 ===== Multi-Machine Vagrant Environments ===== ===== Multi-Machine Vagrant Environments =====
  
-==== Внутри Vagrantfile ==== +  ​* [[https://blog.scottlowe.org/2014/10/22/​multi-machine-vagrant-with-yaml/​|Multi-Machine ​Vagrant with YAML]] 
- +  * [[https://​stackoverflow.com/​questions/​16708917/​how-do-i-include-variables-in-my-vagrantfile|How do I include variables in my VagrantFile?​]]
-  ​* [[https://www.vagrantup.com/docs/​multi-machine|Multi-Machine]]+
  
 <​code>​ <​code>​
-λ npp Vagrantfile +λ mkdir ~/nodes
-</code><​code>​ +
-... +
-Vagrant.configure("​2"​) do |config|+
  
-### My config ###+λ cd ~/nodes
  
-  config.vm.define "​node1"​ do |node1| +λ npp nodes.yaml &
-    node1.vm.network "​private_network",​ ip: "​192.168.X.201"​ +
-  end +
- +
-  config.vm.define "​node2"​ do |node2| +
-    node2.vm.network "​private_network",​ ip: "​192.168.X.202"​ +
-  end +
- +
-  config.vm.define "​node3"​ do |node3| +
-    node3.vm.network "​private_network",​ ip: "​192.168.X.203"​ +
-  end +
-   +
-### /My config ### +
-... +
-</​code>​ +
- +
-==== С использованием структур данных ruby ==== +
- +
-  * [[https://​github.com/​hashicorp/​vagrant/​issues/​9200|Vagrant is assigning the same MAC to two different VMs?]] +
- +
-<​code>​ +
-boxes = [ +
-    { +
-        :name => "​node1",​ +
-        :ip => "​192.168.X.201",​ +
-        :​vbox_config => [ +
-            { "​--cpus"​ => "​2"​ }, +
-            { "​--memory"​ => "​2048"​ } +
-        ], +
-    }, +
-    { +
-        :name => "​node2",​ +
-        :ip => "​192.168.X.202",​ +
-        :​vbox_config => [ +
-            { "​--cpus"​ => "​2"​ }, +
-            { "​--memory"​ => "​2048"​ } +
-        ], +
-    }, +
-    { +
-        :name => "​node3",​ +
-        :ip => "​192.168.X.203",​ +
-        :​vbox_config => [ +
-            { "​--cpus"​ => "​2"​ }, +
-            { "​--memory"​ => "​2048"​ } +
-        ], +
-    } +
-+
- +
-Vagrant.configure("​2"​) do |config| +
- +
-### My config ### +
-  boxes.each do |opts| +
-    config.vm.define opts[:name] do |config| +
-      config.vm.network "​private_network",​ ip: opts[:ip] +
-      config.vm.hostname = opts[:​name] +
- +
-#      config.vm.provider "​virtualbox"​ do | vb | +
-#        file_to_disk = opts[:name] + '​_2.vdi'​ +
-#        unless File.exist?​(file_to_disk) +
-#          vb.customize ['​createhd',​ '​--filename',​ file_to_disk,​ '​--size',​ 4 * 1024] +
-#        end +
-#        vb.customize ['​storageattach',​ :id, '​--storagectl',​ '​SATA',​ '​--port',​ 2, '​--device',​ 0, '​--type',​ '​hdd',​ '​--medium',​ file_to_disk] +
-#      end +
- +
-      opts[:​vbox_config].each do |hash| +
-        hash.each do |key, value| +
-          config.vm.provider :virtualbox do |vb| +
-            vb.customize ["​modifyvm",​ :id, key, value] +
-          end +
-        end +
-      end +
-    end +
-  end +
- +
-### /My config ### +
- +
-  ... +
- +
-end +
-</​code>​ +
- +
-==== С использованием json ==== +
- +
-  * [[Формат JSON]] +
-  * [[https://​blog.scottlowe.org/​2016/​01/​18/​multi-machine-vagrant-json/​|Multi-Machine Vagrant Environments with JSON]] +
- +
-<​code>​ +
-λ npp nodes.json &+
 </​code><​code>​ </​code><​code>​
-+name: "​node1"​ 
-    { +  ip: "​201"​ 
-        "name": "​node1"​, +- name: "​node2"​ 
-        "​ip": "192.168.X.201", +  ip: "​202"​ 
-        "​vbox_config":​ [ +- name: "​node3"​ 
-            { "--cpus":​ "​2"​ }, +  ip: "​203"​
-            { "​--memory":​ "​2048"​ } +
-        ] +
-    }, +
-    { +
-        "name": "​node2"​, +
-        "​ip": "192.168.X.202", +
-        "​vbox_config":​ [ +
-            { "--cpus":​ "​2"​ }, +
-            { "​--memory":​ "​2048"​ } +
-        ] +
-    }, +
-    { +
-        "name": "​node3"​, +
-        "​ip": "192.168.X.203"+
-        "​vbox_config":​ [ +
-            { "​--cpus":​ "​2"​ }, +
-            { "​--memory":​ "​2048"​ } +
-        ] +
-    } +
-]+
 </​code><​code>​ </​code><​code>​
-$ cat Vagrantfile+λ npp Vagrantfile
 </​code><​code>​ </​code><​code>​
-require 'json+... 
-boxes JSON.parse(File.read('​./nodes.json'))+require 'yaml
 +nodes YAML.load_file("./nodes.yaml")
  
 Vagrant.configure("​2"​) do |config| Vagrant.configure("​2"​) do |config|
  
 ### My config ### ### My config ###
- +  nodes.each do |opts| ​
-  boxes.each do |opts|+
     config.vm.define opts["​name"​] do |config|     config.vm.define opts["​name"​] do |config|
- +      ​config.vm.network "​private_network",​ ip: "​192.168."​ + X + "​."​ + opts["​ip"​]
-      ​config.vm.network "​private_network",​ ip: opts["​ip"​]+
       config.vm.hostname = opts["​name"​]       config.vm.hostname = opts["​name"​]
 +   ​
 +      config.vm.provider :virtualbox do |vb|
 +        # vb.name = opts["​name"​]
 +        vb.memory = "​2048"​
 +        vb.cpus = "​2"​
  
-     ​config.vm.provider "​virtualbox"​ do | vb | +        ​# file_to_disk = opts["​name"​] + '​_2.vdi'​ 
-#        ​file_to_disk = opts["​name"​] + '​_2.vdi'​ +        ​unless File.exist?​(file_to_disk) 
-       ​unless File.exist?​(file_to_disk) +          ​vb.customize ['​createhd',​ '​--filename',​ file_to_disk,​ '​--size',​ 4 * 1024] 
-         ​vb.customize ['​createhd',​ '​--filename',​ file_to_disk,​ '​--size',​ 4 * 1024] +        ​end 
-       end +        ​vb.customize ['​storageattach',​ :id, '​--storagectl',​ '​SATA',​ '​--port',​ 2, '​--device',​ 0, '​--type',​ '​hdd',​ '​--medium',​ file_to_disk]
-       ​vb.customize ['​storageattach',​ :id, '​--storagectl',​ '​SATA',​ '​--port',​ 2, '​--device',​ 0, '​--type',​ '​hdd',​ '​--medium',​ file_to_disk] +
-#      end+
  
-      opts["​vbox_config"​].each do |hash| 
-        hash.each do |key, value| 
-          config.vm.provider :virtualbox do |vb| 
-            vb.customize ["​modifyvm",​ :id, key, value] 
-          end 
-        end 
       end       end
- 
     end     end
   end   end
- 
 ### /My config ### ### /My config ###
- 
 ... ...
- +</​code><​code>​
-end +
-</​code>​ +
-<​code>​+
 λ vagrant up node1 λ vagrant up node1
  
Line 408: Line 276:
  
 ===== Дополнительные возможности ===== ===== Дополнительные возможности =====
- 
- 
  
 ==== Использование синхронизируемых каталогов ==== ==== Использование синхронизируемых каталогов ====
Line 436: Line 302:
 </​code>​ </​code>​
  
-====Multi-Machine Vagrant Environments ​=====+==== Еще варианты ​Multi-Machine Vagrant Environments ====
  
-==== Внутри Vagrantfile ​====+=== Внутри Vagrantfile ===
  
   * [[https://​www.vagrantup.com/​docs/​multi-machine|Multi-Machine]]   * [[https://​www.vagrantup.com/​docs/​multi-machine|Multi-Machine]]
Line 466: Line 332:
 </​code>​ </​code>​
  
-==== С использованием структур данных ruby ====+=== С использованием структур данных ruby ===
  
   * [[https://​github.com/​hashicorp/​vagrant/​issues/​9200|Vagrant is assigning the same MAC to two different VMs?]]   * [[https://​github.com/​hashicorp/​vagrant/​issues/​9200|Vagrant is assigning the same MAC to two different VMs?]]
Line 531: Line 397:
 </​code>​ </​code>​
  
-==== С использованием json ====+=== С использованием json ===
  
   * [[Формат JSON]]   * [[Формат JSON]]
Line 580: Line 446:
       config.vm.network "​private_network",​ ip: opts["​ip"​]       config.vm.network "​private_network",​ ip: opts["​ip"​]
       config.vm.hostname = opts["​name"​]       config.vm.hostname = opts["​name"​]
- 
-#      config.vm.provider "​virtualbox"​ do | vb | 
-#        file_to_disk = opts["​name"​] + '​_2.vdi'​ 
-#        unless File.exist?​(file_to_disk) 
-#          vb.customize ['​createhd',​ '​--filename',​ file_to_disk,​ '​--size',​ 4 * 1024] 
-#        end 
-#        vb.customize ['​storageattach',​ :id, '​--storagectl',​ '​SATA',​ '​--port',​ 2, '​--device',​ 0, '​--type',​ '​hdd',​ '​--medium',​ file_to_disk] 
-#      end 
  
       opts["​vbox_config"​].each do |hash|       opts["​vbox_config"​].each do |hash|
технология_vagrant.txt · Last modified: 2024/06/29 13:17 by val