Spec-Zone.ru › Ansible 2.7

Использование Vagrant и Ansible

Введение

Vagrant — это инструмент для управления виртуальными машинами, позволяющий настраивать и использовать воспроизводимые рабочие среды на базе различных платформ виртуализации и облачных платформ. Он также имеет интеграцию с Ansible в качестве провайдера для этих виртуальных машин, и оба инструмента хорошо взаимодействуют друг с другом.

Данное руководство опишет, как использовать Vagrant 1.7+ и Ansible вместе.

Если вы не знакомы с Vagrant, посетите документацию.

В этом руководстве предполагается, что у вас уже установлен и работает Ansible. Запуск из Git-репозитория допустим. Для получения дополнительной информации следуйте руководству Руководство по установке.

Настройка Vagrant

Первый шаг после установки Vagrant — создание Vagrantfile и его настройка в соответствии с вашими потребностями. Это подробно описано в документации Vagrant, но вот быстрый пример, включающий раздел для использования Ansible provisioner для управления одной машиной:

# 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 под названием playbook.yml в той же директории, что и Vagrantfile. Vagrant запускает провайдер после загрузки виртуальной машины и готовности для доступа по SSH.

В вашем Vagrantfile можно настроить множество параметров Ansible. Для получения дополнительной информации посетите документацию Ansible Provisioner.

$ vagrant up

Это запустит ВМ и выполнит playbook провайдера (при первом запуске ВМ).

Для повторного выполнения playbook на существующей ВМ просто выполните:

$ vagrant provision

Это повторно выполнит playbook на существующей ВМ.

Обратите внимание, что включение параметра 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, таких как:

  • как параллельно выполнить playbook в многомашинной среде
  • как интегрировать локальный файл конфигурации ansible.cfg

См. также

Главная страница Vagrant
Главная страница Vagrant с загрузками
Документация Vagrant
Документация Vagrant
Ansible Provisioner
Документация Vagrant для Ansible provisioner
Система отслеживания ошибок Vagrant
Открытые вопросы для Ansible provisioner в проекте Vagrant
Работа с Playbook
Введение в 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.7/scenario_guides/guide_vagrant.html

Spec-Zone.ru

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