Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:vagrant [2016/08/26 21:59] [Синхронизация каталогов] |
wiki:vagrant [2016/08/26 22:44] (текущий) [Provisioning with Puppet] |
||
---|---|---|---|
Строка 247: | Строка 247: | ||
===== Синхронизация каталогов===== | ===== Синхронизация каталогов===== | ||
- | "Из коробки" vagrant синхронизирует каталог хоста с Vagrantfile в директорию /vagrant | + | "Из коробки" vagrant синхронизирует каталог хоста с Vagrantfile в директорию /vagrant виртуальной машины. |
- | виртуальной машины. | + | |
- | Для того, чтоб указать дополнительный каталоги для синхронизации, нужно добавить | + | Для того, чтоб указать дополнительный каталоги для синхронизации, нужно добавить следующую строку в Vagrantfile: |
- | следующую строку в Vagrantfile: | + | |
<code> | <code> | ||
config.vm.synced_folder "src/", "/var/www/html" | config.vm.synced_folder "src/", "/var/www/html" | ||
Строка 257: | Строка 255: | ||
Первым указывается путь на хосте, вторым - гостевой путь. | Первым указывается путь на хосте, вторым - гостевой путь. | ||
- | Если на хостовой машине указывать относительный путь, то корневым будет каталог | + | Если на хостовой машине указывать относительный путь, то корневым будет каталог с Vagrantfile. |
- | с Vagrantfile. | + | |
Если абсолютный путь, то он абсолютный :) | Если абсолютный путь, то он абсолютный :) | ||
Строка 266: | Строка 263: | ||
Дополнительные опции: | Дополнительные опции: | ||
- | * **disabled** - если указать True, то синхронизация будет отключена. Удобно, если | + | * **disabled** - если указать True, то синхронизация будет отключена. Удобно, если нам не нужна "изкоробочная" синхронизация. |
- | нам не нужна "изкоробочная" синхронизация. | + | * **mount_options** - дополнительные параметры, которые будут переданы команде mount при монтировании |
- | * **mount_options** - дополнительные параметры, которые будут переданы команде | + | |
- | mount при монтировании | + | |
* **type** - полезная опция, которая позволяет выбрать тип синхронизации. Доступны следующие варианты: | * **type** - полезная опция, которая позволяет выбрать тип синхронизации. Доступны следующие варианты: | ||
* NFS | * NFS | ||
Строка 279: | Строка 274: | ||
<note important> тип NFS доступен только для Linux-host!</note> | <note important> тип NFS доступен только для Linux-host!</note> | ||
- | Если эта поция не указана, то vagrant выберет сам самую подходящую. | + | Если эта поция не указана, то vagrant выберет сам подходящую. |
- | Я рекомендую для Linux-гостей использовать rsync - этот тип //не// требует | + | Я рекомендую для Linux-гостей использовать rsync - этот тип //не// требует дополнений гостевых систем, автоматически установить rsync на всех гостей. |
- | дополнений гостевых систем, автоматически установить rsync на всех гостей. | + | Также, доступны дополнительные плюшки, такие как vagrant rsync и vagrant rsync-auto ( о них ниже) |
- | Также, доступны дополнительные плюшки, такие как vagrant rsync и vagrant | + | |
- | rsync-auto ( о них ниже) | + | |
* **id** - имя, которое будет показываться при команде mount в гостевой | * **id** - имя, которое будет показываться при команде mount в гостевой | ||
машине. Имеет смысл использовать, если у вас несколько расшареных каталогов | машине. Имеет смысл использовать, если у вас несколько расшареных каталогов | ||
Строка 291: | Строка 284: | ||
==Рассмотрим подробнее вариант rsync== | ==Рассмотрим подробнее вариант rsync== | ||
Первое - этот тип **работает** только **в одну сторону** | Первое - этот тип **работает** только **в одну сторону** | ||
- | Каталоги, которые синхронизированы через rsync синхронизируются автоматически | + | Каталоги, которые синхронизированы через rsync синхронизируются автоматически только один раз - при инициализации машины (vagrant up\vagrant reload). |
- | только один раз - при инициализации машины (vagrant up\vagrant reload). | + | |
Принудительно синхронизировать можно двумя путями: | Принудительно синхронизировать можно двумя путями: | ||
- vagrant rsync | - vagrant rsync | ||
Строка 303: | Строка 295: | ||
reload. </note> | reload. </note> | ||
- | Второй же работает в режиме демона и отслеживает изменения на хосте. | + | Второй же работает в режиме демона и отслеживает изменения на хосте. Это удобно, так как один каталог можно шарить на несколько машин сразу, передавая изменения на всех гостей. |
- | Это удобно, так как один каталог можно шарить на несколько машин сразу, | + | |
- | передавая изменения на всех гостей. | + | |
<note important>Если вы хотите сделать изменения в Vagrantfile, для начали | <note important>Если вы хотите сделать изменения в Vagrantfile, для начали | ||
Строка 404: | Строка 394: | ||
===== Конфигурирование нескольких машин===== | ===== Конфигурирование нескольких машин===== | ||
- | В одном Vagrantfile может быть столько мащин, сколько нам нужно. | + | В одном Vagrantfile может быть столько машин, сколько нам нужно. |
Задать их можно двумя способами: | Задать их можно двумя способами: | ||
* Используя цикл | * Используя цикл | ||
- | * Отдельно задавая каждую мащину | + | * Отдельно задавая каждую машину |
Очевидно, что циклом удобно поднимать машины, которые буду отличаться только | Очевидно, что циклом удобно поднимать машины, которые буду отличаться только | ||
Строка 1006: | Строка 996: | ||
Всё, можно делать vagrant up и смотреть, как создаётся окружение. | Всё, можно делать vagrant up и смотреть, как создаётся окружение. | ||
+ | ====Provisioning with Puppet==== | ||
+ | |||
+ | <note important> Тут не будет рассматриваться работа непосредстваенно Puppet, | ||
+ | рассматривается взаимодействие vagrant и Puppet! </note> | ||
+ | |||
+ | Для тех, кто привык использовать [[https://puppet.com/|Puppet]], есть возможность использовать этот | ||
+ | инструмент с vagrant. | ||
+ | |||
+ | Для этого нам нужна следующая структура Vagrantfile: | ||
+ | <code> | ||
+ | config.vm.provider "virtualbox" do |vb| | ||
+ | vb.gui = false | ||
+ | vb.memory=256 | ||
+ | vb.cpus=1 | ||
+ | vb.check_guest_additions=false | ||
+ | config.vm.box="puppetlabs/centos-7.2-64-puppet" | ||
+ | end | ||
+ | config.vm.define "node1" do |n1| | ||
+ | n1.vm.network "private_network", ip: "192.168.0.101" | ||
+ | n1.vm.network "forwarded_port", guest: 80, host: 8081 | ||
+ | n1.vm.hostname ="node1" | ||
+ | end | ||
+ | </code> | ||
+ | Основное изменение, которое отличает vagrant и Puppet, от vagrant и Ansible - | ||
+ | vagrant **не** может сам установить Puppet в гостя, поэтому строкой | ||
+ | <code> | ||
+ | config.vm.box="puppetlabs/centos-7.2-64-puppet" | ||
+ | </code> | ||
+ | Мы сказали, что в качестве основы для гостя необходимо использовать специальный, | ||
+ | официальный дистрибутив от команды Puppet, в котором уже будет присутствовать | ||
+ | агент. | ||
<note> | <note> | ||
докер, паппет. | докер, паппет. |