znc

Ansible ZNC

Установка и настройка ZNC IRC бouncer.

Включает модуль ClientBuffer для поддержки нескольких отдельных клиентских буферов на аккаунт.

Поскольку эта роль зависит от контейнера Docker, не совсем очевидно, как вызвать двоичное приложение znc для утилит, таких как --makepass. Для справки, вот как запустить команду на создание пароля с машины, на которой установлен Docker:

docker run -it --rm triplepoint/docker-znc:latest znc --makepass

Требования

Нет жестких зависимостей, но на хосте должна быть запущена среда Docker для развертывания этой роли. Роль geerlingguy.docker удовлетворяет этому требованию.

Переменные роли

Для получения дополнительной информации о конфигурации ZNC, смотрите документацию по конфигурации ZNC.

Для получения дополнительной информации о глобальных, пользовательских и сетевых модулях ZNC, смотрите документацию по модулям ZNC.

Установка ZNC

znc_exec_user: znc-admin    # Пользователь, под которым будет работать znc
znc_exec_user_and_group_id: 1066  # UID и GID пользователя
znc_docker_image_version: 0.1.6   # Тегированная версия docker-образа `triplepoint/docker-znc`
znc_install_version: 1.6.5  # Версия znc, установленная с помощью docker-образа. Должна быть в синхронизации.
znc_config_root: /etc/znc   # Корневая папка для структуры конфигурационных файлов znc

Глобальная конфигурация ZNC

znc_max_buffer_size: 100000    # Максимальный размер любого пользовательского буфера. Используется по умолчанию, если не указано значение для конкретного пользователя.
znc_port: 6666                 # На каком порту будет слушать znc?
znc_ipv4: true                 # Должен ли ZNC слушать подключения IPv4?
znc_ipv6: false                # IPv6?
znc_ssl: true                  # Должен ли ZNC принимать подключения по SSL?
znc_ssl_certfile: "{{ znc_config_root }}/znc.pem"   # Если SSL включен, где находится PEM файл? Он генерируется при сборке Ansible.
znc_global_modules:                                 # Какие глобальные модули должны быть установлены для использования всеми пользователями и сетями? Заметьте, что они отдельно от пользовательских и сетевых модулей, определенных ниже.
  - webadmin

Конфигурация определения пользователя ZNC

znc_users:                                # Рекомендуется создать отдельного администратора без сетей для управления сервером ZNC. Здесь у нас только один пользователь для краткости.
  - name: admin
    password:                             # Пароль можно сгенерировать с помощью `znc --makepass`. Это пароль для "admin".
      method: "sha256"
      hash: "481fe84cc70161b20eb0c487d212e8b94cabb45cb9f08b6c51cc2c0131c1b42e"
      salt: "J*;s-Z!gjJ:oJ.kThRZv"
    nick: adminuser
    realname: Администратор ZNC
    admin: true                           # Должен быть хотя бы один администратор, но ваш типичный пользователь, вероятно, не должен быть администратором.
    allow: "*"                            # Опционально
    altnick: adminuser_                   # Опционально
    autoclearchanbuffer: true             # Опционально, должен быть false, если используется clientbuffer
    autoclearquerybuffer: true            # Опционально, должен быть false, если используется clientbuffer
    buffer: 100000                        # Опционально
    chanmodes: "+stn"                     # Опционально
    ident: adminuser_                     # Опционально
    multiclients: false                   # Опционально
    networks:                             # Опционально, хотя без сетей пользователь не сможет подключиться к внешним IRC серверам.
      freenode:
        server: chat.freenode.net
        port: 6697
        ssl: true
        password: ""                      # Опционально, это пароль для входа на удалённый чат-сервер.
        channels:                         # Опциональный список, к этим каналам подключится пользователь на удалённом чат-сервере.
          - "#freenode"                   # Эти строки нужно закомментировать для YAML, если в имени канала есть решётка.
        modules:                          # Опциональный список, это специфические для сети модули.
          - route_replies
          - keepnick
          - clientbuffer                  # Не забудьте отключить `autoclearchanbuffer` и `autoclearquerybuffer`, если это включено для этого пользователя.
    modules:                              # Это специфические для пользователя модули.
      - chansaver
      - controlpanel
      - webadmin

Зависимости

Нет.

Пример плейбука

- hosts: whatever
  roles:
    - triplepoint.znc

Тестирование роли

Эта роль тестируется с помощью molecule, используя pipenv для управления зависимостями и средой тестирования Python.

Настройка вашей среды выполнения

pip install pipenv

Обратите внимание, pip-tools может не работать должным образом с pipenv. У вас не должно быть pip-tools для корректной работы.

После установки pipenv, вы можете создать виртуальное окружение с:

pipenv install --ignore-pipfile

Это создаст виртуальную среду с установленными всеми пакетами зависимостей Python.

Запуск тестов

После настройки окружения, вы можете выполнить molecule с помощью:

pipenv run molecule test

Обновление файла блокировки

Вам не нужно часто это делать, но если вы изменили требования к пакетам Python с помощью команд pipenv install {some_package} или редактируя Pipfile напрямую, или если вы обнаружили, что зависимости сборки устарели, вам может понадобиться обновить файл Pipfile.lock.

pipenv lock

Не забудьте закомментировать обновленный Pipfile.lock, когда процесс завершится.

Лицензия

MIT

О проекте

The ZNC IRC bouncer

Установить
ansible-galaxy install triplepoint/ansible-znc
Лицензия
mit
Загрузки
90
Владелец