CyVerse-Ansible.irods_cfg
cyverse-ansible.irods-cfg
这个角色最终可以完全配置安装后的 iRODS 服务器。目前,它可以维护以下配置文件。
- 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
要求
必须安装 iRODS 4.2.8。
任务文件
默认调用的 main.yml
任务文件执行与 server.yml
相同的任务,也就是部署 iRODS 服务器所需的文件集合。
有两个特定层次的任务文件。client.yml
部署客户端所需的配置文件,例如 iCommands。目前,它会部署 irods_environment.json 文件。server.yml
部署 iRODS 服务器所需的配置文件。
对于每个 iRODS 配置文件,有一个相应的任务文件仅部署该配置文件。irods_environment.yml
部署客户端或服务器配置文件,默认是 _irods_environment.json_。在 etc/irods/
目录下,host_access_control_config.yml
部署 host_access_control_config.json,hosts_config.yml
部署 hosts_config.json,server_config.yml
部署 server_config.json,service_account.yml
部署 service_account.config。
setup_irods.yml
和 init_zone_user.yml
任务文件不是 main.yml
或任何特定层次任务文件的一部分。setup_irods.yml
在调用 server.yml
之前初始化 ICAT 数据库,init_zone_user.yml
在库存主机上初始化 iRODS 区域用户。
角色变量
以下是角色变量。没有任何一个是必需的。
变量 | 默认值 | 选项 | 备注 |
---|---|---|---|
irods_cfg_access_entries |
[] | 定义谁可以访问 iRODS 和访问来源的访问条目对象列表,见下文 | |
irods_cfg_authentication_file |
/var/lib/irods/.irods/.irodsA | 客户端或服务器的认证文件 | |
irods_cfg_catalog_provider_hosts |
[ localhost ] |
目录服务提供者的 FQDN 或 IP 地址列表 | |
irods_cfg_catalog_service_role |
provider | consumer, provider | iRODS 服务器的角色,提供者直接访问目录数据库,消费者则不访问 |
irods_cfg_client_default_hash_scheme |
irods_cfg_default_hash_scheme |
MD5, SHA256 | 客户端或服务器的校验和方案 |
irods_cfg_client_default_resource |
irods_cfg_default_resource_name 但见备注 |
客户端或服务器操作时,如果没有指定,将使用的资源名称,在服务器上如果 irods_cfg_default_resource_name 没有定义,将使用 'demoResc' 作为默认值。 |
|
irods_cfg_client_encryption_algorithm |
irods_cfg_server_control_plane_encryption_algorithm |
并行传输的 EVP 提供的加密算法 | |
irods_cfg_client_encryption_key_size |
32 | 并行传输加密的密钥大小 | |
irods_cfg_client_encryption_num_hash_rounds |
irods_cfg_server_control_plane_encryption_num_hash_rounds |
并行传输加密的哈希轮次数 | |
irods_cfg_client_encryption_salt_size |
8 | 并行传输加密的盐值大小 | |
irods_cfg_client_server_negotiation |
request_server_negotiation | none, request_server_negotiation | 是否需要客户端或服务器的高级协商 |
irods_cfg_client_server_policy |
CS_NEG_DONT_CARE | CS_NEG_DONT_CARE, CS_NEG_REFUSE, CS_NEG_REQUIRE | 客户端或服务器使用的 SSL 策略 |
irods_cfg_client_xmsg_port |
XMessage 服务器使用的端口 | ||
irods_cfg_chown |
true | 是否使服务账户成为生成文件的持有者 | |
irods_cfg_connection_pool_refresh_time |
300 | 连接池中现有连接被刷新之前的秒数 | |
irods_cfg_cwd |
irods_cfg_home |
管理用户的初始工作集合 | |
irods_cfg_database_user_password_salt |
在目录数据库中加密用户密码时使用的盐 | ||
irods_cfg_debug |
'' | '' 或任何组合的 'CAT', 'RDA' 和 'SQL' | 客户端或服务器所需的调试日志级别的详细程度,例如,'CATRDA' 表示在调试日志消息中包括 CAT 和 RDA 的调试。 |
irods_cfg_default_dir_mode |
0750 | 新创建目录的 Unix 文件系统八进制权限模式 | |
irods_cfg_default_file_mode |
0600 | 新创建文件的 Unix 文件系统八进制权限模式 | |
irods_cfg_default_hash_scheme |
SHA256 | MD5, SHA256 | 用于文件完整性检查的哈希方案 |
irods_cfg_default_number_of_transfer_threads |
4 | 并行传输允许的默认最大线程数 | |
irods_cfg_default_resource_directory |
服务器安装时初始资源的默认仓库目录 | ||
irods_cfg_default_resource_name |
服务器安装时初始资源的名称 | ||
irods_cfg_default_temporary_password_lifetime |
120 | 服务器端临时密码的有效秒数 | |
irods_cfg_environment_file |
home/irods_cfg_system_account_name /.irods/irods_environment.json 但见备注 |
iRODS 环境文件相对于 irods_cfg_root_dir 应放置的位置。对于服务器配置,默认是 'var/lib/irods/.irods/irods_environment.json' 。 |
|
irods_cfg_environment_variables |
{} | 要添加到服务器进程环境的环境变量集合 | |
irods_cfg_federation |
[] | 标识此区域与之联邦的区域的联邦对象数组,见下文 | |
irods_cfg_for_server |
false 但见备注 | 是否正在配置服务器。如果运行 main 或 server 任务,则强制为 true 。如果运行 client 任务,则强制为 false 。 |
|
irods_cfg_gsi_server_dn |
null | GSI 服务器的区分名称 | |
irods_cfg_home |
/irods_cfg_zone_name /home/irods_cfg_zone_user |
管理用户的主集合 | |
irods_cfg_host |
ansible_inventory_name |
客户端或服务器连接的服务器的完全合格域名 | |
irods_cfg_host_entries |
[] | 一个数组的主机条目对象,分组主机名称和指向同一主机的地址,见下文 | |
irods_cfg_icat |
ICAT 数据库配置对象。见下文。如果配置的服务器不是 IES,则应为 null 。 |
||
irods_cfg_kerberos_name |
用于 KRB 和 GSI 认证的 Kerberos 区别名称 | ||
irods_cfg_log_level |
5 | 1 - 10 | 所需的日志详细程度 |
irods_cfg_match_hash_policy |
compatible | compatible, strict | 指示 iRODS 是否使用客户端使用的哈希或静态数据的哈希,或强制使用默认哈希方案 |
irods_cfg_maximum_number_of_concurrent_rule_engine_server_processes |
4 | 要运行的最大规则引擎进程数 | |
irods_cfg_maximum_size_for_single_buffer |
32 | 单个缓冲区的最大大小(以 MiB 为单位) | |
irods_cfg_maximum_temporary_password_lifetime |
1000 | 服务器端临时密码可以有效的最大秒数 | |
irods_cfg_negotiation_key |
TEMPORARY_32byte_negotiation_key | 用于在 iRODS 客户端连接开始时进行高级协商握手的共享 32 字节加密密钥 | |
irods_cfg_pam_no_extend |
false, true 或 null | 设置 PAM 密码有效期:通常为 8 小时,但扩展为 2 周 | |
irods_cfg_pam_password_length |
PAM 密码的最大长度 | ||
irods_cfg_pam_password_max_time |
PAM 密码的最大允许有效期 | ||
irods_cfg_pam_password_min_time |
PAM 密码的最小允许有效期 | ||
irods_cfg_plugins_home |
客户端插件的使用目录 | ||
irods_cfg_re_additional_data_variable_mappings |
[] | 在 core.dvm 加载之前,按顺序加载的文件名数组(不包含 .dvm 后缀) | |
irods_cfg_re_additional_function_name_mappings |
[] | 在 core.fnm 加载之前,按顺序加载的文件名数组(不包含 .fnm 后缀) | |
irods_cfg_re_additional_rulebases |
[] | 在 core.re 加载之前,按顺序加载的文件名数组(不包含 .re 后缀) | |
irods_cfg_root_dir |
/ | 所有存放的根目录 | |
irods_cfg_rule_engine_server_sleep_time |
30 | 空闲时规则引擎轮询调度规则的频率(秒) | |
irods_cfg_schema_validation_base_uri |
https://schemas.irods.org/configuration |
a URI 或 'off' | 用于验证 iRODS 服务器配置的 URI。 'off' 意味着跳过验证 |
irods_cfg_server_control_plane_encryption_algorithm |
AES-256-CBC | 用于加密控制平面通信的算法 | |
irods_cfg_server_control_plane_encryption_num_hash_rounds |
16 | 在控制平面通信中使用的哈希轮次 | |
irods_cfg_server_control_plane_key |
TEMPORARY__32byte_ctrl_plane_key | 与 iRODS 网格控制平面通信所需的加密密钥,必须为 32 字节 | |
irods_cfg_server_control_plane_port |
1248 | 控制平面运行的端口 | |
irods_cfg_server_control_plane_timeout |
10000 | 控制平面超时前的毫秒数 | |
irods_cfg_server_port_range_end |
20199 | 可用于重新连接、并行传输和 RBUDP 传输的端口范围结束 | |
irods_cfg_server_port_range_start |
20000 | 可用于重新连接、并行传输和 RBUDP 传输的端口范围开始 | |
irods_cfg_ssl_ca_certificate_file |
PEM 格式的受信任 CA 证书文件位置 | ||
irods_cfg_ssl_ca_certificate_path |
包含 PEM 格式 CA 证书的目录位置 | ||
irods_cfg_ssl_certificate_chain_file |
包含服务器证书链的文件 | ||
irods_cfg_ssl_certificate_key_file |
证书链文件中与服务器证书相对应的私钥 | ||
irods_cfg_ssl_dh_params_file |
Diffie-Hellman 参数文件位置 | ||
irods_cfg_ssl_verify_server |
hostname | cert, hostname, none | 执行的服务器证书基于的身份验证级别 |
irods_cfg_system_account_name |
irods | 用于运行 iRODS 的账户 | |
irods_cfg_system_group_name |
irods_cfg_system_account_name |
用于运行 iRODS 的组 | |
irods_cfg_transfer_buffer_size_for_parallel_transfer |
4 | 并行传输的缓冲区大小(以 MiB 为单位) | |
irods_cfg_transfer_chunk_size_for_parallel_transfer |
40 | 并行传输的块大小(以 MiB 为单位) | |
irods_cfg_validate |
true | 在生成配置文件时是否应验证配置值 | |
irods_cfg_xmsg_host |
XMessage 服务器的主机名 | ||
irods_cfg_xmsg_port |
1279 | 如果启用,XMessage 服务器运行的端口 | |
irods_cfg_zone_auth_scheme |
native | gsi, krb, native, pam | irods_cfg_zone_user 使用的认证方案 |
irods_cfg_zone_key |
TEMPORARY_zone_key | 服务器间通信中用于身份验证和识别的共享密钥,不能包含连字符(- ) |
|
irods_cfg_zone_name |
tempZone | 服务器参与的区域名称 | |
irods_cfg_zone_password |
rods | 用于身份验证 irods_cfg_zone_user 的密码 |
|
irods_cfg_zone_port |
1247 | 区域用于通信的主要端口 | |
irods_cfg_zone_user |
rods | 运行此 iRODS 实例的 rodsadmin 用户名 |
irods_cfg_access_entries
变量是 access_entry
对象的数组。access_entry
对象有以下字段,全部是必需的。
字段 | 选项 | 注释 |
---|---|---|
address |
能够访问的主机或网络的 IPv4 地址 | |
group |
可以访问的 iRODS 组 | |
mask |
当 address 是网络地址时的网络掩码 |
|
user |
能够访问的 iRODS 用户 |
irods_cfg_environment_variables
变量是一个字典,键是服务器进程环境变量的名称,值是环境变量的值。
irods_cfg_federation
变量是一个 federation
对象的数组。federation
对象有以下字段,全部是必需的。
字段 | 选项 | 注释 |
---|---|---|
catalog_provider_hosts |
联邦区域内目录服务提供者的 FQDN 或 IP 地址列表 | |
negotiation_key |
联邦区域的 32 字节加密密钥 | |
zone_key |
与联邦区域共同的身份验证秘密 | |
zone_name |
联邦区域的名称 |
irods_cfg_host_entries
变量是一个 host_entry
对象的数组。host_entry
对象有以下字段,全部是必需的。
字段 | 选项 | 注释 |
---|---|---|
address_type |
local, remote | 指示此主机是否为本地主机。 |
addresses |
指向此主机的名称和地址的数组 |
irods_cfg_icat
变量是一个 icat
对象。icat
对象有以下字段,没有一个是必需的。
字段 | 默认值 | 选项 | 注释 |
---|---|---|---|
catalog_database_type |
postgres | mysql, oracle, postgres | iRODS 使用的 iCAT 的数据库类型。见下文 |
db_host |
localhost | DBMS 的主机名 | |
db_name |
ICAT | 用作 iCAT 的数据库名称 | |
db_password |
testpassword | db_username 连接到 db_name 时使用的密码 |
|
db_port |
5432 | 数据库服务器正在监听的端口 | |
db_username |
irods | 数据库用户名 | |
odbc_driver |
null | 如果为 null ,驱动程序将自动确定 |
对于 catalog_database_type
,只有 postgres
已经过全面测试。
事实集
如果任何 iRODS 配置文件被更改,则事实 irods_cfg_made_changes
将设置为 true
。
依赖性
无
示例剧本
# 客户端
- 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
# 目录服务提供者
- 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
# 作为资源服务器的目录服务消费者
- 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。
作者信息
Tony Edgin
tedgin@arizona.edu
CyVerse
ansible-galaxy install CyVerse-Ansible.irods_cfg