Руководство по Vagrant
Введение
Vagrant — это инструмент для управления виртуальными машинами, позволяющий настраивать и использовать воспроизводимые рабочие среды на базе различных платформ виртуализации и облачных платформ. Он также имеет интеграцию с Ansible в качестве провайдера для этих виртуальных машин, и эти два инструмента хорошо взаимодействуют.
Это руководство расскажет о том, как использовать Vagrant 1.7+ и Ansible вместе.
Если вы не знакомы с Vagrant, вы можете посетить документацию.
В этом руководстве предполагается, что Ansible уже установлен и работает. Запуск из Git-коммита допустим. Для получения дополнительной информации следуйте руководству Руководство по установке.
Настройка Vagrant
Первый шаг после установки Vagrant — создание Vagrantfile и его настройка в соответствии с вашими потребностями. Это подробно описано в документации Vagrant, но вот быстрый пример, который включает раздел для использования провайдера Ansible для управления одной машиной:
# This guide is optimized for Vagrant 1.7 and above.
# Although versions 1.6.x should behave very similarly, it is recommended
# to upgrade instead of disabling the requirement below.
Vagrant.require_version ">= 1.7.0"
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
# Disable the new default behavior introduced in Vagrant 1.7, to
# ensure that all Vagrant machines will use the same SSH key pair.
# See https://github.com/hashicorp/vagrant/issues/5005
config.ssh.insert_key = false
config.vm.provision "ansible" do |ansible|
ansible.verbose = "v"
ansible.playbook = "playbook.yml"
end
end
Обратите внимание на раздел config.vm.provision, который ссылается на Ansible-план, называемый playbook.yml, в той же директории, что и Vagrantfile. Vagrant запускает провайдер после того, как виртуальная машина загрузится и будет готова для доступа по SSH.
В вашем Vagrantfile можно настроить множество параметров Ansible. Для получения дополнительной информации посетите документацию по провайдеру Ansible.
$ vagrant up
Это запустит ВМ и выполнит план провайдинга (при первом запуске ВМ).
Чтобы повторно запустить план на существующей ВМ, просто выполните:
$ vagrant provision
Это повторно запустит план для существующей ВМ.
Обратите внимание, что включение опции ansible.verbose укажет Vagrant на отображение полного ansible-playbook-команды, используемой за кулисами, как показано в этом примере:
$ PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --private-key=/home/someone/.vagrant.d/insecure_private_key --user=vagrant --connection=ssh --limit='machine1' --inventory-file=/home/someone/coding-in-a-project/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml
Эта информация может быть очень полезной для отладки проблем с интеграцией, а также может быть использована для ручного выполнения Ansible из командной строки, как описано в следующем разделе.
Запуск Ansible вручную
Иногда вам может потребоваться запустить Ansible вручную для управления машинами. Это быстрее, чем запуск vagrant provision и довольно просто.
В нашем примере Vagrantfile Vagrant автоматически создаёт файл инвентаризации Ansible в .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory. Эта инвентаризация настроена в соответствии с SSH-туннелем, который автоматически создаёт Vagrant. Типичный автоматически созданный файл инвентаризации для одномашинной среды может выглядеть примерно так:
# Generated by Vagrant default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
Если вы хотите запустить Ansible вручную, убедитесь, что вы передаёте ansible или ansible-playbook-командам правильные аргументы, по крайней мере, для имени пользователя, приватного ключа SSH и инвентаризации.
Вот пример использования глобального небезопасного ключа Vagrant (config.ssh.insert_key должно быть установлено на false в вашем Vagrantfile):
$ ansible-playbook --private-key=~/.vagrant.d/insecure_private_key -u vagrant -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml
Вот второй пример использования случайного приватного ключа, который Vagrant 1.7+ автоматически настраивает для каждой новой ВМ (каждый ключ хранится в пути, подобном .vagrant/machines/[machine name]/[provider]/private_key):
$ ansible-playbook --private-key=.vagrant/machines/default/virtualbox/private_key -u vagrant -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml
Расширенные применения
Глава «Советы и хитрости» в документации Ansible Provisioner содержит подробную информацию о более сложных функциях Ansible, таких как:
- как параллельно выполнить план в многомашинной среде
- как интегрировать локальный файл конфигурации
ansible.cfg
См. также
- Главная страница Vagrant
- Главная страница Vagrant со ссылками для скачивания
- Документация Vagrant
- Документация Vagrant
- Ansible Provisioner
- Документация Vagrant по провайдеру Ansible
- Следящая система ошибок Vagrant
- Открытые проблемы для провайдера Ansible в проекте Vagrant
- Работа с playbooks
- Введение в playbooks
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/scenario_guides/guide_vagrant.html