Giter Club home page Giter Club logo

parrot's Introduction

Parrot development VM

Build Status

Parrot is a utility VM for Drupal development. It's not your development environment, but it's the complex, hard to set up, servers you'll need.

Name

Simple and repeatable, that is what the Parrot VM is all about.

Requirements

Installation

You will need to clone this repo to your host machine, and then cd into the directory and run:

vagrant up

That's it!

If you want to use your VMWare Fusion Vagrant provider, then run:

vagrant up --provider=vmware_fusion

If you want to use your Parallels Vagrant provider, then run:

vagrant up --provider=parallels

Usage

For detailed instructions on how to use all the features provided by Parrot, see the wiki.

Config

You can configure the VM that Parrot provisions read the configuration page in the wiki for more details.

Features

parrot's People

Contributors

3mkay avatar amoebanath avatar anotherjames avatar danquah avatar darthsteven avatar finnlewis avatar fuzzbomb avatar googletorp avatar jamsilver avatar lslinnet avatar stevetweeddale avatar tripox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

parrot's Issues

Automated testing

So apparently you might actually be able to do automated testing of Vagrant VMs using Travis, but failing that we could use our Jenkins and just make sure that the VM can be installed from scratch.

Downloading solr takes an AGE

I don't know why, but when puppet was downloading solr-4.2.1.tgz it was going extremely slowly (it would've taken about 1.5 hours to complete). The wget command used is:

/usr/bin/wget -c http://archive.apache.org/dist/lucene/solr/4.2.1/solr-4.2.1.tgz

However, when I hit that url in my browser, it downloads no problem in a few minutes.

As such my workaround was to download it myself, copy it into the guest machine /tmp directory and then re-run vagrant provision.

Is there anything that can be done about this? Could apache.org be sniffing our headers and limiting the response for scripted downloads? Very irritating for it to take so long to spin up a guest machine.

Percona will not install because a keyserver has stopped working

Looks like the keys.gnupg.net server got hacked:

err: /Stage[main]/Parrot_mysql/Apt::Key[percona]/Exec[d862c9101408438167b0ad0d2b8622a9f35e344c]/returns: change from notrun to 0 failed: apt-key adv --keyserver 'keys.gnupg.net' --recv-keys '1C4CBDCDCD2EFD2A' returned 2 instead of one of [0] at /tmp/vagrant-puppet/modules-0/apt/manifests/key.pp:54

Make the amount of memory configurable

Now that we have a config file, it should be easy to add in some configuration for selecting the amount of memory to give the VM without editing the Vagrantfile.

Add the hosts to the host file

For testing, you need the hosts to resolve correctly, so we should add them to the hosts file, like we add them to the apache config.

Set up CI

So we have a spare box in the office, we should set up Jenkins, and Vagrant and run some lovely CI.

Set up HTTPS

It would be really useful to be able to drop to configured HTTPS really easily.

This should be fairly trivial, and we can use self signed SSL certs etc.

Allow sites to use different versions of PHP

It would be useful to somehow each site use it's preferred version of php.

Drupal 8 requires 5.4 - according to this - https://drupal.org/node/2152073
but the 'hard requirement' for 5.4 isn't in code yet.

I'd rather not switch everything to 5.4, as I have some D6 sites that would fall over.

Any suggested workarounds for getting some sites running with 5.4 appreciated.
I'l like to get some D8 sites going.

Email magic

All emails sent within Parrot should be captured, but available to be collected via a simple mailbox connection.

How do I find the IP address of the guest machine created by parrot/vagrant?!

So I issue vagrant up (and it seems to work, 2nd time 1st time had nfs mount, see other issue). I say seems to work - unceremoniously finishes.

But now what?

What is the IP address to actually connect to the guest machine?! i.e. via ssh?

Your install instructions say run vagrant up and then "that's it!" But give no clue as to what the IP address of the machine is!

Apparently, it is not possible to discover this from virtualbox itself - https://forums.virtualbox.org/viewtopic.php?f=1&t=36592

Apache

We should install apache, with some useful extensions.
It should be configured to run on port 8080.

It should be able to pick up sites from one of the vagrant shares, so not really sure what the best way to do this is yet.

Memcache[d] would be useful in parrot.

Either memcached or memcache (I never remember the difference... I believe memcached is the one I found a need to install) would be useful to have in the parrot VM.

Add MySQL server

We should have a MySQL server installed, and ready to go.
We can probably nick some of the config from Pergola to make it go fast!

Though, maybe we should be looking at using Percona or something else?

Can't install xhprof

So adding the key for the xhprof repo is failing for me.

err: /Stage[main]/Parrot_php/Apt::Key[php5-xhprof]/Exec[e2ecbf2accf54901cc970405a403abf776d52fd6]/returns: change from notrun to 0 failed: apt-key adv --keyserver 'keyserver.ubuntu.com' --recv-keys '8D0DC64F' returned 2 instead of one of [0] at /tmp/vagrant-puppet/modules-0/apt/manifests/key.pp:54

xdebug

We should install xdebug and get it to make connections back to the host machine somehow.

NFS permissions aren't working

Seemingly NFS permissions aren't working any more.
Basically, something isn't quite working right, so that web server can't quite write to the correct directories.

ssh-key passthrough

We should do the clever ssh key magic so that people can use their ssh keys from the guest VM's terminal.

Percona is causing issues

Percona has seemed to cause a few random issues here and there, and just seems less stable than stock MySQL.

Not sure why either.

Let's revert.

Allow multiple Solr cores to be specified

Solr 5 is going to iterate over a directory looking for cores, so until we have Solr 5 lets get Puppet to do this and write the correct configuration to a solr.xml as needed.

Error on screen after running 'drush cr'

Hi Steven
I'm testing Drupal 8, with php5.4 after the recent update - thanks!

Not sure where this issue lies, but Parrot won the short straw, so I'll start here.
I get an error on screen after running drush cr [on the host - Mac OS 10.9.1 ]

Twig_Error_Loader: The "/Users/alanjosephburke/projects/parrot54/sites/imp.parrot" directory does not exist. in Twig_Loader_Filesystem->addPath() (line 93 of /vagrant_sites/imp.parrot/core/vendor/twig/twig/lib/Twig/Loader/Filesystem.php).

The error report the host file system as path it was checking.
See attached for full error.
drush-cr-parrot

If I run drush cr from the VM, I don't get the error.

Any tips on where the error might lie.
Thanks for all the hard work.

Allow per-site configuration

So we should allow things to be done per 'site' so that you can specify different web roots etc.

I'm not sure how easy it'll be, as basically we want to have per directory configuration files for puppet.
I think puppet really wants to have all of these in one nice folder.

Varnish

We should have a varnish instance serving requests from port 80 and forwarding on to Apache on port 8080 to replicate most production environments.

The VCL should be configurable from the host like our Solr config of course.

APC

No-brainer

Error on vagrant up - Parameter name failed: Invalid host name

Keeps getting the

Parameter name failed: Invalid host name

error when ever I do either a vagrant up, reload or provision.

Have turned on debugging/verbose in the VagrantFile with the following output, have been unable to pinpoint exactly why it is throwing this error.
https://gist.github.com/lslinnet/74d4d12478df554aaa6d

Have also done a facter fqdn and looked at my /etc/resolv.conf file.

➜  parrot git:(master) ✗ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Mon Jul 15 14:22:31 2013 from 10.0.2.2
vagrant@precise64:~$ facter fqdn
vagrant@precise64:~$ cat /etc/resolv
resolvconf/  resolv.conf
vagrant@precise64:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.2.2
nameserver 8.8.8.8
nameserver 8.8.4.4

Which to me looks fine.

XDebug can cause page loads to hang

When trying to use xdebug, but when nothing is listening on the host machine, page loads can hang for around 30 seconds.

This is really annoying, and is totally frustrating because you totally don't know what is happening.

Not sure if this is because the the host machine is waiting to reject the connection or what, but it's annoying!

precise64's apt repositories are out of date?

Thanks for providing this, and thanks for treating OxDUG to its world premiere yesterday!

In order to get NFS working properly, I had to remove my (elderly) precise64 base box from Vagrant. However, even though Vagrant then downloaded what's presumably a fairly up-to-date box from vagrantup.com, vagrant up eventually terminated with the following:

https://gist.github.com/jpstacey/5720430/26c433753dbaf67e0cc8f0bef853e25273edf384

SSHing in, I could repeat this; but doing an apt-get update fixed it. Is it worth getting puppet to do this itself as a pre-requisite to any other calls to apt-get?

J-P

Document the vagrantfile config

We now have a config.yaml to configure the vagrant file, see issue #32.

We should certainly document this.

The syntax is something like this:

sites: 'path/to/sites'
databases: 'path/to/databases'

PHP

We should install and configure PHP for development.
Not sure if we expose the php.ini for people to edit?

Oh-my-zsh

Maybe we should install oh-my-zsh to give a better terminal experience. Not 100% sure on how it should be configured, maybe we should just install the defaults and see what happens.

Fails on mount NFS with error: "The following SSH command responded with a non-zero exit status."

according to my searching - this is due to the virtualbox additions not being installed on the guest VM - so this would need to take place before the NFS mount:

http://docs-v1.vagrantup.com/v1/docs/troubleshooting.html

snippet of terminal session log output:

[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 8983 => 8983 (adapter 1)
[default] -- 3306 => 3306 (adapter 1)
[default] -- 80 => 8181 (adapter 1)
[default] -- 8080 => 8080 (adapter 1)
[default] -- 143 => 1143 (adapter 1)
[default] Running any VM customizations...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /vagrant_databases
[default] -- /tmp/vagrant-cache
[default] -- /vagrant_parrot_config
[default] -- /tmp/vagrant-puppet/modules-0
[default] -- /tmp/vagrant-puppet/manifests
[default] Exporting NFS shared folders...
Preparing to edit /etc/exports. Administrator privileges will be required...
Password:
[default] Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mount -o vers=3 192.168.50.1:'/Users/robdavisprojects/work/dev/vagrant/drupal8/parrot/sites' /vagrant_sites
Roberts-MacBook-Pro:parrot robdavisprojects$ lsmod | grep vboxsf
-bash: lsmod: command not found
Roberts-MacBook-Pro:parrot robdavisprojects$ lsmod | grep vboxsf
-bash: lsmod: command not found
Roberts-MacBook-Pro:parrot robdavisprojects$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.