Как остановить машину в настройке Vagrant с несколькими машинами сразу после успешной инициализации? - PullRequest
1 голос
/ 19 октября 2019

Существует настройка Vagrant для нескольких машин (здесь усечено до двух машин), например:

Vagrant.configure(2) do |config|

  config.vm.define "xfcevm" do |xfcevm|
    xfcevm.vm.box = "generic/ubuntu1904"
    xfcevm.vm.hostname = "xfcevm"
  end

  config.vm.define "gnomevm" do |gnomevm|
    gnomevm.vm.box = "generic/fedora30"
    gnomevm.vm.hostname = "gnomevm"
  end

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "2048"
    vb.cpus = 1
    vb.customize ["modifyvm", :id, "--vram", "32"]
  end

  config.vm.provision "ansible" do |ansible|
    ansible.verbose = "v"
    ansible.compatibility_mode = "2.0"
    ansible.playbook = "setup.yml"
  end

  config.vm.provision "ansible", run: 'always' do |ansible|
    ansible.verbose = "v"
    ansible.compatibility_mode = "2.0"
    ansible.playbook = "tests.yml"
  end

  # halt here

end

Если тестовая книга воспроизведения проходит без ошибок, я хочу, чтобы эта машина была остановлена ​​сразу после tests.yml playbook закончен. Как я могу сделать это из Vagrantfile или создав другую задачу Ansible?

1 Ответ

1 голос
/ 19 октября 2019

Вы можете выполнить команду shutdown в конце вашей тестовой книги. Он будет воспроизводиться только в том случае, если остальные задачи были выполнены успешно.

- name: shutdown machine
  become: true
  command: shutdown -h now

См. shutdown --help, чтобы адаптировать команду к вашим конкретным потребностям (например, используя halt вместо poweroff)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...