Skip to content

Commit

Permalink
using copy of fcrepo role due to needing to change the fedora config …
Browse files Browse the repository at this point in the history
…to point at s3
  • Loading branch information
elizoller committed Aug 1, 2020
1 parent 9a8f8fa commit 43efd48
Show file tree
Hide file tree
Showing 21 changed files with 974 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
**GitHub Issue**: (link)

* Other Relevant Links (Google Groups discussion, related pull requests,
Release pull requests, etc.)

# What does this Pull Request do?

A brief description of what the intended result of the PR will be and/or what
problem it solves.

# What's new?
A in-depth description of the changes made by this PR. Technical details and
possible side effects.

* Changes x feature to such that y
* Added x
* Removed y
* Does this change require documentation to be updated?
* Does this change add any new dependencies?
* Does this change require any other modifications to be made to the repository
(ie. Regeneration activity, etc.)?
* Could this change impact execution of existing code?

# How should this be tested?

A description of what steps someone could take to:
* Reproduce the problem you are fixing (if applicable)
* Test that the Pull Request does what is intended.
* Please be as detailed as possible.
* Good testing instructions help get your PR completed faster.

# Additional Notes:
Any additional information that you think would be helpful when reviewing this
PR.

# Interested parties
Tag (@ mention) interested parties or, if unsure, @Islandora-Devops/committers
73 changes: 73 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Welcome!

If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!

We also have an irc channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.

Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.

## Workflows

The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora-CLAW/CLAW/wiki#islandora-claw-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.

### Use cases

If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new) using the [Use Case template](https://github.com/Islandora-CLAW/CLAW/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.

### Documentation

You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora-CLAW/CLAW/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora-CLAW/CLAW/tree/master/docs).

### Request a new feature

To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora-CLAW/CLAW/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.

### Report a bug

To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora-CLAW/CLAW/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.

In order to help us understand and fix the bug it would be great if you could provide us with:

1. The steps to reproduce the bug. This includes information about e.g. the Islandora version you were using along with the versions of stack components.
2. The expected behavior.
3. The actual, incorrect behavior.

Feel free to search the issue queue for existing issues (aka tickets) that already describe the problem; if there is such a ticket please add your information as a comment.

**If you want to provide a pull along with your bug report:**

That is great! In this case please send us a pull request as described in the section _Create a pull request_ below.

### Contribute code

Before you set out to contribute code you will need to have completed a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <mailto:[email protected]>

_If you are interested in contributing code to Islandora but do not know where to begin:_

In this case you should [browse open issues](https://github.com/Islandora-CLAW/CLAW/issues) and check out [use cases](https://github.com/Islandora-CLAW/CLAW/labels/use%20case).

If you are contributing Drupal code, it must adhere to [Drupal Coding Standards](https://www.drupal.org/coding-standards); Travis CI will check for this on pull requests.

Contributions to the Islandora codebase should be sent as GitHub pull requests. See section _Create a pull request_ below for details. If there is any problem with the pull request we can work through it using the commenting features of GitHub.

* For _small patches_, feel free to submit pull requests directly for those patches.
* For _larger code contributions_, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.

1. [Open an issue](https://github.com/Islandora-CLAW/CLAW/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
3. Islandora committers will work with you on the design to make sure you are on the right track.
4. Implement your issue, create a pull request (see below), and iterate from there.

### Create a pull request

Take a look at [Creating a pull request](https://help.github.com/articles/creating-a-pull-request). In a nutshell you need to:

1. [Fork](https://help.github.com/articles/fork-a-repo) this repository to your personal or institutional GitHub account (depending on the CLA you are working under). Be cautious of which branches you work from though (you'll want to base your work off master, or for Drupal modules use the most recent version branch). See [Fork a repo](https://help.github.com/articles/fork-a-repo) for detailed instructions.
2. Commit any changes to your fork.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora-CLAW/CLAW/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora-CLAW/CLAW/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.

You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a-fork) for instructions on how to keep your fork up to date with the latest changes of the upstream (official) repository.

## License Agreements

The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:[email protected]?Subject=Contributor%20License%20Agreement" target="_top">[email protected]</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose. A list of current CLAs is kept [here](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements).
21 changes: 21 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2019 Islandora Foundation

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
111 changes: 111 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Ansible Role: Fedora

An Ansible role that installs Fedora 5 in a Tomcat 8 servlet container on:

* Centos/RHEL 7.x
* Ubuntu Xenial

This role has been tested with Fedora 4.7.* and 5.*.*.

## Role Variables

Available variables are listed below, along with default values:

Version of Fedora to install
```
fcrepo_version: 5.1.0
```

User with permissions to install:
```
fcrepo_user: {{ tomcat8_server_user }}
```

Path to put Fedora data directory (see the notes section below)
```
fcrepo_data_dir: /var/lib/tomcat8/fcrepo4-data
```

A home directory for Fedora
```
fcrepo_home_dir: /opt/fcrepo
```

Where to put the Fedora war file
```
fcrepo_war_path: "{{ tomcat8_home }}/webapps/fcrepo.war"
```

The activemq configuration file template name
```
fcrepo_activemq_template: activemq.xml.j2
```

Where the configurations are stored
```
fcrepo_config_dir: "{{ fcrepo_home_dir }}/configs"
```

Path to put Fedora data directory
```
fcrepo_data_dir: "{{ fcrepo_home_dir }}/fcrepo4-data"
```

Path to put the Fedora data binaries directory
```
fcrepo_binary_directory: "{{ fcrepo_data_dir}}/binaries"
```

Which Fedora object persistence configuration to use
```
fcrepo_persistence: file-simple
```

If 'file-simple persistence' is used (default), where to keep the modeshape repository file
```
fcrepo_object_directory: "{{ fcrepo_data_dir}}/objects"
```

If either 'jdbc-mysql' or 'jdbc-postgres' are used for object persistence, the database settings
```
fcrepo_db_name: fcrepo
fcrepo_db_user: fcrepo
fcrepo_db_password: fcrepo
fcrepo_db_host: "127.0.0.1"
fcrepo_db_port: "3306"
```

Islandora uses the HeaderProvider to pass the users roles into Fedora. To use this you will need to set the below variable.

Header name to acquire roles from
```
fcrepo_auth_header_name:
```

Islandora takes advantage of fcrepo's external content feature. To enable redirects / proxying, you need to configure:

Where the config file gets stored:
```
fcrepo_allowed_external_content_file: "{{ fcrepo_config_dir }}/allowed-external-content.txt"
```

What paths/urls to expose:
```
fcrepo_allowed_external_content:
- http://localhost:8000/
```


## Dependencies

* islandora.tomcat8

## Example Playbook

- hosts: webservers
roles:
- { role: islandora.fcrepo }

## License

MIT
34 changes: 34 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
fcrepo_version: 5.1.0
fcrepo_user: "{{ tomcat8_server_user }}"
fcrepo_data_dir: /var/lib/tomcat8/fcrepo4-data
fcrepo_binary_directory: "{{ fcrepo_data_dir}}/binaries"
fcrepo_war_path: "{{ tomcat8_home }}/webapps/fcrepo.war"
fcrepo_home_dir: /opt/fcrepo
fcrepo_activemq_template: activemq.xml.j2
fcrepo_activemq_broker_url: "tcp://localhost:61616"
fcrepo_config_dir: "{{ fcrepo_home_dir }}/configs"

# For file-simple object persistence.
fcrepo_object_directory: "{{ fcrepo_data_dir}}/objects"

# For production use either "jdbc-mysql" or "jdbc-postgresql"
fcrepo_persistence: file-simple

# Used for mysql or postgres object persistence. Please change the password locally!
fcrepo_db_name: fcrepo
fcrepo_db_user: fcrepo
fcrepo_db_password: fcrepo
fcrepo_db_host: "127.0.0.1"
fcrepo_db_port: "3306"
# user that has database create and user add privs.
fcrepo_db_root_user: "root"
fcrepo_db_root_password: "islandora"

# External content paths can be directories or urls,
# and they MUST end in /
fcrepo_allowed_external_content:
- http://localhost:8000/

fcrepo_allowed_external_content_file: "{{ fcrepo_config_dir }}/allowed-external-content.txt"

fcrepo_auth_header_name:
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
install_date: Mon Jun 29 23:46:27 2020
version: master
22 changes: 22 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
galaxy_info:
author: Islandora
description: Ansible Galaxy role for installing Fedora 4
company: Islandora Foundation
license: MIT
min_ansible_version: 2.0
max_ansible_version: 2.3
platforms:
- name: Ubuntu
versions:
- xenial
- name: EL
versions:
- 7
galaxy_tags:
- fedora
- islandora
- CLAW
- repository
- ldp
- installer
35 changes: 35 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/tasks/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
- name: Copy templated fcrepo config files
template:
src: "{{ item }}"
dest: "{{ fcrepo_home_dir }}/configs/{{ item }}"
owner: "{{ fcrepo_user }}"
group: "{{ fcrepo_user }}"
with_items:
- claw.cnd
- fcrepo-config.xml
notify: restart tomcat8

- name: Copy templated repository.json
template:
src: "{{ fcrepo_persistence }}-repository.json"
dest: "{{ fcrepo_home_dir }}/configs/repository.json"
owner: "{{ fcrepo_user }}"
group: "{{ fcrepo_user }}"
notify: restart tomcat8

- name: Copy fedora activemq configuration
template:
src: "{{ fcrepo_activemq_template }}"
dest: "{{ fcrepo_config_dir }}/activemq.xml"
owner: "{{ fcrepo_user }}"
group: "{{ fcrepo_user }}"
notify: restart tomcat8

# ADDED by dbernstein
- name: Template out allowed external content paths
template:
src: allowed-external-content.txt.j2
dest: "{{ fcrepo_allowed_external_content_file }}"
owner: "{{ fcrepo_user }}"
group: "{{ fcrepo_user }}"
notify: restart tomcat8
23 changes: 23 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/tasks/db-mysql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---

- name: Create Fedora DB (mysql)
mysql_db:
name: "{{ fcrepo_db_name }}"
login_host: "{{ fcrepo_db_host }}"
login_port: "{{ fcrepo_db_port }}"
login_user: "{{ fcrepo_db_root_user }}"
login_password: "{{ fcrepo_db_root_password }}"
state: present
register: fcrepo_db_exists

- name: Create Fedora DB User (mysql)
mysql_user:
name: "{{ fcrepo_db_user }}"
password: "{{ fcrepo_db_password }}"
login_host: "{{ fcrepo_db_host }}"
login_port: "{{ fcrepo_db_port }}"
login_user: "{{ fcrepo_db_root_user }}"
login_password: "{{ fcrepo_db_root_password }}"
priv: "{{fcrepo_db_name}}.*:ALL"
state: present
host: "%"
21 changes: 21 additions & 0 deletions roles/internal/Islandora-Devops.fcrepo/tasks/db-pgsql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---

- name: Create Fedora DB User (pgsql)
postgresql_user:
name: "{{ fcrepo_db_user }}"
password: "{{ fcrepo_db_password }}"
login_host: "{{ fcrepo_db_host }}"
login_port: "{{ fcrepo_db_port }}"
login_user: "{{ fcrepo_db_root_user }}"
login_password: "{{ fcrepo_db_root_password }}"

- name: Create Fedora DB (pgsql)
postgresql_db:
name: "{{ fcrepo_db_name }}"
login_host: "{{ fcrepo_db_host }}"
login_port: "{{ fcrepo_db_port }}"
login_user: "{{ fcrepo_db_root_user }}"
login_password: "{{ fcrepo_db_root_password }}"
state: present
owner: "{{ fcrepo_db_user }}"
register: fcrepo_db_exists
Loading

0 comments on commit 43efd48

Please sign in to comment.