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, заключите его в квадратные скобки и заключите всё значение в одиночные кавычки, чтобы предотвратить интерпретацию оболочкой. |
rwreceiver_post_command: "" | Команда для выполнения с каждым файлом после его получения. В команде "%s" будет заменен полным путем к полученному файлу, а "%I" - идентификатором rwsender, который отправил файл. Например: POST_COMMAND='echo received file %s from rwsender %I' |
rwreceiver_freespace_min: "0" | Количество пространства (в байтах), которое rwreceiver попытается оставить свободным в файловой системе, содержащей $DESTINATION_DIR. Эта переменная может быть задана как обычное целое число или как вещественное число с суффиксом K, M, G или T. |
rwreceiver_space_max_percent: "100" | Максимальный процент используемого пространства файловой системы, содержащей $DESTINATION_DIR, который rwreceiver будет готов использовать. |
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" | Пользователь, от имени которого работает эта программа; права root требуются только в том случае, если rwreceiver слушает на привилегированном порту. |
rwreceiver_extra_options: "" | Дополнительные параметры для передачи rwreceiver |
При использовании дополнительной поддержки GnuTLS, установив silk_tls_support: True
, необходимо указать полный путь к CA файлу (TLS_CA), а также ИЛИ полный путь к файлу PKCS#12, специфичному для программы (TLS_PKCS12) ИЛИ полные пути к сертификату (TLS_CERT) и ключевым файлам (TLS_KEY), специфичным для программы. Если файл PKCS#12 защищен паролем, необходимо заранее установить переменную окружения RWRECEIVER_TLS_PASSWORD на пароль перед запуском rwreceiver. Если 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: "" | Уровень безопасности, используемый при создании параметров Диффи-Хеллмана. Один из: low, medium, high или ultra. Опционально. Значение по умолчанию - "medium". |
rwreceiver_tls_debug_level: "" | Уровень отладки, используемый внутри библиотеки GnuTLS, число от 0 (без отладки) до 99 включительно. Опционально. |
Зависимости
- cmusei.silk
Пример Playbook
- 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
# настройки tls rwreceiver
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 года Red Hat, Inc.
- molecule (https://github.com/ansible-community/molecule/blob/master/LICENSE) Авторские права 2018 года Red Hat, Inc.
- testinfra (https://github.com/philpep/testinfra/blob/master/LICENSE) Авторские права 2020 года Philippe Pepiot.
DM20-0505
Информация об авторе
Эта роль была создана в 2019 году Мэттом Хеккаторном.
ansible-galaxy install cmu-sei/ansible-role-rwreceiver