osc.open_ondemand
Open OnDemand Ansible 角色
这个 Ansible 角色用于在各种 Linux 发行版上安装和配置 Open OnDemand。
内容目录
版本兼容性
该角色的版本将大致与所安装的 Open OnDemand 版本保持一致。此角色的主版本和次版本将与相应的 Open OnDemand 主版本和次版本兼容。此角色中的补丁版本将与其所安装和配置的 Open OnDemand 版本兼容,但提供错误修复或新功能。
例如,此角色的 1.8.0 版本将与 Open OnDemand 的 1.8.x 版本兼容(当前为 1.8.20)。此角色的 1.8.1 版本仍将安装 Open OnDemand 的 1.8.20 版本,但会为 此角色 提供一些错误修复或新功能。
支持的操作系统
- CentOS
- Debian
- Fedora
- RedHat
- Rocky Linux
- Suse
- Ubuntu 18
- Ubuntu 20
安装特定版本
ondemand_package
变量控制安装的 rpm/dep 包的版本。默认值 ondemand
将安装来自相关库的最新版本,但不会升级现有安装。您可以使用完整的包名来安装特定版本(例如 ondemand-3.0.3
),或者使用 Ansible 的 yum 或 apt 模块所支持的比较运算符。使用 latest
来升级现有安装。
从最新或夜间版本安装
如果您想从我们的 latest
或 nightly
仓库安装软件包,只需更改 rpm_repo_url
配置以下载适当的 RPM。例如 'https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm'
。请检查 yum 以获取此 RPM 的正确版本。
从最新或夜间版本安装软件包时,您可能需要根据项目的状态排除某些软件包。例如,在开发 2.1 时,最新或夜间的 2.0 RPM 需要排除某些软件包。
使用 ondemand_package_excludes
指定在 yum 安装期间要排除的软件包列表。以下示例在安装 2.0.20
时排除所有 2.1
软件包。
ondemand_package: 'ondemand-2.0.20'
ondemand_package_excludes:
- '*-2.1'
标签
当您只想运行特定任务时,可以使用以下标签。
- configure - 将配置 Open OnDemand 及所有应用
- install - 将安装 Open OnDemand 及所有应用
- deps - 安装依赖关系(仅在从源构建时有效)
- build - 从源代码构建(仅在从源构建时有效)
覆盖设置
默认目录 中的配置按应用于哪个文件进行了分类,以便于在从源构建或安装时进行配置或选项设置。
查看这些文件以找到可以覆盖的变量。将所有这些覆盖保存到一个文件中,然后可以通过 [email protected]
调用该文件。
所有默认文件按其适用的内容进行分组。有些文件仅用于文档目的,仅包含注释。它们隐藏以与 Ansible 2.9.X 兼容,并处理 加载空文件的错误。
.apps.yml
- 安装应用的配置(隐藏,因为它是空的)。build.yml
- 从源构建 OnDemand 的配置。install.yml
- 安装 OnDemand 的配置。nginx_stage.yml
- 应用于/etc/ood/config/nginx_stage.yml
的配置。.ondemand.yml
- 应用于/etc/ood/config/ondemand.d/ondemand.yml
的配置(隐藏,因为它是空的)。ood_portal.yml
- 应用于/etc/ood/config/ood_portal.yml
的配置。
使用此角色管理集群和应用
此角色中有几个变量可以自定义和配置 Open OnDemand。
clusters
该配置将其内容写入 /etc/ood/config/clusters.d/<cluster_key>.yml
,对于此字典中的每个集群项,每个字典项都是一个多行字符串。
例如
clusters:
my_cluster: |
---
v2:
metadata:
title: my_cluster
login:
host: my_host
job:
adapter: slurm
bin: /usr/local
batch_connect:
basic:
script_wrapper: "module restore\n%s"
another_cluster: |
---
v2:
metadata:
title: Another Cluster
将生成 /etc/ood/config/clusters.d/my_cluster.yml
和 /etc/ood/config/clusters.d/another_cluster.yml
,内容完全相同。
my_cluster.yml
v2:
metadata:
title: my_cluster
...
another_cluster.yml
v2:
metadata:
title: Another Cluster
更多详细信息可以在 Open OnDemand 文档 和 集群配置架构 v2 中找到。
ood_install_apps
该配置从自定义库安装应用到应用目录(默认或自定义)。它接受类似于 git 模块 的字典。主键是 repo
在 dest
目录下克隆的结果目录名称。
仅需 repo:
是必需的。
ood_install_apps 示例
ood_install_apps:
jupyter:
repo: https://github.com/OSC/bc_example_jupyter.git
dest: "{{ ood_sys_app_dir }}" # 默认值(可选)
version: master # 默认值(可选)
customdir: # 将创建 /var/www/ood/apps/my/dir/customdir
repo: https://github.com/OSC/bc_example_rstudio
dest: /var/www/ood/apps/my/dir
version: v1.0.1
上述示例将
- 克隆
OSC/bc_example_jupyter
到/var/www/ood/apps/sys/jupyter
- 克隆
OSC/bc_example_rstudio
到/var/www/ood/apps/my/dir/customdir
ood_apps
此功能允许您配置 bc_desktop
应用并为其他应用编写环境文件。
在最简单的情况下,当给定 env
键时,它将输出键值对到 env 文件中。
在 bc_desktop
的更复杂情况下,它将其内容写入 <cluster>.yml
文件(其中文件名是内容的 cluster
属性)并将 submit
键的内容写入 submit.yml.erb
文件。
以下示例应该说明这两点。
ood_apps 示例
ood_apps:
bc_desktop:
title: "xfce desktop"
cluster: "my_cluster"
form:
- desktop
- hours
attributes:
hours:
value: 1
desktop: "xfce"
submit: |
---
script:
native:
- "-t"
- "<%= '%02d:00:00' % hours %>"
files:
env:
ood_shell: /bin/bash
上述示例将创建
/etc/ood/config
└── apps
├── bc_desktop
│ ├── my_cluster.yml
│ └── submit
│ └── submit.yml.erb
└── files
└── env
env
生成一个 key=value
文件。注意键的大小写。
$ cat /etc/ood/config/apps/files/env
OOD_SHELL=/bin/bash
submit
创建一个 submit 目录,里面有一个 submit.yml.erb
文件,包含您配置的原始字符串数据。请注意,配置是原始数据,而不是像其他配置那样的 YAML。这是为了支持 Ruby ERB 模板格式,它在 Ansible 中作为 YAML 时不易格式化。
$ cat /etc/ood/config/apps/bc_desktop/submit/submit.yml.erb
---
script:
native:
- "-t"
- "<%= '%02d:00:00' % hours %>"
$ cat /etc/ood/config/apps/bc_desktop/submit/my_cluster.yml
title: "remote desktop"
cluster: my_cluster
attributes:
hours:
value: 1
desktop: "xfce"
Open ID 连接
您可以通过两种方式 配置 Apache 以支持 mod_auth_openidc。
第一种且最简单的方法是使用 ood_auth_openidc
字典生成一个单独的配置文件用于 OIDC 相关的配置。
第二种是让 ood-portal-generator 直接将 OIDC 配置写入 ood-portal.conf
文件,使用命名变量 oidc_*
,例如 oidc_provider_metadata_url
和 oidc_client_id
。
您可以查看 OIDC 默认值 以查看可用变量列表。
如果您使用 Ansible 模板生成 ood-portal.conf
,则需要将额外标志 oidc_settings_samefile
设置为 true。
ood_auth_openidc 示例
ood_auth_openidc:
OIDCSessionMaxDuration: 28888
OIDCClientID: myid
OIDCProviderMetadataURL: https://localhost/
OIDCCryptoPassphrase: mycryptopass
"LDAPTrustedGlobalCert CA_BASE64": /etc/ssl/my/cert/path
default_auth_openidc:
OIDCRedirectURI: "https://{{ servername }}{{ oidc_uri }}"
OIDCSessionInactivityTimeout: 28800
OIDCSessionMaxDuration: 28800
OIDCRemoteUserClaim: preferred_username
OIDCPassClaimsAs: environment
OIDCStripCookies: mod_auth_openidc_session mod_auth_openidc_session_chunks mod_auth_openidc_session_0 mod_auth_openidc_session_1
它将产生一个 auth_openidc.conf
文件,将列出的 key value
与默认值合并。
在 ood_auth_openidc
中定义的值会覆盖任何 default_auth_openidc
值。
有关该模块的更多信息,请参阅 auth_openidc。
安装 Dex
要安装用于 OIDC 的 dex,请将标志 install_ondemand_dex
设置为 true,它将安装该软件包。
贡献
如果您遇到问题或有功能请求,或者修复了一些问题,请告诉我们!欢迎提交 pull request!即使您只是有一个问题,也请随时打开一个工单。
Installs and configures Open OnDemand on various Linux distributions.
ansible-galaxy install osc.open_ondemand