Skip to content

Instantly share code, notes, and snippets.

@icomefromthenet
Created July 10, 2012 00:32
Show Gist options
  • Select an option

  • Save icomefromthenet/3080128 to your computer and use it in GitHub Desktop.

Select an option

Save icomefromthenet/3080128 to your computer and use it in GitHub Desktop.

Revisions

  1. icomefromthenet created this gist Jul 10, 2012.
    112 changes: 112 additions & 0 deletions Vagrantfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,112 @@
    # -*- mode: ruby -*-
    # vi: set ft=ruby :

    Vagrant::Config.run do |config|
    # All Vagrant configuration is done here. The most common configuration
    # options are documented and commented below. For a complete reference,
    # please see the online documentation at vagrantup.com.

    # Every Vagrant virtual environment requires a box to build off of.

    config.vm.box = "precise64"

    # The url from where the 'config.vm.box' box will be fetched if it
    # doesn't already exist on the user's system.
    # config.vm.box_url = "http://domain.com/path/to/above.box"

    # Boot with a GUI so you can see the screen. (Default is headless)
    #config.vm.boot_mode = :gui

    # Assign this VM to a host-only network IP, allowing you to access it
    # via the IP. Host-only networks can talk to the host machine as well as
    # any other machines on the same network, but cannot be accessed (through this
    # network interface) by any external networks.
    config.vm.network :hostonly, "33.33.33.87"

    # Assign this VM to a bridged network, allowing you to connect directly to a
    # network using the host's network device. This makes the VM appear as another
    # physical device on your network.
    # config.vm.network :bridged

    # Forward a port from the guest to the host, which allows for outside
    # computers to access the VM, whereas host only networking does not.
    # config.vm.forward_port 80, 8080

    # Share an additional folder to the guest VM. The first argument is
    # an identifier, the second is the path on the guest to mount the
    # folder, and the third is the path on the host to the actual folder.
    config.vm.share_folder("v-root", "/vagrant", ".", :nfs => true)

    # Enable provisioning with Puppet stand alone. Puppet manifests
    # are contained in a directory path relative to this Vagrantfile.
    # You will need to create the manifests directory and a manifest in
    # the file base.pp in the manifests_path directory.
    #
    # An example Puppet manifest to provision the message of the day:
    #
    # # group { "puppet":
    # # ensure => "present",
    # # }
    # #
    # # File { owner => 0, group => 0, mode => 0644 }
    # #
    # # file { '/etc/motd':
    # # content => "Welcome to your Vagrant-built virtual machine!
    # # Managed by Puppet.\n"
    # # }
    #
    # config.vm.provision :puppet do |puppet|
    # puppet.manifests_path = "manifests"
    # puppet.manifest_file = "base.pp"
    # end

    # Provisioning.
    Vagrant::Config.run do |config|
    config.vm.provision :shell, :inline => "apt-get update"
    config.vm.provision :shell, :path => "manifests/apache2.sh"
    config.vm.provision :shell, :path => "manifests/php5.sh"
    config.vm.provision :shell, :path => "manifests/php5-qa.sh"
    config.vm.provision :shell, :path => "manifests/php5-tools.sh"
    config.vm.provision :shell, :path => "manifests/db-mysql.sh"
    config.vm.provision :shell, :path => "manifests/dev-tools.sh"
    config.vm.provision :shell, :inline => "apt-get -y upgrade"
    end

    # Enable provisioning with chef solo, specifying a cookbooks path, roles
    # path, and data_bags path (all relative to this Vagrantfile), and adding
    # some recipes and/or roles.
    #
    # config.vm.provision :chef_solo do |chef|
    # chef.cookbooks_path = "../my-recipes/cookbooks"
    # chef.roles_path = "../my-recipes/roles"
    # chef.data_bags_path = "../my-recipes/data_bags"
    # chef.add_recipe "mysql"
    # chef.add_role "web"
    #
    # # You may also specify custom JSON attributes:
    # chef.json = { :mysql_password => "foo" }
    # end

    # Enable provisioning with chef server, specifying the chef server URL,
    # and the path to the validation key (relative to this Vagrantfile).
    #
    # The Opscode Platform uses HTTPS. Substitute your organization for
    # ORGNAME in the URL and validation key.
    #
    # If you have your own Chef Server, use the appropriate URL, which may be
    # HTTP instead of HTTPS depending on your configuration. Also change the
    # validation key to validation.pem.
    #
    # config.vm.provision :chef_client do |chef|
    # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
    # chef.validation_key_path = "ORGNAME-validator.pem"
    # end
    #
    # If you're using the Opscode platform, your validator client is
    # ORGNAME-validator, replacing ORGNAME with your organization name.
    #
    # IF you have your own Chef Server, the default validation client name is
    # chef-validator, unless you changed the configuration.
    #
    # chef.validation_client_name = "ORGNAME-validator"
    end
    10 changes: 10 additions & 0 deletions apache2.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,10 @@
    # Install Apache version 2 web server
    apt-get -q -y install apache2 apache2-doc

    # Set local host on apache
    echo "ServerName localhost" | tee /etc/apache2/conf.d/fqdn

    #restart apache
    /etc/init.d/apache2 restart

    exit 0;
    17 changes: 17 additions & 0 deletions db-mysql.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    #!/bin/bash

    # Update aptitude.
    apt-get -q update

    # Install MySQL.
    export DEBIAN_FRONTEND=noninteractive
    apt-get -q -y install mysql-server
    apt-get -q -y install php5-mysql
    apt-get -q -y install mysql-client

    # set new root password
    mysqladmin -u root password vagrant

    mysql -h localhost -u root -pvagrant <<< 'CREATE SCHEMA sakila;'

    exit 0;
    11 changes: 11 additions & 0 deletions dev-tools.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    #!/bin/bash

    # Update aptitude.
    apt-get -q update

    # SCM tools & utils.
    apt-get -q -y install byobu

    apt-get -q -y install git-core

    exit 0;
    50 changes: 50 additions & 0 deletions php5-qa.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    #!/bin/bash

    # Upgrades PEAR.
    pear upgrade PEAR

    pear config-set preferred_state beta

    # setup symfony components YAML Required by phpunit

    pear channel-discover pear.symfony-project.com
    pear install symfony/YAML

    # PHPUnit.
    #pear config-set auto_discover 1
    pear channel-discover pear.phpunit.de

    # PPW, PHPCPD, PHPLOC.
    pear channel-discover components.ez.no

    # Dbunit
    pear install phpunit/DbUnit

    #mock object

    pear install phpunit/PHPUnit_MockObject

    # PPW.
    pear install phpunit/ppw

    # PHPCPD.
    pear install phpunit/phpcpd

    # PHPLOC.
    pear install phpunit/phploc

    # install phpunit
    pear install --alldeps phpunit/PHPUnit

    # PDepend.
    pear channel-discover pear.pdepend.org
    pear install pdepend/PHP_Depend-beta

    # PHPMD (depends on PDepend)
    pear channel-discover pear.phpmd.org
    pear install --alldeps phpmd/PHP_PMD

    # PHP CodeSniffer.
    pear install pear/PHP_CodeSniffer

    exit 0;
    46 changes: 46 additions & 0 deletions php5-tools.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    #!/bin/bash

    # Upgrades PEAR.
    pear upgrade PEAR

    # Phing.
    pear channel-discover pear.phing.info
    pear install phing/phing

    # Composer.
    cd /usr/bin
    wget -q http://getcomposer.org/composer.phar
    chmod a+x composer.phar

    # install phar
    cd /usr/bin
    wget -q http://pear2.php.net/pyrus.phar
    chmod 755 /usr/bin/pyrus.phar


    echo ';used to enable phar ext' >> /etc/php5/cli/php.ini
    echo 'suhosin.executor.include.whitelist="phar"' >> /etc/php5/cli/php.ini


    # Install Pear Package Manager

    pear config-set preferred_state alpha
    pear install XML_Serializer
    pear install PEAR_PackageFileManager2


    # install prium

    pear channel-discover pear.pirum-project.org
    pear install pirum/Pirum

    # pear Git package

    pear config-set preferred_state alpha
    pear install VersionControl_Git

    # Discover my own pear channel

    pear channel-discover icomefromthenet.github.com/pear

    exit 0;
    21 changes: 21 additions & 0 deletions php5.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    #!/bin/bash

    # Update aptitude.
    apt-get -q update

    # Install PHP with necessary modules
    apt-get -q -y install php5 php5-suhosin
    apt-get -q -y install php5-cli
    apt-get -q -y install libapache2-mod-php5

    # which creates a symbolic link /etc/apache2/mods-enabled/php5 pointing to /etc/apache2/mods-availble/php5 .
    a2enmod php5

    # restart apache
    /etc/init.d/apache2 restart

    # Install Extras
    apt-get -q -y install php5-curl php-pear php5-xdebug curl php5-mcrypt php5-sqlite
    #php5-gd php5-gmp php5-imap php5-ldap php5-mhash php5-ming php5-odbc php5-pspell php5-snmp php5-sybase php5-tidy libwww-perl imagemagick

    exit 0;