Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Binder playbook #67

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions playbooks/binder-trusty/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/roles
/.vagrant
/src
43 changes: 43 additions & 0 deletions playbooks/binder-trusty/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# AtoM Playbook

The provided playbook installs AtoM on a local Vagrant virtual machine.

## Requirements

- Vagrant 1.8.0 or newer
- Ansible 2.0.0 or newer

## How to use

Dowload the Ansible roles

$ ansible-galaxy install -f -p roles/ -r requirements.yml

Create the virtual machine and provision it:

$ vagrant up

To ssh to the VM, run:

$ vagrant ssh

If you want to forward your SSH agent too, run:

$ vagrant ssh -- -A

To (re-)provision the VM, using Vagrant:

$ vagrant provision

To (re-)provision the VM, using Ansible commands directly:

$ ansible-playbook singlenode.yml
--inventory-file=".vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory" \
--user="vagrant" \
--private-key=".vagrant/machines/atom-local/virtualbox/private_key" \
--extra-vars="atom_dir=/vagrant/src atom_environment_type=development" \
--verbose

To (re-)provision the VM, passing your own arguments to `Ansible`:

$ ANSIBLE_ARGS="--tags=elasticsearch,percona,memcached,gearman,nginx" vagrant provision
53 changes: 53 additions & 0 deletions playbooks/binder-trusty/Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.box = ENV.fetch("VAGRANT_BOX", "ubuntu/trusty64")

{
"binder-local" => {
"ip" => "192.168.168.195",
"memory" => "2048",
"cpus" => "2",
},
}.each do |short_name, properties|

# Define guest
config.vm.define short_name do |host|
host.vm.network "private_network", ip: properties.fetch("ip")
host.vm.hostname = "#{short_name}.myapp.dev"
end

# Set the amount of RAM and virtual CPUs for the virtual machine
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", properties.fetch("memory")]
vb.customize ["modifyvm", :id, "--cpus", properties.fetch("cpus")]
end

end

config.vm.synced_folder "src/atom", "/usr/share/nginx/atom", create: true

# Ansible provisioning
config.vm.provision :ansible do |ansible|
ansible.playbook = "./singlenode-qa.yml"
ansible.host_key_checking = false
ansible.extra_vars = {
"atom_user" => "vagrant",
"atom_group" => "vagrant",
"atom_environment_type" => "development",
"atom_flush_data" => "yes",
"elasticsearch_network_bind_host" => "0.0.0.0",
"es_config" => {
"network.host" => "0.0.0.0"
}
}
ansible.verbose = 'v'
ansible.raw_arguments = ENV['ANSIBLE_ARGS']
end

end
2 changes: 2 additions & 0 deletions playbooks/binder-trusty/ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[defaults]
nocows=1
40 changes: 40 additions & 0 deletions playbooks/binder-trusty/requirements.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
- src: "https://github.com/geerlingguy/ansible-role-java"
version: "master"
name: "geerlingguy.java"
path: "roles/"

- src: "https://github.com/elastic/ansible-elasticsearch"
version: "master"
name: "elastic.elasticsearch"
path: "roles/"

- src: "https://github.com/artefactual-labs/ansible-elasticsearch"
version: "master"
name: "artefactual.elasticsearch"
path: "roles/"

- src: "https://github.com/artefactual-labs/ansible-percona"
version: "master"
name: "artefactual.percona"
path: "roles/"

- src: "https://github.com/artefactual-labs/ansible-memcached"
version: "master"
name: "artefactual.memcached"
path: "roles/"

- src: "https://github.com/artefactual-labs/ansible-gearman"
version: "master"
name: "artefactual.gearman"
path: "roles/"

- src: "https://github.com/artefactual-labs/ansible-nginx"
version: "master"
name: "artefactual.nginx"
path: "roles/"

- src: "https://github.com/artefactual-labs/ansible-atom"
version: "master"
name: "artefactual.atom"
path: "roles/"
40 changes: 40 additions & 0 deletions playbooks/binder-trusty/singlenode-0.8.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
- hosts: "binder-local"

pre_tasks:

- include_vars: "vars-singlenode-0.8.yml"
tags:
- "always"

roles:

- role: "artefactual.elasticsearch"
become: "yes"
tags:
- "elasticsearch"

- role: "artefactual.percona"
become: "yes"
tags:
- "percona"

- role: "artefactual.memcached"
become: "yes"
tags:
- "memcached"

- role: "artefactual.gearman"
become: "yes"
tags:
- "gearman"

- role: "artefactual.nginx"
become: "yes"
tags:
- "nginx"

- role: "artefactual.atom"
become: "yes"
tags:
- "atom"
52 changes: 52 additions & 0 deletions playbooks/binder-trusty/singlenode-qa.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
- hosts: "binder-local"

pre_tasks:

- include_vars: "vars-singlenode-qa.yml"
tags:
- "always"

- name: "Installing PPA for Java 8"
apt_repository:
repo: "ppa:openjdk-r/ppa"
become: "yes"
tags:
- "always"

roles:

- role: "geerlingguy.java"
become: "yes"
tags:
- "java"

- role: "elastic.elasticsearch"
become: "yes"
tags:
- "elasticsearch"

- role: "artefactual.percona"
become: "yes"
tags:
- "percona"

- role: "artefactual.memcached"
become: "yes"
tags:
- "memcached"

- role: "artefactual.gearman"
become: "yes"
tags:
- "gearman"

- role: "artefactual.nginx"
become: "yes"
tags:
- "nginx"

- role: "artefactual.atom"
become: "yes"
tags:
- "atom"
119 changes: 119 additions & 0 deletions playbooks/binder-trusty/vars-singlenode-0.8.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
---

# PLEASE NOTE THAT THE PASSWORD VALUES USED HERE ARE NOT SAFE

#
# atom role
#

atom_path: "/usr/share/nginx/atom"
atom_repository_url: "https://github.com/artefactual/binder.git"
atom_repository_version: "stable/0.8.x"
atom_config_db_hostname: "127.0.0.1"
atom_config_db_name: "atom"
atom_config_db_username: "atom-user"
atom_config_db_password: "ATOMPASSWORD"
atom_config_db_port: "3306"
atom_es_host: "127.0.0.1"
atom_es_port: "9200"
atom_es_batch_size: "100"
atom_es_config_version: "2.1"
atom_mysql_user_name: "atom-user"
atom_mysql_user_pass: "ATOMPASSWORD"
atom_mysql_user_priv: "atom.*:ALL,GRANT"
atom_mysql_user_host: "%"
atom_drmc: "yes"
atom_drmc_es_scripts: "yes"
atom_worker_old_config: "yes"
atom_pool_php_envs:
ATOM_DRMC_TMS_URL: "http://artefactual.mockable.io/tms"
ARCHIVEMATICA_SS_HOST: "192.168.168.192"
ARCHIVEMATICA_SS_PORT: "8000"
ARCHIVEMATICA_SS_PIPELINE_UUID: "CHANGE_ME"
ARCHIVEMATICA_SS_USER: "test"
ARCHIVEMATICA_SS_API_KEY: "CHANGE_ME"

#
# nginx role
#

nginx_configs:
atom_backend:
- upstream atom {
server unix:/var/run/php-fpm.atom.sock;
}

nginx_sites:
atom:
- listen 80
- set $atom_path {{ atom_path }}
- root $atom_path
- server_name _
- client_max_body_size 72M
- location /api/docs {
index index.html;
alias $atom_path/plugins/arDrmcPlugin/frontend/docs/build/html;
}
- set $alt_request_uri $request_uri
- location /drmc/ {
error_page 404 = @drmc;
log_not_found off;
set $alt_request_uri /drmc/index;
}
- location @drmc {
rewrite ^/drmc/(.*)$ /index.php last;
}
- location / {
try_files $uri /index.php?$args;
}
- location ~ /\. {
deny all;
return 404;
}
- location ~* (\.yml|\.ini|\.tmpl)$ {
deny all;
return 404;
}
- location ~* /(?:uploads|files)/.*\.php$ {
deny all;
return 404;
}
- location ~ ^/(index|qubit_dev)\.php(/|$) {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REQUEST_URI $alt_request_uri;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass atom;
}
- location ~* \.php$ {
deny all;
return 404;
}

#
# elasticsearch role
#

elasticsearch_version: "1.7.6"
elasticsearch_heap_size: "1g"

#
# percona role
#

mysql_version_major: "5"
mysql_version_minor: "5"

mysql_databases:
- name: "atom"
collation: "utf8_general_ci"
encoding: "utf8"

mysql_users:
- name: "{{ atom_mysql_user_name }}"
pass: "{{ atom_mysql_user_pass }}"
priv: "{{ atom_mysql_user_priv }}"
host: "{{ atom_mysql_user_host }}"

mysql_root_password: "MYSQLROOTPASSWORD"
mysql_bind_address: "0.0.0.0"
Loading