109 lines
4.8 KiB
Markdown
109 lines
4.8 KiB
Markdown
|
---
|
|||
|
title: Announcing the Drupal VM Generator
|
|||
|
date: 2016-02-15
|
|||
|
excerpt:
|
|||
|
For the past few weeks, I’ve been working on a personal side project based on
|
|||
|
Drupal VM - the Drupal VM Generator.
|
|||
|
tags:
|
|||
|
- drupal
|
|||
|
- drupal-planet
|
|||
|
- drupal-vm
|
|||
|
- drupal-vm-generator
|
|||
|
- symfony
|
|||
|
---
|
|||
|
|
|||
|
For the past few weeks, I’ve been working on a personal side project based on
|
|||
|
Drupal VM. It’s called the [Drupal VM Generator][1], and over the weekend I’ve
|
|||
|
added the final features and fixed the remaining issues, and tagged the 1.0.0
|
|||
|
release.
|
|||
|
|
|||
|
![](/images/blog/drupalvm-generate-repo.png)
|
|||
|
|
|||
|
## What is Drupal VM?
|
|||
|
|
|||
|
[Drupal VM][2] is a project created and maintained by [Jeff Geerling][3]. It’s a
|
|||
|
[Vagrant][4] virtual machine for Drupal development that is provisioned using
|
|||
|
[Ansible][5].
|
|||
|
|
|||
|
What is different to a regular Vagrant VM is that uses a file called
|
|||
|
`config.yml` to configure the machine. Settings such as `vagrant_hostname`,
|
|||
|
`drupalvm_webserver` and `drupal_core_path` are stored as YAML and passed into
|
|||
|
the `Vagrantfile` and the `playbook.yml` file which is used when the Ansible
|
|||
|
provisioner runs.
|
|||
|
|
|||
|
In addition to some essential Ansible roles for installing and configuring
|
|||
|
packages such as Git, MySQL, PHP and Drush, there are also some roles that are
|
|||
|
conditional and only installed based on the value of other settings. These
|
|||
|
include Apache, Nginx, Solr, Varnish and Drupal Console.
|
|||
|
|
|||
|
## What does the Drupal VM Generator do?
|
|||
|
|
|||
|
> The Drupal VM Generator is a Symfony application that allows you to quickly
|
|||
|
> create configuration files that are minimal and use-case specific.
|
|||
|
|
|||
|
Drupal VM comes with an [example.config.yml file][6] that shows all of the
|
|||
|
default variables and their values. When I first started using it, I’d make a
|
|||
|
copy of `example.config.yml`, rename it to `config.yml` and edit it as needed,
|
|||
|
but a lot of the examples aren’t needed for every use case. If you’re using
|
|||
|
Nginx as your webserver, then you don’t need the Apache virtual hosts. If you
|
|||
|
are not using Solr on this project, then you don’t need the Solr variables.
|
|||
|
|
|||
|
For a few months, I’ve kept and used boilerplace versions of `config.yml` - one
|
|||
|
for Apache and one for Nginx. These are minimal, so have most of the comments
|
|||
|
removed and only the variables that I regularly need, but these can still be
|
|||
|
quite time consuming to edit each time, and if there are additions or changes
|
|||
|
upstream, then I have two versions to maintain.
|
|||
|
|
|||
|
The Drupal VM Generator is a Symfony application that allows you to quickly
|
|||
|
create configuration files that are minimal and use-case specific. It uses the
|
|||
|
[Console component][7] to collect input from the user, [Twig][8] to generate the
|
|||
|
file, the [Filesystem component][9] to write it.
|
|||
|
|
|||
|
Based on the options passed to it and/or answers that you provide, it generates
|
|||
|
a custom, minimal `config.yml` file for your project.
|
|||
|
|
|||
|
Here’s an example of it in action:
|
|||
|
|
|||
|
!['An animated gif showing the interaction process and the resulting config.yml file'](/images/blog/drupalvm-generate-example-2.gif)
|
|||
|
|
|||
|
You can also define options when calling the command and skip any or all
|
|||
|
questions. Running the following would bypass all of the questions and create a
|
|||
|
new file with no interaction or additional steps.
|
|||
|
|
|||
|
{{ gist('24e569577ca4b72f049d', 'with-options.sh') }}
|
|||
|
|
|||
|
## Where do I get it?
|
|||
|
|
|||
|
The project is hosted on [GitHub][1], and there are installation instructions
|
|||
|
within the [README][10].
|
|||
|
|
|||
|
<div class="github-card" data-github="opdavies/drupal-vm-generator" data-width="400" data-height="" data-theme="default"></div>
|
|||
|
|
|||
|
The recommended method is via downloading the phar file (the same as Composer
|
|||
|
and Drupal Console). You can also clone the GitHub repository and run the
|
|||
|
command from there. I’m also wanting to upload it to Packagist so that it can be
|
|||
|
included if you manage your projects with Composer.
|
|||
|
|
|||
|
Please log any bugs or feature requests in the [GitHub issue tracker][11], and
|
|||
|
I’m more than happy to receive pull requests.
|
|||
|
|
|||
|
If you’re interested in contributing, please feel free to fork the repository
|
|||
|
and start doing so, or contact me with any questions.
|
|||
|
|
|||
|
**Update 17/02/16:** The autoloading issue is now fixed if you require the
|
|||
|
package via Composer, and this has been tagged as the [1.0.1 release][12]
|
|||
|
|
|||
|
[1]: https://github.com/opdavies/drupal-vm-generator
|
|||
|
[2]: http://www.drupalvm.com
|
|||
|
[3]: http://www.jeffgeerling.com
|
|||
|
[4]: http://www.vagrantup.com
|
|||
|
[5]: https://www.ansible.com
|
|||
|
[6]: https://github.com/geerlingguy/drupal-vm/blob/master/example.config.yml
|
|||
|
[7]: http://symfony.com/doc/current/components/console/introduction.html
|
|||
|
[8]: http://twig.sensiolabs.org
|
|||
|
[9]: http://symfony.com/doc/current/components/filesystem/introduction.html
|
|||
|
[10]:
|
|||
|
https://github.com/opdavies/drupal-vm-generator/blob/master/README.md#installation
|
|||
|
[11]: https://github.com/opdavies/drupal-vm-generator/issues
|
|||
|
[12]: https://github.com/opdavies/drupal-vm-generator/releases/tag/1.0.1
|