This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
технология_vagrant [2023/01/25 07:12] val [Внутри Vagrantfile] |
технология_vagrant [2024/04/09 16:59] (current) val [Provision с использованием внешних скриптов] |
||
---|---|---|---|
Line 11: | Line 11: | ||
===== Установка ===== | ===== Установка ===== | ||
+ | |||
+ | * [[https://hashicorp-releases.yandexcloud.net/vagrant/]] | ||
* [[https://val.bmstu.ru/unix/HashiCorp/vagrant_2.2.10_x86_64.msi]] | * [[https://val.bmstu.ru/unix/HashiCorp/vagrant_2.2.10_x86_64.msi]] | ||
+ | * [[http://gate.isp.un/unix/HashiCorp/vagrant_2.2.10_x86_64.msi]] | ||
* Можно не перезагружать систему, но нужно перезапустить Cmder | * Можно не перезагружать систему, но нужно перезапустить Cmder | ||
Line 37: | Line 40: | ||
* [[https://val.bmstu.ru/unix/HashiCorp/ubuntu_20.04.box]] | * [[https://val.bmstu.ru/unix/HashiCorp/ubuntu_20.04.box]] | ||
+ | * [[http://gate.isp.un/unix/HashiCorp/ubuntu_20.04.box]] | ||
* [[Переменные окружения]] | * [[Переменные окружения]] | ||
Line 72: | Line 76: | ||
$ vagrant up | $ vagrant up | ||
+ | |||
+ | $ ssh -p 2222 student@localhost | ||
$ vagrant ssh | $ vagrant ssh | ||
Line 156: | Line 162: | ||
end | end | ||
- | </code> | + | </code><code> |
- | <code> | + | λ vagrant validate |
λ vagrant up | λ vagrant up | ||
... | ... | ||
Line 174: | Line 181: | ||
* [[https://stackoverflow.com/questions/15461898/passing-variable-to-a-shell-script-provisioner-in-vagrant|Passing variable to a shell script provisioner in vagrant]] | * [[https://stackoverflow.com/questions/15461898/passing-variable-to-a-shell-script-provisioner-in-vagrant|Passing variable to a shell script provisioner in vagrant]] | ||
+ | |||
+ | <code> | ||
+ | vagrant.exe ssh node2 -c 'sudo apt install open-iscsi -y' | ||
+ | |||
+ | vagrant.exe ssh node3 -c 'sudo apt install open-iscsi -y' | ||
+ | </code> | ||
<code> | <code> | ||
λ touch provision_once.sh | λ touch provision_once.sh | ||
</code><code> | </code><code> | ||
+ | #!/bin/sh | ||
+ | |||
#echo 'root:strongpassword' | chpasswd | #echo 'root:strongpassword' | chpasswd | ||
#sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config | #sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config | ||
Line 193: | Line 208: | ||
λ touch provision_onstart.sh | λ touch provision_onstart.sh | ||
</code><code> | </code><code> | ||
+ | #!/bin/bash | ||
+ | |||
X=$1 | X=$1 | ||
- | echo $X | + | echo "$X" |
- | route add default gw 192.168.$X.1 | + | route add default gw 192.168."$X".1 |
- | eval `route -n | awk '{ if ($8 =="eth0" && $2 != "0.0.0.0") print "route del default gw " $2; }'` | + | eval "$(route -n | awk '{ if ($8 =="eth0" && $2 != "0.0.0.0") print "route del default gw " $2; }')" |
chattr -i /etc/resolv.conf | chattr -i /etc/resolv.conf | ||
Line 221: | Line 238: | ||
... | ... | ||
</code><code> | </code><code> | ||
+ | vagrant@node1:~$ ls /vagrant/ | ||
+ | |||
+ | vagrant@node1:~$ shellcheck /vagrant/provision_once.sh | ||
+ | vagrant@node1:~$ shellcheck /vagrant/provision_onstart.sh | ||
+ | |||
λ vagrant provision --provision-with provision_once,provision_onstart | λ vagrant provision --provision-with provision_once,provision_onstart | ||
server# ssh vagrant@node1 | server# ssh vagrant@node1 | ||
- | |||
- | vagrant@node1:~$ ls /vagrant/ | ||
</code> | </code> | ||
Line 298: | Line 318: | ||
λ vagrant up | λ vagrant up | ||
+ | |||
+ | λ vagrant status | ||
λ vagrant ssh node2 | λ vagrant ssh node2 | ||
+ | |||
+ | λ vagrant halt node2 | ||
λ vagrant destroy node1 | λ vagrant destroy node1 | ||
Line 307: | Line 331: | ||
λ cd ~/conf/vagrant/nodes | λ cd ~/conf/vagrant/nodes | ||
- | λ nano Vagrantfile #!!! set X | + | λ nano Vagrantfile #!!! set X and mem 1024 |
λ cat provision_once.sh # look passwords | λ cat provision_once.sh # look passwords | ||
Line 316: | Line 340: | ||
===== Дополнительные возможности ===== | ===== Дополнительные возможности ===== | ||
- | ==== Использование синхронизируемых каталогов ==== | ||
- | <code> | ||
- | λ cat Vagrantfile | ||
- | </code><code> | ||
- | ... | ||
- | # config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: ".git/" | ||
- | ... | ||
- | </code><code> | ||
- | λ npp SomeFile | ||
- | ... | ||
- | |||
- | λ vagrant rsync | ||
- | |||
- | λ vagrant ssh | ||
- | |||
- | vagrant@node3:~$ ls /vagrant/ | ||
- | </code><code> | ||
- | ... | ||
- | Vagrantfile | ||
- | ... | ||
- | SomeFile | ||
- | ... | ||
- | </code> | ||
==== Еще варианты Multi-Machine Vagrant Environments ==== | ==== Еще варианты Multi-Machine Vagrant Environments ==== |