irods_cfg
cyverse-ansible.irods-cfg
This role will eventually be able to be used to completely configure an iRODS server once iRODS is installed. At the moment, it can maintain the following configuration files.
- irods_environment.json
- etc/irods/host_access_control_config.json
- etc/irods/hosts_config.json
- etc/irods/server_config.json
- etc/irods/service_account.config
Requirements
iRODS 4.2.8 is installed.
Tasks Files
The main.yml
tasks file that is called by default performs the same tasks as server.yml
, i.e., it deploys the set of files required by an iRODS server.
There are two tier-specific tasks files. client.yml
deploys the configuration files required by a client, e.g., the iCommands. Currently, it deploys the irods_environment.json file. server.yml
deploys the configuration files required by an iRODS server.
For each iRODS configuration file there is a corresponding tasks file that deploys only that configuration file. irods_environment.yml
deploys the client or clerver configuration file, irods_environment.json by default. In the etc/irods/
directory, host_access_control_config.yml
deploys host_access_control_config.json, hosts_config.yml
deploys hosts_config.json, server_config.yml
deploys server_config.json, and service_account.yml
deploys service_account.config.
The setup_irods.yml
and init_zone_user.yml
tasks files are not part of main.yml
or either of the tier-specific tasks files. setup_irods.yml
initializes the ICAT DB before calling server.yml
, and init_zone_user.yml
initializes the iRODS zone user on the inventory host.
Role Variables
Here are the role variables. None of them are required.
Variable | Default | Choices | Comment |
---|---|---|---|
irods_cfg_access_entries |
[] | A list of access entry objects defining who can access iRODS and from where, see below | |
irods_cfg_authentication_file |
/var/lib/irods/.irods/.irodsA | the authentication file for the client or clerver | |
irods_cfg_catalog_provider_hosts |
[ localhost ] |
a list of FQDNs or IP addresses of the catalog service providers | |
irods_cfg_catalog_service_role |
provider | consumer, provider | the role of the iRODS server, a provider directly accesses the catalog database, a consumer does not |
irods_cfg_client_default_hash_scheme |
irods_cfg_default_hash_scheme |
MD5, SHA256 | checksum scheme for the client or clerver |
irods_cfg_client_default_resource |
irods_cfg_default_resource_name but see comment |
the name of the resource used for client or clerver operations if one is not specified, on the clerver, if irods_cfg_default_resource_name is undefined, 'demoResc' will be used as the default. |
|
irods_cfg_client_encryption_algorithm |
irods_cfg_server_control_plane_encryption_algorithm |
EVP-supplied encryption algorithm for parallel transfer | |
irods_cfg_client_encryption_key_size |
32 | key size for parallel transport encryption | |
irods_cfg_client_encryption_num_hash_rounds |
irods_cfg_server_control_plane_encryption_num_hash_rounds |
number of hash rounds for parallel transfer encryption | |
irods_cfg_client_encryption_salt_size |
8 | salt size for parallel transfer encryption | |
irods_cfg_client_server_negotiation |
request_server_negotiation | none, request_server_negotiation | whether or not advanced negotiation is desired for the client or clerver |
irods_cfg_client_server_policy |
CS_NEG_DONT_CARE | CS_NEG_DONT_CARE, CS_NEG_REFUSE, CS_NEG_REQUIRE | which SSL policy for the client or clerver to use |
irods_cfg_client_xmsg_port |
the port used by the XMessage server | ||
irods_cfg_chown |
true | whether or not to make the service account the owner of the generate files | |
irods_cfg_connection_pool_refresh_time |
300 | the number of seconds after which an existing connection in a connection pool is refreshed | |
irods_cfg_cwd |
irods_cfg_home |
the initial working collection for the admin user | |
irods_cfg_database_user_password_salt |
the salt used when obfuscating user passwords stored in the catalog database | ||
irods_cfg_debug |
'' | '' or any combination of 'CAT', 'RDA', and 'SQL' | desired verbosity of the debug logging level for client or clerver. e.g., 'CATRDA' means include CAT and RDA debugging in debug log messages |
irods_cfg_default_dir_mode |
0750 | the Unix file system octal permission mode for a newly created directory | |
irods_cfg_default_file_mode |
0600 | the Unix file system octal permission mode for a newly created file | |
irods_cfg_default_hash_scheme |
SHA256 | MD5, SHA256 | the hash scheme used for file integrity checking |
irods_cfg_default_number_of_transfer_threads |
4 | the default maximum number of threads allowed for parallel transfer | |
irods_cfg_default_resource_directory |
the default Vault directory for the initial resource on server installation | ||
irods_cfg_default_resource_name |
the name of the initial resource on server installation | ||
irods_cfg_default_temporary_password_lifetime |
120 | the default number of seconds a server-side temporary password is valid | |
irods_cfg_environment_file |
home/irods_cfg_system_account_name /.irods/irods_environment.json but see comment |
the location where the iRODS environment file should be placed relative to irods_cfg_root_dir . For server configuration, the default is 'var/lib/irods/.irods/irods_environment.json' . |
|
irods_cfg_environment_variables |
{} | a set of environment variables to add to the server process environment | |
irods_cfg_federation |
[] | an array of federation objects identifying the zones this zone federates with, see below | |
irods_cfg_for_server |
false but see comment | whether or not a server is being configured. If the main or server tasks are run, this is forced to true . If the client tasks are run, this is forced to be false . |
|
irods_cfg_gsi_server_dn |
null | the distinguished name of the GSI server | |
irods_cfg_home |
/irods_cfg_zone_name /home/irods_cfg_zone_user |
the home collection of the admin user | |
irods_cfg_host |
ansible_inventory_name |
the fully qualified domain name of the server the client or clerver connects to | |
irods_cfg_host_entries |
[] | an array of host entry objects grouping host names and addresses referring to the same host, see below | |
irods_cfg_icat |
The ICAT DB configuration object. See below. If the server being configured isn't an IES, this should be null . |
||
irods_cfg_kerberos_name |
Kerberos distinguished name for KRB and GSI authentication | ||
irods_cfg_log_level |
5 | 1 - 10 | desired verbosity of logging |
irods_cfg_match_hash_policy |
compatible | compatible, strict | indicates to iRODS whether to use the hash used by the client or the data at rest, or to force the use of the default hash scheme |
irods_cfg_maximum_number_of_concurrent_rule_engine_server_processes |
4 | the maximum number of rule engine processes to run | |
irods_cfg_maximum_size_for_single_buffer |
32 | the maximum size in mebibytes for a single buffer | |
irods_cfg_maximum_temporary_password_lifetime |
1000 | the maximum number of seconds a server-side temporary password can be valid | |
irods_cfg_negotiation_key |
TEMPORARY_32byte_negotiation_key | a 32-byte encryption key shared by the zone for use in the advanced negotiation handshake at the beginning of an iRODS client connection | |
irods_cfg_pam_no_extend |
false, true, or null | set PAM password lifetime: normally 8 hours, but extended is 2 weeks | |
irods_cfg_pam_password_length |
maximum length of a PAM password | ||
irods_cfg_pam_password_max_time |
maximum allowed PAM password lifetime | ||
irods_cfg_pam_password_min_time |
minimum allowed PAM password lifetime | ||
irods_cfg_plugins_home |
directory to use for the client side plugins | ||
irods_cfg_re_additional_data_variable_mappings |
[] | an array of file names (without the .dvm extension) that will be loaded in order before core.dvm is loaded | |
irods_cfg_re_additional_function_name_mappings |
[] | an array of file names (without the .fnm extension) that will be loaded in order before core.fnm is loaded | |
irods_cfg_re_additional_rulebases |
[] | an array of file names (without the .re extension) that will be loaded in order before core.re is loaded | |
irods_cfg_root_dir |
/ | The root directory where all depositions are relative to | |
irods_cfg_rule_engine_server_sleep_time |
30 | how frequently the rule engine polls for scheduled rules when idle in seconds | |
irods_cfg_schema_validation_base_uri |
https://schemas.irods.org/configuration |
a URI or 'off' | the URI against which the iRODS server configuration is validated. 'off' means to skip validation |
irods_cfg_server_control_plane_encryption_algorithm |
AES-256-CBC | the algorithm used to encrypt control plane communications | |
irods_cfg_server_control_plane_encryption_num_hash_rounds |
16 | the number of hash rounds used in the control plane communications | |
irods_cfg_server_control_plane_key |
TEMPORARY__32byte_ctrl_plane_key | the the encryption key required for communicating with the iRODS grid control plane, must be 32 bytes | |
irods_cfg_server_control_plane_port |
1248 | the port on which the control plane operates | |
irods_cfg_server_control_plane_timeout |
10000 | the number of milliseconds before control plane times out | |
irods_cfg_server_port_range_end |
20199 | the ending of the port range available for re-connections, parallel transfer and RBUDP transfer | |
irods_cfg_server_port_range_start |
20000 | the beginning of the port range available for re-connections, parallel transfer and RBUDP transfer | |
irods_cfg_ssl_ca_certificate_file |
location of a file of trusted CA certificates in PEM format | ||
irods_cfg_ssl_ca_certificate_path |
location of a directory containing CA certificates in PEM format | ||
irods_cfg_ssl_certificate_chain_file |
the file containing the server's certificate chain | ||
irods_cfg_ssl_certificate_key_file |
private key corresponding to the server's certificate in the certificate chain file | ||
irods_cfg_ssl_dh_params_file |
the Diffie-Hellman parameter file location | ||
irods_cfg_ssl_verify_server |
hostname | cert, hostname, none | level of server certificate based authentication to perform |
irods_cfg_system_account_name |
irods | the account used to run iRODS | |
irods_cfg_system_group_name |
irods_cfg_system_account_name |
the group used to run iRODS | |
irods_cfg_transfer_buffer_size_for_parallel_transfer |
4 | the buffer size in mebibytes for parallel transfer | |
irods_cfg_transfer_chunk_size_for_parallel_transfer |
40 | the chunk size in mebibytes for parallel transfer | |
irods_cfg_validate |
true | whether or not the configuration values should be validated when the configuration files are generated | |
irods_cfg_xmsg_host |
the host name of the XMessage server | ||
irods_cfg_xmsg_port |
1279 | the port on which the XMessage server operates should it be enabled | |
irods_cfg_zone_auth_scheme |
native | gsi, krb, native, pam | the authentication scheme used by irods_cfg_zone_user |
irods_cfg_zone_key |
TEMPORARY_zone_key | the shared secret used for authentication and identification on server-to-server communication, it cannot contain hyphens (- ) |
|
irods_cfg_zone_name |
tempZone | the name of the in which the server participates | |
irods_cfg_zone_password |
rods | the password used to authenticate irods_cfg_zone_user . |
|
irods_cfg_zone_port |
1247 | the main port used by the zone for communication | |
irods_cfg_zone_user |
rods | the name of the rodsadmin user running this iRODS instance |
The irods_cfg_access_entries
variables is an array of access_entry
objects. An access_entry
object has the following fields, all of them required.
Field | Choices | Comments |
---|---|---|
address |
the IPv4 address of a host or network that is able to access | |
group |
the iRODS group able to access | |
mask |
the network mask when address is a network address |
|
user |
the iRODS user able to access |
The irods_cfg_environment_variables
variable is a dictionary where the key is the name of a server process environment variable, and the value is the value of the environment variable.
The irods_cfg_federation
variable is an array of federation
objects. A federation
object has the following fields, all of them required.
Field | Choices | Comments |
---|---|---|
catalog_provider_hosts |
a list of FQDNs or IP addresses of the catalog service providers in the federated zone | |
negotiation_key |
the 32-byte encryption key of the federated zone | |
zone_key |
the shared authentication secret with the federated zone | |
zone_name |
the name of the federated zone |
The irods_cfg_host_entries
variable is an array of host_entry
objects. A host_entry
object has the following fields, all of them required.
Field | Choices | Comments |
---|---|---|
address_type |
local, remote | indicates if this host is localhost. |
addresses |
an array of names and addresses referring to this host |
The irods_cfg_icat
variable is an icat
object. An icat
object has the following fields, none of them are required.
Field | Default | Choices | Comments |
---|---|---|---|
catalog_database_type |
postgres | mysql, oracle, postgres | the type of database iRODS is using for the iCAT. see below |
db_host |
localhost | the hostname of the DBMS | |
db_name |
ICAT | the name of the database used as the iCAT | |
db_password |
testpassword | the password used by db_username to connect to db_name |
|
db_port |
5432 | the port on which the database server is listening | |
db_username |
irods | the database user name | |
odbc_driver |
null | The ODBC driver to user, if null the driver will be automatically determined |
For catalog_database_type
, only postgres
has been fully tested.
Facts Set
If any of the iRODS configuration files are changed, the fact irods_cfg_made_changes
will be set to true
.
Dependencies
None
Example Playbooks
# Client
- hosts: webdav
vars:
irods_cfg_environment_file: etc/httpd/irods/irods_environment.json
irods_cfg_authentication_file: /etc/httpd/irods/.irodsA
irods_cfg_chown: false
irods_cfg_host: ares.iplantcollaborative.org
irods_cfg_zone_name: iplant
irods_cfg_zone_user: davrods_svc
irods_cfg_home: /iplant
tasks:
- include_role:
name: cyverse-ansible.irods-cfg
tasks_from: "{{ item }}"
with_items:
- client.yml
- init_zone_user.yml
# Catalog Service Provider
- hosts: irods_catalog_provider
roles:
- role: cyverse-ansible.irods-cfg
vars:
irods_cfg_default_hash_scheme: MD5
irods_cfg_default_number_of_transfer_threads: 16
irods_cfg_default_resource_name: CyVerseRes
irods_cfg_environment_variables:
amqp_host: amqp.cyverse.org
irods_cfg_federation:
- icat_host: irods.tacc.utexas.edu
negotiation_key: "Don't you wish! !"
zone_key: crack me
zone_name: tacc
irods_cfg_host_entries:
- address_type: local
addresses:
- ares.iplantcollaborative.org
- data.cyverse.org
- data.iplantcollaborative.org
irods_cfg_icat:
db_host: irods-db.cyverse.org
db_password: secret
db_username: icatuser
irods_cfg_negotiation_key: Just guess it .
irods_cfg_re_additional_rulebases:
- ipc_custom
irods_cfg_server_control_plane_key: "I'm not telling ."
irods_cfg_server_port_range_end: 20399
irods_cfg_transfer_buffer_size_for_parallel_transfer: 32
irods_cfg_zone_key: secret
irods_cfg_zone_name: iplant
irods_cfg_zone_user: cyverse_admin
# Catalog Service Consumer Acting as a Resource Server
- hosts: irods_resource_server
roles:
- role: cyverse-ansible.irods-cfg
vars:
irods_cfg_default_hash_scheme: MD5
irods_cfg_default_number_of_transfer_threads: 16
irods_cfg_default_resource_directory: /f2/haboob
irods_cfg_default_resource_name: haboobRes
irods_cfg_negotiation_key: Just guess it .
irods_cfg_re_additional_rulebases:
- ipc_custom
irods_cfg_server_control_plane_key: "I'm not telling ."
irods_cfg_server_port_range_end: 20399
irods_cfg_transfer_buffer_size_for_parallel_transfer: 32
irods_cfg_zone_key: secret
irods_cfg_zone_name: iplant
irods_cfg_zone_user: has_admin
License
See license.
Author Information
Tony Edgin tedgin@arizona.edu CyVerse
ansible-galaxy install CyVerse-Ansible/ansible-irods-cfg