cmusei.rwreceiver
rwreceiver
这是一个用于配置和管理 rwreceiver 服务的角色。 rwreceiver 是一个守护进程,它接收来自一个或多个 rwsender 进程传送的文件。接收到的文件将存储在一个目的目录中。请参阅 rwreceiver 文档以获取更多信息。
要求
如果使用 TLS 进行连接,必须为发送方和接收方生成并上传匹配的证书。
角色变量
可用变量如下所示,带有默认值(请参阅 defaults/main.yml):
silk_packing_tools_loc: "/usr/local/sbin"
silk 打包工具的文件夹位置。
silk_tls_support: False
是否使用 TLS 进行连接。
rwreceiver_myname: "rwreceiver"
rwreceiver 进程的名称。可以通过不同的名称在单个机器上运行多个 rwreceiver 实例。
rwreceiver_conf_template: "rwreceiver.conf.j2"
rwreceiver_conf_file_loc: "/usr/local/etc"
rwreceiver_conf_file_path: "{{ rwreceiver_conf_file_loc }}/{{ rwreceiver_myname }}.conf"
rwreceiver_init_template: "rwreceiver.j2"
rwreceiver_init_file_path: "/etc/init.d/{{ rwreceiver_myname }}"
使用的模板源及其目标。
变量 | 说明 |
---|---|
rwreceiver_statedirectory: "/usr/local/var/lib/rwreceiver" | rwreceiver 存储其状态的目录 |
rwreceiver_create_directories: "no" | 如果设置为 "yes",定义的目录将在不存在时自动创建 |
rwreceiver_bin_dir: "{{ silk_packing_tools_loc }}" | 包含 "rwreceiver" 程序的目录的完整路径 |
rwreceiver_destination_dir: "{{ rwreceiver_statedirectory }}/destination" | 接收到的文件将放置的目录的完整路径 |
rwreceiver_mode: "client" | 接收方将运行的模式。有效值为 "server" 和 "client"。 |
rwreceiver_id: "receiver-1" | 此接收实例的名称 |
rwreceiver_port: "" | 服务器监听传入连接的端口或 HOST:PORT 配对。仅在运行在服务器模式时需要。如果未提供 HOST,则服务器会监听任何地址。HOST 可以是名称或 IP 地址。如果 HOST 是 IPv6 地址,请用方括号括起来,并将整个值用单引号括起来以防止被 shell 解释。 |
rwreceiver_post_command: "" | 每次接收文件后运行的命令。在命令中,"%s" 将替换为接收到的文件的完整路径,"%I" 将替换为发送文件的 rwsender 的标识符。例:POST_COMMAND='echo received file %s from rwsender %I' |
rwreceiver_freespace_min: "0" | rwreceiver 尝试在包含 $DESTINATION_DIR 的文件系统中保留的可用空间(以字节为单位)。 |
rwreceiver_space_max_percent: "100" | rwreceiver 愿意使用的包含 $DESTINATION_DIR 的文件系统的最大空间百分比。 |
rwreceiver_sender_servers: "" | 如果接收方处于客户端模式,则必须指定 SENDER_SERVERS。行应具有以下格式:<identifier> <host>:<port> 。这些变量是多行值,每行具有一个 rwsender 的值。 |
rwreceiver_sender_clients: "" | 如果接收方处于服务器模式,则必须指定 SENDER_CLIENTS。行应具有以下格式:<identifier> 。这些变量是多行值,每行具有一个 rwsender 的值。 |
rwreceiver_duplicate_dirs: "" | 接收方可以将接收到的文件复制到多个目标目录。请注意,如果复制到以下某个目录失败,将记录错误,但该文件将被视为成功传输。此变量包含多行值,每行列出一个重复的目标目录。行的格式为:<duplicate-dir> 。请注意,每行必须是完整的目录路径。 |
rwreceiver_duplicate_copies: "link" | 在复制文件到重复目标目录时,rwreceiver 默认创建文件的硬链接(如果可能),相互之间以及与目标目录中的文件之间的链接。然而,如果某个进程在一个位置就地修改了一份副本,该修改将影响所有文件。要强制 rwreceiver 创建完整的副本,请将 DUPLICATE_COPIES 从 "link" 更改为 "copy"。 |
rwreceiver_log_type: "syslog" | 使用的日志类型。有效值为 "legacy" 和 "syslog"。 |
rwreceiver_log_level: "info" | 实际记录的最低日志级别。有效值:emerg、alert、crit、err、warning、notice、info、debug |
rwreceiver_log_dir: "{{ rwreceiver_statedirectory }}/log" | 当 LOG_TYPE 为 "legacy" 时,日志文件将被写入的目录的完整路径。 |
rwreceiver_pid_dir: "{{ rwreceiver_log_dir }}" | PID 文件将被写入的目录的完整路径 |
rwreceiver_user: "root" | 此程序运行的用户;仅在 rwreceiver 监听一个受保护的端口时需要 root 权限。 |
rwreceiver_extra_options: "" | 传递给 rwreceiver 的额外选项 |
当使用可选的 GnuTLS 支持并设置 silk_tls_support: True
时,必须指定 CA 文件的完整路径(TLS_CA),以及 或 程序特定的 PKCS#12 文件的完整路径(TLS_PKCS12)或 程序特定的证书(TLS_CERT)和密钥(TLS_KEY)文件的完整路径。如果 PKCS#12 文件受到密码保护,您必须在启动 rwreceiver 之前将 RWRECEIVER_TLS_PASSWORD 环境变量设置为该密码。如果未设置 RWRECEIVER_TLS_PASSWORD,它将被视为空密码;将其设置为空字符串以允许空密码。
TLS 变量 | 说明 |
---|---|
rwreceiver_tls_ca: "" | 根 CA 文件的完整路径,以 PEM 编码 |
rwreceiver_tls_pkcs: "" | 程序特定的 PKCS#12 文件的完整路径,以 DER 编码 |
rwreceiver_tls_key: "" | 程序特定的密钥文件的完整路径,以 PEM 编码 |
rwreceiver_tls_cert: "" | 程序特定的证书文件的完整路径,以 PEM 编码 |
rwreceiver_tls_crl: "" | 证书吊销列表的完整路径,以 PEM 编码。可选。 |
rwreceiver_tls_priority: "" | 密码、密钥交换方法、消息认证码和压缩方法的优先级顺序。可选。默认值为 "NORMAL"。可用参数取决于您的 GnuTLS 版本。 |
rwreceiver_tls_security: "" | 在生成 Diffie-Hellman 参数时使用的安全级别。范围为低、中、高或极高。可选。默认值为 "中"。 |
rwreceiver_tls_debug_level: "" | GnuTLS 库内部使用的调试级别,范围在 0(无调试)和 99 之间(包括 0 和 99)。可选。 |
依赖项
- cmusei.silk
示例剧本
- hosts: server
become: true
vars:
data_root_dir: "/data"
# rwreceiver 设置
silk_tls_support: True
rwreceiver_statedirectory: "{{ data_root_dir }}/rwreceiver"
rwreceiver_destination_dir: "{{ rwreceiver_statedirectory }}/incoming"
rwreceiver_create_directories: "yes"
rwreceiver_mode: "server"
rwreceiver_port: "3737"
rwreceiver_sender_clients: |
sender1
sender2
# rwreceiver tls 设置
tls_ca: "testcert.pem"
tls_key: "client-key.pem"
tls_cert: "client-cert.pem"
rwreceiver_tls_ca: "/etc/pki/tls/{{ tls_ca }}"
rwreceiver_tls_key: "/etc/pki/tls/private/{{ tls_key }}"
rwreceiver_tls_cert: "/etc/pki/tls/{{ tls_cert }}"
rwreceiver_pid_dir: "/var/run"
pre_tasks:
- name: 复制 ssl 证书
copy:
src: "{{ item.f }}"
dest: "{{ item.d }}"
mode: "{{ item.m }}"
owner: "root"
group: "root"
with_items:
- f: "{{ tls_ca }}"
d: "{{ rwreceiver_tls_ca }}"
m: '0644'
- f: "{{ tls_key }}"
d: "{{ rwreceiver_tls_key }}"
m: '0600'
- f: "{{ tls_cert}}"
d: "{{ rwreceiver_tls_cert }}"
m: '0644'
roles:
- role: cmusei.rwreceiver
tags: [ 'rwreceiver' ]
许可证
版权 © 2020 卡内基梅隆大学。 不提供保证。此卡内基梅隆大学和软件工程研究所的材料以“原样”基础提供。卡内基梅隆大学不对任何事宜提供任何形式的保证,包括但不限于适用于用途或商品的适销性、独占性或使用材料所获得的结果的保证。卡内基梅隆大学对剽窃、商标或版权侵犯不提供任何形式的保证。 在 MIT (SEI) 风格许可证下发布,请参阅 license.txt 或联系 permission@sei.cmu.edu 以获取完整条款。 [分发声明 A] 本材料已获得公开发布和无限分发的批准。有关非美国政府使用和分发请参见版权声明。 CERT® 注册于美国专利和商标局,由卡内基梅隆大学拥有。 本软件包括和/或使用以下受其自身许可证约束的第三方软件:
- ansible (https://github.com/ansible/ansible/tree/devel/licenses) 版权所有 © 2019 红帽公司。
- molecule (https://github.com/ansible-community/molecule/blob/master/LICENSE) 版权所有 © 2018 红帽公司。
- testinfra (https://github.com/philpep/testinfra/blob/master/LICENSE) 版权所有 © 2020 Philippe Pepiot。
DM20-0505
作者信息
该角色由 Matt Heckathorn 于 2019 年创建。
ansible-galaxy install cmusei.rwreceiver