Deployment
Ansible Playbook
The master playbook for automated deployment of Yoda can be found in playbook.yml. It consists of four tier which implements four distinct functional roles:
- Yoda webportal
- iRODS database
- iRODS provider (catalog) server
- iRODS consumer (resource) server
Yoda webportal tier
The Yoda webportal tier provisions the host with the following:
- Apache webserver
- Python
- iRODS iCommands & runtime
- Yoda portal and davrods
iCAT database tier
The iCAT database tier provisions the host with the following:
- PostgreSQL database
- iRODS database plugin
iCAT server
The iCAT server tier provisions the host with the following:
- iRODS iCAT server & runtime
- iRODS microservices
- iRODS resource configuration
- Yoda ruleset
iRODS resource server
The iRODS resource server tier provisions the host with the following:
- iRODS resource server & runtime
- iRODS microservices
- Yoda ruleset
Roles
All the roles can be found in the roles directory using the following content organization:
roles/
common/ # this hierarchy represents a "role"
tasks/ #
main.yml # tasks file can include smaller files if warranted
handlers/ #
main.yml # handlers file
templates/ # files for use with the template resource
ntp.conf.j2 # templates end in .j2
files/ #
bar.txt # files for use with the copy resource
foo.sh # script files for use with the script resource
defaults/ #
main.yml # default variables for this role
meta/ #
main.yml # role dependencies
apache/ # same kind of structure as "common" was above, done for the apache role
certificates/ # ""
composable-resources/ # ""
hostentries/ # ""
irods-database/ # ""
irods-icat/ # ""
irods-icommands/ # ""
irods-microservices/ # ""
irods-resource/ # ""
irods-runtime/ # ""
postgresql/ # ""
python-irodsclient/ # ""
python3/ # ""
yoda-davrods/ # ""
yoda-landingpages/ # ""
yoda-moai/ # ""
yoda-portal/ # ""
yoda-rulesets/ # ""
yoda-test/ # used in the test.yml playbook
yoda-zabbixagent # used in the zabbix.yml playbook
yoda-zabbixdatabase # used in the zabbix.yml playbook
yoda-zabbixyodaitems # used in the zabbix.yml playbook
Environments
The playbook can be used with different environments. Each environment has its own inventory (hosts) with all instances. Each instance is configured in group variables (group_vars). Host specific variables (host_vars) may exist for each host.
environments/
development/
allinone/
hosts # inventory file for allinone instance
group_vars/
allinone.yml # here we assign variables to particular groups
host_vars/
combined # if systems need specific variables, put them here
full/
hosts # inventory file for full instance
group_vars/
full.yml # here we assign variables to particular groups
host_vars/
portal # if systems need specific variables, put them here
database # ""
icat # ""
resource # ""
public # ""
testing/
instance/
hosts # inventory file for testing environment
group_vars/
instance.yml # here we assign variables to particular groups
host_vars/
hostname1 # if systems need specific variables, put them here
hostname2 # ""
acceptance/
instance/
hosts # inventory file for acceptance environment
group_vars/
instance.yml # here we assign variables to particular groups
host_vars/
hostname1 # if systems need specific variables, put them here
hostname2 # ""
production/
instance/
hosts # inventory file for production environment
group_vars/
instance.yml # here we assign variables to particular groups
host_vars/
hostname1 # if systems need specific variables, put them here
hostname2 # ""