galaxyproject.cvmfs
CVMFS
安装和配置 CernVM-FS (CVMFS),特别是针对 Galaxy 服务器。
要求
在企业版 Linux (ansible_os_family == "RedHat"
)上,假设您已为 CVMFS 的依赖项启用了 企业 Linux 的额外软件包 (EPEL)。如果您需要启用 EPEL,可以使用 geerlingguy.repo-epel,它可以轻松帮助您完成这项工作。
角色变量
所有变量都是可选的。但是,如果未设置,角色将基本上不起作用。有关示例,请参见 defaults 和 示例剧本。
Galaxy 客户端
除了下面描述的 cvmfs_role
, Galaxy 的管理员最有可能只需要设置 galaxy_cvmfs_repos_enabled
变量(默认情况下禁用),该变量会自动将 CVMFS 客户端配置为使用 galaxyproject.org 的 CVMFS 仓库。
galaxy_cvmfs_repos_enabled
的值可以是 config-repo
或任何评估为 true
的值(或者为 false
以显式禁用,虽然这也是默认值)。 推荐使用 config-repo
,因为它使角色仅安装必要的最小配置,以挂载 cvmfs-config.galaxyproject.org
CVMFS 仓库,然后利用 CVMFS 的 配置仓库 功能获取其他 galaxyproject.org CVMFS 仓库的配置。这可以确保您始终拥有所有 galaxyproject.org CVMFS 仓库的最新配置。
将 galaxy_cvmfs_repos_enabled
设置为 config-repo
会覆盖 cvmfs_config_repo
的值,因为客户端上只能配置一个默认的配置仓库。
将 galaxy_cvmfs_repos_enabled
设置为其他任何真实值将导致角色创建静态配置,其中每个 galaxyproject.org CVMFS 仓库的完整配置将安装在目标主机上。此选项保留用于向后兼容。
您可以通过在变量名前加上 galaxy_
来覆盖 Galaxy 的 cvmfs_keys
、cvmfs_server_urls
和 cvmfs_repositories
的默认值。有关详细信息,请参见 defaults。
如果未设置 galaxy_cvmfs_repos_enabled
,则可以使用下面描述的一组变量为非 Galaxy 仓库执行完整配置。
客户端或共享客户端/服务器变量
变量 | 类型 | 描述 |
---|---|---|
cvmfs_role |
字符串 | CVMFS 主机类型:client 、stratum0 、stratum1 或 localproxy 。或者,可以将主机放入 cvmfsclients 、cvmfsstratum0servers 、cvmfsstratum1servers 和 cvmfslocalproxies 组中。控制所安装的软件包以及所执行的配置。 |
cvmfs_keys |
字典列表 | 在所有类型的主机上安装的密钥。 |
cvmfs_server_urls |
字典列表 | CVMFS 服务器 URL,/etc/cvmfs/domain.d/<domain>.conf 中的 CVMFS_SERVER_URL 的值。 |
cvmfs_repositories |
字典列表 | CVMFS 仓库配置,/etc/cvmfs/default.local 中的 CVMFS_REPOSITORIES 值,加上 /etc/cvmfs/repositories.d/<repository>/{client,server}.conf 中的其他设置。 |
cvmfs_config_repo |
字典 | CVMFS 配置仓库 的配置,语法请参见 defaults 中的 galaxy_cvmfs_config_repo 的值。 |
cvmfs_quota_limit |
MB 整数 | CVMFS 客户端缓存的大小。默认值为 4000 。 |
cvmfs_upgrade_client |
布尔值 | 如果客户端已经安装,是否将 CVMFS 升级到最新版本。默认值为 false 。 |
cvmfs_preload_install |
布尔值 | 安装 cvmfs_preload 脚本以 预加载 CVMFS 缓存。 |
cvmfs_preload_path |
路径 | cvmfs_preload 应该安装的目录。 |
cvmfs_install_setuid_cvmfs_wipecache |
布尔值 | 在客户端上安装一个 setuid 的二进制文件,允许无权用户执行 cvmfs_config wipecache 。仅适用于 EL(提供源代码)。 |
cvmfs_install_setuid_cvmfs_remount_sync |
布尔值 | 在客户端上安装一个 setuid 的二进制文件,允许无权用户执行 cvmfs_talk remount sync 。仅适用于 EL(提供源代码)。 |
复杂的(字典列表)变量具有以下语法:
cvmfs_keys:
- path: 'repo key.pub 的绝对路径'
owner: '拥有密钥文件的用户(默认:root)'
key: |
-----BEGIN PUBLIC KEY-----
MIIBIjAN...
cvmfs_server_urls:
- domain: 'repo 父域名'
urls:
- '仓库 URL'
cvmfs_repositories:
- repository: '仓库名称'
stratum0: 'stratum 0 主机名'
owner: '拥有仓库的用户(默认:root)'
key_dir: '包含仓库密钥的目录路径(默认:/etc/cvmfs/keys)'
server_options:
- KEY=val
client_options:
- KEY=val
对于 Stratum 0 / 发布管理器,您可以通过 prune_snapshots_time
自动修剪旧快照,该哈希具有对应于 cron 模块选项 的键。如果未设置 prune_snapshots_time
,则不会自动修剪快照。
cvmfs_repositories:
- repository: repo.example.org
owner: user1
prune_snapshots_count: 20
prune_snapshots_time:
special_time: daily
每个仓库的 prune_snapshots_count
选项默认设置为 defaults/main.yml 中的 cvmfs_stratum0_prune_snapshots_count
的值(如果未设置)。
服务器变量
变量 | 类型 | 描述 |
---|---|---|
cvmfs_private_keys |
字典列表 | 在 Stratum 0 主机上安装的密钥。与 cvmfs_keys 分开以便可用性并避免重复。 |
cvmfs_config_apache |
布尔值 | 在 Stratum 0 和 1 服务器上配置 Apache。如果禁用,您必须自己配置。默认值为 true 。 |
cvmfs_manage_firewall |
布尔值 | 尝试配置 firewalld (EL) 或 ufw (Debian) 以允许流量通过被配置的端口。默认值为 false 。 |
cvmfs_squid_conf_src |
路径 | Squid 配置文件的模板路径(用于 Stratum 1 和本地代理服务器)。默认位于角色的 templates/ 目录中。 |
cvmfs_stratum0_http_ports |
整数列表 | 配置 Stratum 0 服务器上的 Apache 监听的端口。默认值为 80 。 |
cvmfs_stratum1_http_ports |
整数列表 | 配置 Stratum 1 服务器上的 Squid 监听的端口。默认值为 80 和 8000 。 |
cvmfs_stratum1_apache_port |
整数 | 配置 Stratum 1 服务器上 Apache 监听的端口。默认值为 8008 。 |
cvmfs_stratum1_cache_mem |
MB 整数 | Squid 用于缓存的内存量。默认值为 128 。 |
cvmfs_stratum1_cache_dir |
字典列表 | |
cvmfs_localproxy_http_ports |
整数列表 | 配置本地代理服务器上的 Squid 监听的端口。默认值为 3128 。 |
cvmfs_upgrade_server |
布尔值 | 如果服务器已经安装,是否将 CVMFS 升级到最新版本。默认值为 false 。 |
cvmfs_srv_device |
路径 | 用于创建文件系统并挂载 CVMFS 数据的块设备。默认未设置。 |
cvmfs_srv_fstype |
字符串 | 在 cvmfs_srv_device 上创建的文件系统。默认值为 ext4 。 |
cvmfs_srv_mount |
路径 | 挂载 CVMFS 数据卷的路径。默认值为 /srv (如果 cvmfs_srv_device 未设置,则会被忽略)。 |
cvmfs_union_fs |
字符串 | Stratum 0 服务器上的新仓库的联合文件系统类型(overlayfs 或 aufs )。 |
cvmfs_numfiles |
整数 | 在 /etc/security/limits.conf 中设置最大打开文件数。与 Stratum 0 服务器上的 CVMFS_NFILES 客户端选项一起使用很有用。 |
依赖
无。
示例剧本
将所有主机配置为 CVMFS 客户端,并为 Galaxy CVMFS 仓库配置:
- name: CVMFS
hosts: all
vars:
cvmfs_role: client
galaxy_cvmfs_repos_enabled: config-repo
roles:
- geerlingguy.repo-epel
- galaxyproject.cvmfs
创建 Galaxy CVMFS 仓库的 Stratum 1(镜像),并配置客户端以优先使用您的 Stratum 1(假设您已将主机配置在 cvmfsclients
和 cvmfsstratum1servers
组中):
- name: CVMFS
hosts: cvmfsclients:cvmfsstratum1servers
vars:
cvmfs_srv_device: /dev/sdb
galaxy_cvmfs_repos_enabled: true
# 覆盖默认值
galaxy_cvmfs_server_urls:
- domain: galaxyproject.org
urls:
- "http://cvmfs.example.org/cvmfs/@fqrn@"
- "http://cvmfs1-psu0.galaxyproject.org/cvmfs/@fqrn@"
- "http://cvmfs1-iu0.galaxyproject.org/cvmfs/@fqrn@"
- "http://cvmfs1-tacc0.galaxyproject.org/cvmfs/@fqrn@"
- "http://cvmfs1-mel0.gvl.org.au/cvmfs/@fqrn@"
- "http://cvmfs1-ufr0.galaxyproject.eu/cvmfs/@fqrn@"
roles:
- galaxyproject.cvmfs
创建自己的 CVMFS 基础设施。第一次运行时不带密钥(在创建仓库时将生成新密钥):
- name: CVMFS
hosts: cvmfsstratum0servers
vars:
cvmfs_numfiles: 4096
cvmfs_server_urls:
- domain: example.org
urls:
- "http://cvmfs0.example.org/cvmfs/@fqrn@"
cvmfs_repositories:
- repository: foo.example.org
stratum0: cvmfs0.example.org
key_dir: /etc/cvmfs/keys/example.org
server_options:
- CVMFS_AUTO_TAG=false
- CVMFS_GARBAGE_COLLECTION=true
- CVMFS_AUTO_GC=false
client_options:
- CVMFS_NFILES=4096
- repository: bar.example.org
stratum0: cvmfs0.example.org
key_dir: /etc/cvmfs/keys/example.org
roles:
- galaxyproject.cvmfs
一旦密钥被创建,将它们添加到 cvmfs_keys
中,并以相同的方式运行,但将 hosts: all
和 cvmfs_keys
定义为:
- name: CVMFS
vars:
cvmfs_keys:
- path: /etc/cvmfs/keys/example.org/foo.example.org.pub
key: |
-----BEGIN PUBLIC KEY-----
MIIBIjAN...
- path: /etc/cvmfs/keys/example.org/bar.example.org.pub
key: |
-----BEGIN PUBLIC KEY-----
MIIBIjAN...
许可证
MIT
作者信息
ansible-galaxy install galaxyproject.cvmfs