====== Vagrant ====== Create and configure lightweight, reproducible, and portable development environments. **Homepage:** https://www.vagrantup.com/\\ **Documentation:** https://docs.vagrantup.com/v2/ ===== Instalace na Windows 7 ===== VirtualBox instaluji, protože nechci použít Hyper-v. - nainstalovat Oracle VM VirtualBox - http://www.oracle.com/technetwork/server-storage/virtualbox/overview/index.html - nainstalovat Vagrant - https://www.vagrantup.com/downloads.html **Oracle VM VirtualBox version:** 5.0.20\\ **Vagrant version:** 1.8.1 ===== První spuštění ===== # vagrant init hashicorp/precise32 # vagrant up Na Windows 7 to vypadá následovně. PS C:\HashiCorp\Vagrant\test> vagrant init hashicorp/precise32 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. PS C:\HashiCorp\Vagrant\test> vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'hashicorp/precise32' could not be found. Attempting to find and install... default: Box Provider: virtualbox default: Box Version: >= 0 ==> default: Loading metadata for box 'hashicorp/precise32' default: URL: https://atlas.hashicorp.com/hashicorp/precise32 ==> default: Adding box 'hashicorp/precise32' (v1.0.0) for provider: virtualbox default: Downloading: https://vagrantcloud.com/hashicorp/boxes/precise32/versions/1.0.0/providers/virtualbox.box default: Progress: 100% (Rate: 446k/s, Estimated time remaining: --:--:--) ==> default: Successfully added box 'hashicorp/precise32' (v1.0.0) for 'virtualbox'! ==> default: Importing base box 'hashicorp/precise32'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'hashicorp/precise32' is up to date... ==> default: Setting the name of the VM: test_default_1425998687541_86834 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if its present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.2.0 default: VirtualBox Version: 4.3 ==> default: Mounting shared folders... default: /vagrant => C:/HashiCorp/Vagrant/test PS C:\HashiCorp\Vagrant\test> ===== Help ===== Usage: vagrant [options] [] -v, --version Print the version and exit. -h, --help Print this help. Common commands: box manages boxes: installation, removal, etc. connect connect to a remotely shared Vagrant environment destroy stops and deletes all traces of the vagrant machine global-status outputs status Vagrant environments for this user halt stops the vagrant machine help shows the help for a subcommand init initializes a new Vagrant environment by creating a Vagrantfile login log in to HashiCorp's Atlas package packages a running vagrant environment into a box plugin manages plugins: install, uninstall, update, etc. provision provisions the vagrant machine push deploys code in this environment to a configured destination rdp connects to machine via RDP reload restarts vagrant machine, loads new Vagrantfile configuration resume resume a suspended vagrant machine share share your Vagrant environment with anyone in the world ssh connects to machine via SSH ssh-config outputs OpenSSH valid configuration to connect to the machine status outputs status of the vagrant machine suspend suspends the machine up starts and provisions the vagrant environment version prints current and latest Vagrant version For help on any individual command run `vagrant COMMAND -h` Additional subcommands are available, but are either more advanced or not commonly used. To see all subcommands, run the command `vagrant list-commands`. ===== Vagrant boxes online ===== * https://atlas.hashicorp.com/boxes/search * http://www.vagrantbox.es/ ===== Vlastní Vagrant Box ===== Lze najít desítky důvodů, proč si vytvořit vlastní Vagrant Box. Pro mě je to specifické nastavení a SW pro projekty v JAVA EE. Následující návod popisuje vytvoření základního Vagrant Boxu: * distribuce GNU/Linux CentOS 7.0 x64 minimal ==== 1. Download CentOS ==== Stáhnout CentOS 7.0 Minimal iso obraz. * **Homepage:** http://www.centos.org/download/ * **ČVUT mirror:** http://ftp.cvut.cz/centos/7/isos/x86_64/ * **Obraz:** CentOS-7.0-1406-x86_64-Minimal.iso ==== 2. Run and config VirtualBox ==== Vytvořit virtuální server s následujícím nastavením: * **Name:** CentOS-7-minimal * **Type:** Linux * **Version:** Red Hat (64bit) * **Memory size:** 1 GB * **Hard drive file type:** VMDK (Virtual Machine Disk) * **Hard drive size:** 40 GB V nastavení vytvořeného vyrtuálního serveru (Settings): * **Audio:** disable * **USB:** disable * **Network** * Adapter 1: Nat, Advanced: Port Forwarding * **Port Forwarding Rules** * **Name:** SSH * **Protocol:** TCP * **Host IP:** - * **Host Port:** 2222 * **Guest IP:** - * **Guest Port:** 22 {{::oracle-vm-virtualbox-vagrant-01.png?200|}} {{::oracle-vm-virtualbox-vagrant-02.png?200|}} {{::oracle-vm-virtualbox-vagrant-03.png?200|}} {{::oracle-vm-virtualbox-vagrant-04.png?200|}} {{::oracle-vm-virtualbox-vagrant-05.png?200|}} {{::oracle-vm-virtualbox-vagrant-06.png?200|}} {{::oracle-vm-virtualbox-vagrant-07.png?200|}} {{::oracle-vm-virtualbox-vagrant-08.png?200|}} {{::oracle-vm-virtualbox-vagrant-09.png?200|}} {{::oracle-vm-virtualbox-vagrant-10.png?200|}} {{::oracle-vm-virtualbox-vagrant-11.png?200|}} {{::oracle-vm-virtualbox-vagrant-12.png?200|}} {{::oracle-vm-virtualbox-vagrant-13.png?200|}} ==== 3. Install CentOS ==== Základní instalace CentOS do virtuálního stroje. Nastavit si lokalizaci a automatickou detekci sítě, jinak je možné vše ponechat ve výchozím stavu. {{::oracle-vm-virtualbox-install-centos-7-01.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-02.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-03.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-04.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-05.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-05-1.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-06.png?200|}} {{::oracle-vm-virtualbox-install-centos-7-07.png?200|}} ==== 4. Settings CentOS ==== Změnit heslo správce systému **root** na **vagrant**. # passwd Přidat uživatele **vagrant** s heslem **vagrant**. # adduser vagrant # passwd vagrant Nastavit pro uživatele vagrant **sudo** pro vše. # visudo Vložit řádek. vagrant ALL=(ALL) NOPASSWD: ALL Zakomentovat řádek. #Defaults requiretty Vyzkoušíme si dostupnost sítě. # ping cesnet.cz Provedeme aktualizaci systému. # yum update Nainstalovat Guest Tools Vybrat v menu **Devices** -> **Insert Guest Additions CD image ...** {{::oracle-vm-virtualbox-vagrant-14.png?200|}} # yum groupinstall "Development Tools" # yum install kernel-devel kernel-devel-3.10.0-123.el7.x86_64 wget # mkdir /media/cdrom # mount /dev/cdrom /media/cdrom # cd /media/cdrom # ./VBoxLinuxAdditions.run # cd; umount /media/cdrom # yum clean all Kontrola instalace Guest Tools # lsmod | grep vbox Nastavení SSH pro uživatele **vagrant**. # mkdir /home/vagrant/.ssh # wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys # chmod 0700 /home/vagrant/.ssh # chmod 0600 /home/vagrant/.ssh/authorized_keys # chown -R vagrant:vagrant /home/vagrant/.ssh Vypnout # shutdown -h now ==== 4. Sestavení Vagrant Boxu ==== * base = název z Oracle VM VirtualBox * output = název boxu vagrant package --base CentOS-7-minimal --output CentOS-7-minimal.box $ vagrant package --base CentOS-7-minimal --output CentOS-7-minimal.box ==> CentOS-7-minimal: Exporting VM... ==> CentOS-7-minimal: Compressing package to: c:/install/vagrant-boxes/CentOS-7-minimal.box ==== 5. Test ==== vagrant package --base CentOS-7-minimal --output CentOS-7-minimal.box vagrant box add testbox C:\install\vagrant-boxes\CentOS-7-minimal.box vagrant init testbox vagrant up === Přihlášení přes SSH === **Host:** localhost\\ **Port:** 2222\\ **Uživatel:** root\\ **Heslo:** vagrant ===== Vagrant Boxes ===== Vagrant Boxy vycházející z vlastního Vagrant Boxu. * CentOS 7.0 x64 minimal Plan * CentOS 7.0 x64 JAVA EE * CentOS 7.0 x64 PosgtreSQL * CentOS 7.0 x64 Puppet ==== Ansible Vagrant Box ==== vagrant package --base CentOS-7-minimal --output ansible.box vagrant box add app C:\install\vagrant-boxes\ansible.box vagrant box add app /c/install/vagrant-boxes/ansible.box vagrant init app vagrant up ==== JAVA EE Vagrant Box ==== vagrant package --base CentOS-7-minimal --output javaee.box vagrant box add app C:\install\vagrant-boxes\javaee.box vagrant box add app /c/install/vagrant-boxes/javaee.box vagrant init app vagrant up ==== Port Forward ==== WildFly config.vm.network "forwarded_port", guest: 8080, host: 8080 PostgreSQL config.vm.network "forwarded_port", guest: 5432, host: 5432 MySQL config.vm.network "forwarded_port", guest: 3306, host: 3306