Automatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska

Post on 01-Jul-2015

151 views 0 download

description

Czy uważacie że przygotowanie szablonu nowej maszyny wirtualnej wymaga dużo czasu? Nie jest to prawdą. Ta prezentacja pozwoli wam na zapoznanie się z procesem tworzenia maszyn wirtualnych z wykorzystaniem Packera. Jest to opensourceowe narzędzie do przygotowywania obrazów na vagranta lub szablonów maszyn wirtualnych dla różnych hypervisorów np. VMware ESXi/Fusion, Virtualbox, KVM itd. Pokaże jak działa Packer, jak napisać własne skrypty oraz pliki konfiguracyjne. Magdalena Wojnarowska - 15.10 Katowice Women In Technology

Transcript of Automatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska

Magdalena Wojnarowska

http://itgeeks.eu/

Narzędzia

Automatyzacja Packer

Jak zacząć pracę z packerem

2/17

Jest to proces, który pozwala na wykonanie sekwencji zadań lub powtarzalnych czynności w sposób automatyczny nie wymagający interakcji człowieka. Osiągnąć to pozwalają np. skrypty,

programy.

http://itgeeks.eu/ 3/17

Jest to opensource’owe narzędzie pozwalające na automatyzację tworzenia dowolnego typu obrazu

maszyny wirtualnej. Przy użyciu skryptów automatycznych można zainstalować i

skonfigurować oprogramowanie a w wyniku otrzymać gotowy obraz maszyny.

http://itgeeks.eu/ 4/17

Nie wymaga instalacji – Packer wymaga jedynie wypakowania na maszynę skompresowanych plików oraz dodania ścieżki, gdzie te pliki zostały wypakowane, do zmiennej systemowej „PATH”

Małe – źródła Packer, nie potrzebują dużo miejsca na dysku

Uniwersalne – pozwalają na stworzenie identycznych obrazów na różne platformy

Konfigurowalny – skrypty umożliwiają instalację i konfigurację dowolnego oprogramowania i stworzenia dostosowanego do potrzeb obrazu

http://itgeeks.eu/ 5/17

Korzystając z narzędzia Packer można przygotować obrazy maszyn do:

Amazon EC2,

DigitalOcean,

Google Compute Engine,

QEMU,

VirtualBox,

Vmware.

http://itgeeks.eu/ 6/17

vagrant – do pobrania ze strony- https://www.vagrantup.com/downloads.htm

virtualbox – do pobrania ze strony- https://www.virtualbox.org/wiki/Downloads

packer sources – do pobrania ze strony- http://www.packer.io/downloads.html

http://itgeeks.eu/ 7/17

1. Plik json, zawierający konfigurację maszyny

2. Preseed.cfg (dla systemu operacyjnego debian, ubuntu), kickstart.cfg (dla systemu operacyjnego centos, redhat, fedora), Autounattend.xml (dla systemu operacyjnego Windows)

3. Skrypty: batch files, powershell, shell

Dodatkowo:

1. Chef recipes – wykorzystując chef solo

http://itgeeks.eu/ 8/17

{ "builders": [ { } ], "provisioners": [ { } ], "post-processors": [ { } ] }

http://itgeeks.eu/ 9/17

{ "type": "virtualbox-iso", "iso_url": "http://download.microsoft.com/download/6/D/A/6DAB58BA-F939-451D-9101-7DE07DC09C03/9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO", "iso_checksum_type": "md5", "iso_checksum": "8503997171f731d9bd1cb0b0edc31f3d", "headless": true, "boot_wait": "2m", "ssh_username": "vagrant", "ssh_password": "vagrant", "ssh_wait_timeout": "2h", "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"", "guest_os_type": "Windows2012_64", "disk_size": 61440, "floppy_files": [ "./answer_files/2012/Autounattend.xml", "./scripts/microsoft-updates.bat", "./scripts/win-updates.ps1", "./scripts/openssh.ps1", "./scripts/oracle-cert.cer" ], "vboxmanage": [ [ "modifyvm", "{{.Name}}", "--memory", "2048" ], [ "modifyvm", "{{.Name}}", "--cpus", "2" ] ] }

http://itgeeks.eu/ 10/17

{

"type": "shell",

"remote_path": "/tmp/script.bat", "execute_command": "{{.Vars}} cmd /c C:/Windows/Temp/script.bat",

"scripts": [ "./scripts/vbox_guest.bat", "./scripts/vagrant.bat", "./scripts/enable-rdp.bat" ]

},

{ "type": "shell", "inline": [ "rm -rf /tmp/*" ]

} http://itgeeks.eu/

11/17

{

"type": "vagrant",

"keep_input_artifact": false,

"output": "win_2012R2.box”

}

http://itgeeks.eu/ 12/17

{ "type": "chef-solo", "cookbook_paths": ["./cookbooks"], "execute_command": "c:/opscode/chef/bin/chef-solo --no-color -c {{.ConfigPath}} -j {{.JsonPath}} -l debug", "staging_directory": "c:/windows/temp", "prevent_sudo": true, "skip_install": true, "run_list": ["dotnetframework"] } from https://github.com/

13/17

Zalecane jest utworzenie folderu dla packera w na dysku głównym

Wykonywanie skryptów bash używając „#!/bin/bash –eux” – w przypadku natrafienia na błąd, pominie skrypt i pójdzie dalej

Należy pamiętać, że maszyny tworzone packerem są persistent, dla ułatwienia np. do provisionowania chefem dobrze jest dodać linie: „echo "%vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/vagrant”. Może to być zrobione za pomocą skryptu lub w pliku kickstart albo preseed.

http://itgeeks.eu/ 14/17

Packer współpracuje z innymi opensource’owymi rozwiązaniami jak Vagrant, Docker, Chef:

http://itgeeks.eu/ 15/17

http://www.packer.io/

http://blog.endpoint.com/2014/03/provisioning-development-environment.html

https://stackmachine.com/blog/building-a-vagrant-base-box-with-packer

http://kappataumu.com/articles/creating-an-Ubuntu-VM-with-packer.html

http://itgeeks.eu/ 16/17

DZIĘKUJĘ ZA UWAGĘ

ZAPRASZAM DO ODWIEDZENIA:

http://itgeeks.eu/

ORAZ ZAPRASZAM DO UCZESTNICTWA W OPEN SOFTWARE BAR CAMP W GLIWICACH

(30.10.2014):

http://www.meetup.com/Gliwice-Software-BarCamp

17/17