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® 注册于美国专利和商标局,由卡内基梅隆大学拥有。 本软件包括和/或使用以下受其自身许可证约束的第三方软件:

  1. ansible (https://github.com/ansible/ansible/tree/devel/licenses) 版权所有 © 2019 红帽公司。
  2. molecule (https://github.com/ansible-community/molecule/blob/master/LICENSE) 版权所有 © 2018 红帽公司。
  3. testinfra (https://github.com/philpep/testinfra/blob/master/LICENSE) 版权所有 © 2020 Philippe Pepiot。

DM20-0505

作者信息

该角色由 Matt Heckathorn 于 2019 年创建。

关于项目

A role to configure the rwreceiver service

安装
ansible-galaxy install cmusei.rwreceiver
许可证
other
下载
103
拥有者
At the SEI, we research software engineering, cybersecurity, and AI engineering problems; create innovative technologies; and put solutions into practice.