Start using vagrant now!
-
Upload
andriy-podanenko -
Category
Internet
-
view
291 -
download
1
description
Transcript of Start using vagrant now!
![Page 1: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/1.jpg)
Local development with Vagrant
Andriy PodanenkoSoftware Architect, DevOpPropeople@podarok
![Page 2: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/2.jpg)
Plan
● What is Vagrant?● Provisioning, puppet, ansible● Generating configs with puphpet.com● How puphpet.com works internally
![Page 3: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/3.jpg)
What is Vagrant
● Layer on top ov virtual machine providers− Virtualbox− Vmware
● Command line tool● Text file to control the settings● Plenty of boxes available on internet
![Page 4: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/4.jpg)
Vagrant commands
● vagrant up● vagrant ssh● vagrant provision● vagrant halt● vagrant destroy● vagrant reload --provision
![Page 5: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/5.jpg)
Vagrant up workflow
-> vagrant up● Obtaining vagrant box (vm image) - once● Starting virtualbox (vm provider)● Starting provisioners stack - first time and with
--provision or when -> vagrant provision-> vm box up and running -> vagrant ssh
![Page 6: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/6.jpg)
Vagrant configuration● Ruby syntax● Box, ram, cpuVagrant.configure("2") do |config| config.vm.box = 'ubuntu-1404' config.vm.box_url = 'http://.../ubuntu-1404-x64.box' config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "2"] end end
![Page 7: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/7.jpg)
Vagrant boxes
● https://vagrantcloud.com● http://www.vagrantbox.es
![Page 8: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/8.jpg)
Vagrant configuration
● Network
● Sync folders
● Nfs is faster than native. Try latest vagrant with rsync
Vagrant.configure("2") do |config| config.vm.network "private_network", ip: "192.168.50.4"end
Vagrant.configure("2") do |config| config.vm.synced_folder "project/", "/var/www/project"end
![Page 9: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/9.jpg)
Vagrant provisioning
● Shell● Puppet (model driven)● Chef (procedural)● Ansible● Salt● Docker● ...
![Page 10: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/10.jpg)
Combining provisioners# Shell provisionconfig.vm.provision "shell" do |s| s.path = "puphpet/shell/initial-setup.sh" s.args = "/vagrant/puphpet"end
# Ansible provisionconfig.vm.provision "ansible" do |ansible| ansible.playbook = "playbook.yml"end
# Puppet provisionconfig.vm.provision :puppet do |puppet| ssh_username = !data['ssh']['username'].nil? ? data['ssh']['username'] : "vagrant" puppet.facter = { "ssh_username" => "#{ssh_username}", "provisioner_type" => ENV['VAGRANT_DEFAULT_PROVIDER'], } puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}" puppet.manifest_file = "#{data['vm']['provision']['puppet']['manifest_file']}"end
![Page 11: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/11.jpg)
puppet -> manifest.pp
![Page 12: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/12.jpg)
ansible -> playbook.yml- hosts: demovmbox connection: local gather_facts: no
vars: drupal_user: drupalcamplviv drupal_pass: ilovelviv installation_profile_name: presentation mysql_user: drupal mysql_pass: drupal mysql_db: drupal
tasks: - name: Droping drupal database mysql_db: name={{ mysql_db }} state=absent
- name: Creating drupal database mysql_db: name={{ mysql_db }} state=present
- name: Installing drupal sudo: yes shell: "drush -y si {{ installation_profile_name }} --db-url=mysql://{{ mysql_user }}:{{ mysql_pass }}@127.0.0.1:/{{ mysql_db }} --account-name={{ drupal_user }} --account-pass={{ drupal_pass }}"
![Page 13: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/13.jpg)
PuPHPet.com
Demo
![Page 14: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/14.jpg)
vagrant up demo
Demo
![Page 15: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/15.jpg)
PuPHPet.com
![Page 16: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/16.jpg)
PuPHPet.com
● All configs in puphpet/config.yaml● Uses puppet librarian (Puppetfile)
![Page 17: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/17.jpg)
Extending configs
● Use another puppet module− Add it to the Puppetfile− Modify manifest.pp
● Add another provisioner− Add it to Vagrantfile− insert provisioner’s needed files to vagrant tree
![Page 18: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/18.jpg)
Contributing to puphpet.com
● Symfony app● Each config element is a separate bundle that
provides UI and manifest.pp part● Remember about all OS (debian + centos)
![Page 19: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/19.jpg)
PS. Drupal related tree/workflow
![Page 20: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/20.jpg)
Usefull links● http://puphpet.drupal.ua/● http://puphpet.com●● http://www.puppetcookbook.com/● https://docs.vagrantup.com/v2/provisioning● http://docs.ansible.com/playbooks.html●● https://github.com/podarok/ansible-vagrant-examples●● https://www.drupal.org/project/vdd
![Page 21: Start using vagrant now!](https://reader033.fdocuments.in/reader033/viewer/2022051412/54b6b19a4a7959ad7b8b465a/html5/thumbnails/21.jpg)
Local development with Vagrant
Andriy PodanenkoSoftware ArchitectPropeople@podarok
Questions?