Ансибль | Тестирование | либвирт | Окна | квм

Протестируйте роли Windows Ansible на локальных виртуальных машинах libvirt за считанные минуты.

Разверните виртуальные машины Windows за считанные минуты, чтобы проверить свои роли Ansible.

Если вы еще этого не сделали, ознакомьтесь с моим предыдущим постом о тестировании ролей Ansible с помощью Molecule.



Подготовьте образ для виртуальных машин менее чем за 15 минут

Это простое руководство по запуску виртуальных машин Windows в течение нескольких минут для тестирования ваших ролей Ansible.

Роль Ansible, которую я опубликовал, позволяет создавать виртуальные машины Windows «с нуля» с автоматической установкой. Хотя это прекрасно воспроизводимо и работает как шарм, очевидно, что загрузка с компакт-диска, запуск установщика, перезагрузка для настройки системы занимает целую вечность (~ 5 минут), пока Ansible наконец не станет доступным для запуска ролей.

Таким образом, это руководство состоит из двух шагов: первый: создать виртуальную машину с нуля, для чего вам потребуется упомянутое выше терпение, и второй: сохранить образ виртуальной машины, чтобы использовать его для запуска будущих тестовых виртуальных машин намного, намного быстрее.



Создайте виртуальную машину с автоматической установкой

Создайте роль и загрузите пример конфигурации libvirt с DrPsychick/ansible-testing :

molecule init role demo.testrole
cd testrole
molecule init scenario libvirt
for f in create destroy molecule requirements vars; do
  curl -o molecule/libvirt/$f.yml https://raw.githubusercontent.com/DrPsychick/ansible-testing/master/docs/molecule/libvirt/$f.yml
done

Настройте конфигурацию в molecule/libvirt, чтобы определить, на каких версиях Windows вы хотите протестировать. Пароль администратора, который вы задаете здесь, будет встроен в образ.

vars.yml

virtual_machines:
  - name: "windows2016"
    password: "Ecoo6pev"
    os: "windows"
    isos:
      - name: "WindowsServer2016.iso"
        dev: sda
      - name: "virtio-win.iso"
        dev: sdb
      - name: "scripts-windows2016.iso"
        dev: sdc
    disk_size: 20G
    image_index: 2
    drivers:
      - 'E:\amd64\2k16'
      - 'E:\NetKVM\2k16\amd64'
      - 'E:\Balloon\2k16\amd64'
    mac: "02:00:00:00:13:37"
    vnc_port: 56682

Если вы меняете имя виртуальной машины, не забудьте соответствующим образом настроить molecule.yml:

[...]
platforms:
  - name: windows2016
[...]

Прежде чем вы сможете создать виртуальную машину, вам необходимо загрузить соответствующие файлы ISO из общедоступных источников, поскольку они не включены в роль, см. https://github.com/DrPsychick/ansible-testing#test-with-windows-vms. »

Теперь запустите molecule create -s libvirt и подождите, пока виртуальная машина не заработает. Вы можете подключиться к виртуальной машине через VNC на настроенном vnc_port, чтобы наблюдать за прогрессом. Если вы получили ошибку sudo: a password is required, запустите sudo echo и повторите попытку.

Когда вы закончите все проверять, выключите виртуальную машину: sudo virsh shutdown windows2016 .

Сохранить изображение на потом

Теперь создайте zip-файл готового образа. Это займет несколько минут. Изображение должно иметь имя экземпляра и храниться в zip-файле без пути.

(cd /var/lib/libvirt/images; zip windows2016-clean.zip windows2016.qcow2)

Переместите почтовый индекс в iso_dir, чтобы роль DrPsychick/ansible-testing нашла его и использовала для новых виртуальных машин.

cd /var/lib/libvirt/images
mv windows2016-clean.zip ../isos/

Настройте ansible-testing для использования заархивированного изображения

Уничтожьте сценарий Molecule для очистки: molecule destroy -s libvirt , это приведет к удалению исходного образа диска виртуальной машины.

Теперь измените определение в vars.yml, чтобы использовать заархивированное изображение:

virtual_machines:
  - name: "windows2016"
    password: "Ecoo6pev"
    os: "windows"
    disk_image: "windows2016-clean.zip"
    mac: "02:00:00:00:13:37"
    vnc_port: 56682

Готово!

Теперь, когда вы запустите molecule create -s libvirt, вы заметите, что экземпляр Windows появляется менее чем за две минуты или около того и доступен напрямую через WinRM. Таким образом, создание экземпляров происходит как минимум в два раза быстрее.

И на всякий случай, если вы запускаете Molecule на удаленной машине с Linux, вы можете просто выполнить переадресацию портов SSH для подключения к VNC, если это необходимо:

ssh -L <vnc_port>:localhost:<vnc_port> user@remote-machine
# now connect with VNC to localhost:<vnc_port>

Использованная литература:







DrPsychick в Интернете
Простая «целевая страница
всех сайтов, на которых я нахожусь.drpsychick.org»



Спасибо!

…за ваше время и интерес!

Want to Connect?
If you want to support me, sign up for Medium through my membership link: https://drpsychick.org/membership or visit me on GitHub.