This repository contains some sample Ansible roles for getting a FOLIO installation up and running quickly. For more details, see the doc directory.
The primary audiences for this project are:
- Developers who want to take the code for a spin in a VM, without altering their own working environment.
- Frontend developers looking for a "black box" FOLIO backend system to code against.
- DevOps and others interested in automating FOLIO image builds
- System administrators interested in deployment down the road.
Copyright (C) 2016-2022 The Open Library Foundation
This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.
For Vagrant deployment:
- Vagrant >= 1.9.6 (note that Ubuntu
provides a
broken 2.0.2 version
and an outdated 1.9.1 version, install the latest
Debian file from the Vagrant Download page
using
dpkg -i vagrant\_….deb
instead) - VirtualBox
For Ansible provisioning (to build a dev VM, or to build the demo or backend system from scratch)
- Ansible >= 2.3
This installation has been tested on macOS "Sierra", Ubuntu 16.04 and 18.04, and Windows 10. Note that Windows cannot serve as an Ansible control host.
If all you want to do is try out a prepackaged FOLIO demo Vagrant box,
create a new directory, cd
into it, and try:
$ vagrant init folio/release-core
$ vagrant up
Note: That is for the Juniper R2-2021 release -- subsequent flower releases do not have a release-core. Awaiting platform-minimal FOLIO-3253.
Now you can open http://localhost:3000. Admin login: diku_admin/admin
Or, if you want to try a prepackaged FOLIO backend Vagrant box with the most recent versions of all components, do:
$ vagrant init folio/snapshot
$ vagrant up
Note: The VM will require the allocation of more memory. Refer to notes.
The Vagrant Cloud page folio lists all available boxes and has detailed release notes, including which versions of the backend and frontend modules are provided.
For all Vagrant boxes, the Okapi port on the VM (9130) will be
forwarded to localhost:9130
and the Stripes port and user interface
will be forwarded to localhost:3000
. You should see the Stripes user
interface at http://localhost:3000
.
For more information, see Vagrant VMs and Ansible roles.
In addition, this project includes a Vagrantfile for creating different environments.
The deploy host is used to run the Ansible playbooks.
- Linux or MacOSX
- Ansible installed
- ssh configured to access the server - preferred using ssh-keys
- Ubuntu 16.04 for Folio Fameflower
- Ubuntu 20.04 or Debian 10 for Folio Honeysuckle
- Python installed
- For SSL you need
- Certificate file and a key file without Password
- FQDN
To install Folio using the folio.yml Ansible playbook, you have to download
and unpack the folio-ansible sources. Then create a inventory file.
You also have to configure some parameters. You can put
these in the inventory file, in group vars files or in host vars files. In this
example we use the inventory. The contents of the inventory file inventory.yml
:
all:
hosts:
my-host.domain.com:
children:
release:
hosts:
my-host.domain.com:
save_dir: /etc/folio/savedir
okapi_interface: ens3
okapi_storage: postgres
tenant: mytenant
tenant_name: "My Organisation"
tenant_description: "Description of my Organisation"
okapi_role: dev
stripes:
hosts:
my-host.domain.com:
stripes_host_address: 0.0.0.0
stripes_okapi_url: http://my-host.domain.com:9130
stripes_tenant: mytenant
Next we can install Folio using the folio.yml
playbook:
ansible-playbook -u ubuntu -i inventory.yml folio.yml
To learn more about the parameters, you should have a look at the
playbook folio.yml
, to see which roles are executed and in the
documentation of the roles.
Another example includes deployment of Stripes to use https instead of http, securing okapis supertenant and the tenant admin user.
all:
hosts:
my-host.domain.com:
children:
release:
hosts:
my-host.domain.com:
save_dir: /etc/folio/savedir
okapi_interface: ens3
okapi_storage: postgres
tenant: mytenant
tenant_name: "My Organisation"
tenant_description: "Description of my Organisation"
okapi_role: dev
admin_user:
username: my_admin
password: tenantadminpassword
stripes:
hosts:
my-host.domain.com:
stripes_host_address: 0.0.0.0
stripes_okapi_url: http://my-host.domain.com:9130
stripes_tenant: mytenant
stripes_enable_https: yes
stripes_certificate_file: /path/to/certificate.pem
stripes_certificate_key_file: /path/to/key.pem
nginx_proxy_okapi: yes
stripes_listen_port: 443
stripes_server_name: my-host.domain.com
production:
hosts:
my-host.domain.com:
superuser_username: opkapi_superuser
superuser_password: superpassword
- VM and playbook documentation
- Contributing guidelines
- Vagrant documentation
- Ansible documentation
- See project FOLIO at the FOLIO issue tracker.
- Other FOLIO Developer documentation is at dev.folio.org