Compare commits

...

4 commits

Author SHA1 Message Date
Oliver Davies b3ad73513f Re-order README links 2019-11-26 10:07:08 +00:00
Oliver Davies 12b8b089ba Store Vault password in a file
This is fine as it's just an example project.
2019-11-26 10:06:58 +00:00
Oliver Davies ca10d38c79 Move ansible directory into tools 2019-11-26 09:12:06 +00:00
Oliver Davies 5e90535248 Add installation instructions
Fixes 
2019-10-31 11:03:35 +00:00
18 changed files with 50 additions and 150 deletions

150
README.md
View file

@ -1,143 +1,21 @@
# Composer template for Drupal projects
# Dransible
[![Build Status](https://travis-ci.org/drupal-composer/drupal-project.svg?branch=8.x)](https://travis-ci.org/drupal-composer/drupal-project)
A demo [Drupal] application for demonstrating PHP application deployment with [Ansible][], [Ansible Vault][] and [Ansistrano][].
This project template provides a starter kit for managing your site
dependencies with [Composer](https://getcomposer.org/).
[Ansible]: https://www.ansible.com
[Ansible Vault]: https://docs.ansible.com/ansible/ansible-vault.html
[Ansistrano]: https://ansistrano.com
[Drupal]: https://drupal.org
If you want to know how to use it as replacement for
[Drush Make](https://github.com/drush-ops/drush/blob/8.x/docs/make.md) visit
the [Documentation on drupal.org](https://www.drupal.org/node/2471553).
## Prerequisites
## Usage
- [Ansible][]
- [Vagrant][]
- [VirtualBox][]
First you need to [install composer](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx).
[Vagrant]: https://www.vagrantup.com
[VirtualBox]: https://www.virtualbox.or
> Note: The instructions below refer to the [global composer installation](https://getcomposer.org/doc/00-intro.md#globally).
You might need to replace `composer` with `php composer.phar` (or similar)
for your setup.
## Installation
After that you can create the project:
```
composer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
```
With `composer require ...` you can download new dependencies to your
installation.
```
cd some-dir
composer require drupal/devel:~1.0
```
The `composer create-project` command passes ownership of all files to the
project that is created. You should create a new git repository, and commit
all files not excluded by the .gitignore file.
## What does the template do?
When installing the given `composer.json` some tasks are taken care of:
* Drupal will be installed in the `web`-directory.
* Autoloader is implemented to use the generated composer autoloader in `vendor/autoload.php`,
instead of the one provided by Drupal (`web/vendor/autoload.php`).
* Modules (packages of type `drupal-module`) will be placed in `web/modules/contrib/`
* Theme (packages of type `drupal-theme`) will be placed in `web/themes/contrib/`
* Profiles (packages of type `drupal-profile`) will be placed in `web/profiles/contrib/`
* Creates default writable versions of `settings.php` and `services.yml`.
* Creates `web/sites/default/files`-directory.
* Latest version of drush is installed locally for use at `vendor/bin/drush`.
* Latest version of DrupalConsole is installed locally for use at `vendor/bin/drupal`.
* Creates environment variables based on your .env file. See [.env.example](.env.example).
## Updating Drupal Core
This project will attempt to keep all of your Drupal Core files up-to-date; the
project [drupal-composer/drupal-scaffold](https://github.com/drupal-composer/drupal-scaffold)
is used to ensure that your scaffold files are updated every time drupal/core is
updated. If you customize any of the "scaffolding" files (commonly .htaccess),
you may need to merge conflicts if any of your modified files are updated in a
new release of Drupal core.
Follow the steps below to update your core files.
1. Run `composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies` to update Drupal Core and its dependencies.
1. Run `git diff` to determine if any of the scaffolding files have changed.
Review the files for any changes and restore any customizations to
`.htaccess` or `robots.txt`.
1. Commit everything all together in a single commit, so `web` will remain in
sync with the `core` when checking out branches or running `git bisect`.
1. In the event that there are non-trivial conflicts in step 2, you may wish
to perform these steps on a branch, and use `git merge` to combine the
updated core files with your customized files. This facilitates the use
of a [three-way merge tool such as kdiff3](http://www.gitshah.com/2010/12/how-to-setup-kdiff-as-diff-tool-for-git.html). This setup is not necessary if your changes are simple;
keeping all of your modifications at the beginning or end of the file is a
good strategy to keep merges easy.
## Generate composer.json from existing project
With using [the "Composer Generate" drush extension](https://www.drupal.org/project/composer_generate)
you can now generate a basic `composer.json` file from an existing project. Note
that the generated `composer.json` might differ from this project's file.
## FAQ
### Should I commit the contrib modules I download?
Composer recommends **no**. They provide [argumentation against but also
workrounds if a project decides to do it anyway](https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md).
### Should I commit the scaffolding files?
The [drupal-scaffold](https://github.com/drupal-composer/drupal-scaffold) plugin can download the scaffold files (like
index.php, update.php, …) to the web/ directory of your project. If you have not customized those files you could choose
to not check them into your version control system (e.g. git). If that is the case for your project it might be
convenient to automatically run the drupal-scaffold plugin after every install or update of your project. You can
achieve that by registering `@composer drupal:scaffold` as post-install and post-update command in your composer.json:
```json
"scripts": {
"post-install-cmd": [
"@composer drupal:scaffold",
"..."
],
"post-update-cmd": [
"@composer drupal:scaffold",
"..."
]
},
```
### How can I apply patches to downloaded modules?
If you need to apply patches (depending on the project being modified, a pull
request is often a better solution), you can do so with the
[composer-patches](https://github.com/cweagans/composer-patches) plugin.
To add a patch to drupal module foobar insert the patches section in the extra
section of composer.json:
```json
"extra": {
"patches": {
"drupal/foobar": {
"Patch description": "URL or local path to patch"
}
}
}
```
### How do I switch from packagist.drupal-composer.org to packages.drupal.org?
Follow the instructions in the [documentation on drupal.org](https://www.drupal.org/docs/develop/using-composer/using-packagesdrupalorg).
### How do I specify a PHP version ?
Currently Drupal 8 supports PHP 5.5.9 as minimum version (see [Drupal 8 PHP requirements](https://www.drupal.org/docs/8/system-requirements/drupal-8-php-requirements)), however it's possible that a `composer update` will upgrade some package that will then require PHP 7+.
To prevent this you can add this code to specify the PHP version you want to use in the `config` section of `composer.json`:
```json
"config": {
"sort-packages": true,
"platform": {"php": "5.5.9"}
},
```
See [installation.md](docs/installation.md)

4
Vagrantfile vendored
View file

@ -18,8 +18,8 @@ Vagrant.configure("2") do |config|
config.vm.provision "ansible" do |ansible|
ansible.compatibility_mode = "2.0"
ansible.playbook = "ansible/provision.yml"
ansible.inventory_path = "ansible/hosts.yml"
ansible.playbook = "tools/ansible/provision.yml"
ansible.inventory_path = "tools/ansible/hosts.yml"
ansible.become = true
ansible.ask_vault_pass = true
end

View file

@ -1,5 +1,5 @@
[defaults]
inventory = ./ansible/hosts.yml
inventory = ./tools/ansible/hosts.yml
nocows = True
private_key_file = .vagrant/machines/dransible/virtualbox/private_key
remote_user = vagrant

View file

@ -1,10 +0,0 @@
$ANSIBLE_VAULT;1.1;AES256
36623031633937333366366139373538383730336439393237613762653632353766396437343461
3637316538346432646532643066363361366262383037310a376330623637373335333236343536
37316466613531363830333734323933666431643131326331393030343937353661623234356432
3437376566623863620a313966333234363166326438373731313433633430623035393763376434
37383934626562653534363634373132386239343465303535396666373563333566336663336538
35323536396433376236383963626534636266343031363035666431393433323832343965316264
65613734383066366565613433376565623239363462383664663063366230613330333032306434
36663163353431343335653933616236363836363634333430393237363737313432346136623464
37323165363361333133393238353638353332613136353031313630663834326439

Binary file not shown.

After

(image error) Size: 675 KiB

Binary file not shown.

After

(image error) Size: 554 KiB

19
docs/installation.md Normal file
View file

@ -0,0 +1,19 @@
# Installation
1. Run `vagrant up` or `vagrant up --provision` if needed, to start Vagrant and provision the virtual machine using the `tools/ansible/provision.yml` playbook. This will set up a LAMP stack with Apache, MySQL, PHP and Composer.
If you try loading the site at this point you will see a `The requested URL was not found on this server` message as the site has not yet been deployed.
![A browser showing a 'Not Found' error](images/before-deploy.png)
1. Run the deploy playbook to deploy the application code to the virtual machine. The Vault password, which is `dransible`, is stored in `tools/ansible/vault-password.txt` as this is an example project.
```
ansible-playbook tools/ansible/deploy.yml \
-i tools/ansible/hosts.yml \
--vault-password-file=tools/ansible/vault-password.txt
```
1. Load `http://dransible` in a browser, and you should see a Drupal 8 website.
![A browser showing the front page of a Drupal website](images/after-deploy.png)

View file

@ -15,7 +15,7 @@
release_drush_path: "{{ ansistrano_release_path.stdout }}/vendor/bin/drush"
ansistrano_deploy_via: "rsync"
ansistrano_deploy_from: "{{ playbook_dir }}/../"
ansistrano_deploy_from: "{{ playbook_dir }}/../../"
ansistrano_deploy_to: "{{ project_deploy_dir }}"
ansistrano_keep_releases: 5
ansistrano_after_symlink_shared_tasks_file: "{{ playbook_dir }}/deploy/after-symlink-shared.yml"

View file

@ -0,0 +1,12 @@
$ANSIBLE_VAULT;1.1;AES256
61653737643939333936636566323038316561323033633831656536643733343639356232356538
3238306433353165626531646366646132626233646561390a386534373066346234373237373865
64363663323662666261616136663239366634643135386433613639313532653262373932386166
3736626562653963390a666566643537356436303166356130616530306562303565323637343631
31333837303166623130353530636366663464346431643837303637343863353764373236303861
65623364383839623063393466303637653865393031626234366361333261633238383261646233
31313131393933636236326463313830346534613862333733306265633962663964386638623435
64323437373262653862383063343436633237353865386539653263623935626431363362363436
37306338313134383334316232383238663830346231393638353834663730663663626465353862
34366132653430326230613164333533326463346638393866636465343237613263346232663538
306164366133323334373862353238343834

View file

@ -0,0 +1 @@
dransible