Slide 1

Slide 1 text

Jens Segers @jenssegers jenssegers.be github.com/jenssegers

Slide 2

Slide 2 text

Laravel related repositories - laravel-mongodb - laravel-agent - laravel-date ...

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

What is DevOps?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Say hello to Infrastructure as Code

Slide 8

Slide 8 text

Mark Burgess 1993, University of Oslo

Slide 9

Slide 9 text

#!/bin/bash echo "$HOSTNAME" > /etc/hostname hostname -F /etc/hostname apt-get install -y ntp sed -i "s/Port 22/Port $SSHPORT/g" /etc/ssh/sshd_config useradd -s /bin/bash -m -d /home/$USER -U -p $PASS $USER

Slide 10

Slide 10 text

bootstrap.sh debian.sh centos.sh webserver_debian.sh mailserver_debian.sh webserver_centos.sh mailserver_centos.sh webserver_debian7.sh mailserver_debian7.sh webserver_debian_intel.sh webserver_debian_dell.sh webserver_debian7_intell.sh webserver_debian7_dell.sh

Slide 11

Slide 11 text

file: “file.txt” -> “foo” this file contains the word ‘foo’

Slide 12

Slide 12 text

echo “foo” > file.txt add the word ‘foo’ to this file

Slide 13

Slide 13 text

Service File 1 User File 2 Package Building blocks

Slide 14

Slide 14 text

File Attributes: - filename - content - permissions - owner Operations: - create - modify - delete Abstract class/interface

Slide 15

Slide 15 text

Debian Centos Provider Provider Operating system independent package: “nginx” apt-get -y install nginx yum -y install nginx

Slide 16

Slide 16 text

Advantages Infrastructure as Code

Slide 17

Slide 17 text

1. Infrastructure documentation 2. Software tools 3. Versioning 4. Platform independent 5. Idempotent/self-healing 6. Testing & development ...

Slide 18

Slide 18 text

The Tools

Slide 19

Slide 19 text

+

Slide 20

Slide 20 text

What is Vagrant?

Slide 21

Slide 21 text

virtual machines + provisioning

Slide 22

Slide 22 text

Example Vagrantfile Vagrant.configure("2") do |config| config.vm.box = 'precise32' config.vm.box_url = 'http://files.vagrantup.com/precise32.box' # Port forwarding config.vm.network "forwarded_port", guest: 80, host: 8000 # Shared folder config.vm.synced_folder "src/", "/var/www/website" end

Slide 23

Slide 23 text

Boot the virtual machine vagrant up SSH to the virtual machine vagrant ssh Shutdown and remove the VM vagrant destroy

Slide 24

Slide 24 text

What is Homestead?

Slide 25

Slide 25 text

Homestead Provisioning for Vagrant

Slide 26

Slide 26 text

- Ubuntu 14.04 - PHP 5.5 - Nginx - MySQL - Postgres - Node (Bower, Grunt & Gulp) Homestead base image - Redis - Memcached - Beanstalkd - Laravel Envoy - Fabric + HipChat Extension

Slide 27

Slide 27 text

Installing Homestead

Slide 28

Slide 28 text

1. Install VirtualBox and Vagrant virtualbox.org vagrantup.com

Slide 29

Slide 29 text

2. Add the Homestead box vagrant box add laravel/homestead ==> box: Loading metadata for box 'laravel/homestead' box: URL: https://vagrantcloud.com/laravel/homestead ==> box: Adding box 'laravel/homestead' (v0.1.7) for provider: virtualbox

Slide 30

Slide 30 text

3. Clone the Homestead repository git clone https://github.com/laravel/homestead.git Homestead Cloning into 'Homestead'... remote: Reusing existing pack: 154, done. remote: Total 154 (delta 0), reused 0 (delta 0)

Slide 31

Slide 31 text

4. Edit Homestead.yaml authorize: /Users/me/.ssh/id_rsa.pub keys: - /Users/me/.ssh/id_rsa

Slide 32

Slide 32 text

4. Edit Homestead.yaml folders: - map: /Users/me/Code to: /home/vagrant/Code

Slide 33

Slide 33 text

4. Edit Homestead.yaml sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public

Slide 34

Slide 34 text

4. Edit Homestead.yaml variables: - key: APP_ENV value: local

Slide 35

Slide 35 text

5. Add domain to /etc/hosts 127.0.0.1 homestead.app

Slide 36

Slide 36 text

6. Start the Homestead VM vagrant up

Slide 37

Slide 37 text

7. Done http://homestead.app:8000

Slide 38

Slide 38 text

Homestead advantages 1. Uniform development environment 2. Made for Laravel 3. Easy for beginners 4. Disposable virtual machines Homestead disadvantages 1. Different from production 2. Not “DevOps”

Slide 39

Slide 39 text

Homestead what? laravel.com/docs/homestead laracasts.com/lessons/introducing-laravel- homestead

Slide 40

Slide 40 text

Jens Segers @jenssegers jenssegers.be github.com/jenssegers