Spec-Zone.ru › Ansible 2.8

Руководство по 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API