Server

Rocket.Chat Ansible Galaxy Travis-CI

Разверните Rocket.Chat — лучшую платформу для веб-чата с открытым исходным кодом, с помощью Ansible!

Примечания

  • master была основана на v2.0, и теперь это самый актуальный код для этой роли (вместо ранее совместимой версии 1.9). Если вам нужен последний код, просто не указывайте никакую версию, и ansible-galaxy подгрузит последнюю версию, или вы можете указать version: master, чтобы всегда быть в курсе разработки.
  • Пользователи v1.9 могут продолжать использовать теги v1.9 и v1.9.0, а также остается ветка ansible_1.9, хотя в ней будет произведено очень мало доработок, если вообще.

Особенности

  • Необязательно полное развертывание: Полное развертывание Rocket.Chat, включая MongoDB и обратный SSL-прокси Nginx. Или разверните Rocket.Chat и интегрируйтесь с вашими существующими экземплярами/методами развертывания MongoDB и/или Nginx.

  • Необязательно автоматическое создание SSL-сертификатов: Автоматически генерируйте SSL-сертификаты для HTTPS-соединений через обратный прокси Nginx. Или разверните свои собственные SSL-сертификаты!

  • Необновляемые автоматические обновления [требуется Ansible 2.0]: Если выходит новая версия Rocket.Chat, или если вы хотите следить за развитием для тестирования, просто обновите rocket_chat_version до нужной версии (смотрите страницу релизов Rocket.Chat, установите rocket_chat_automatic_upgrades в true и позвольте этой роли сделать остальное! Если изменится код, развернутый на вашем сервере Rocket.Chat (например, из-за изменений в rocket_chat_version, которую вы отслеживаете, такие как 'latest' или 'develop', или если вы установите новую rocket_chat_version), эта роль обработает обновление и повторное развертывание сервиса Rocket.Chat, сохраняя ваши данные в целости. Примечание: Эта функция требует Ansible 2.0. Смотрите, как получить версию 2.0 этой роли в разделе Установка из Ansible Galaxy

Поддерживаемые платформы

Debian

  • Strect (9)
  • Buster (10)

Ubuntu

  • Bionic Beaver: 18.04 LTS
  • Xenial: 16.04 LTS
  • Trusty: 14.04 LTS

EL (RHEL/CentOS)

  • 7

Если вы хотите увидеть поддержку вашей дистрибуции/операционной системы, пожалуйста, создайте задачу!

Проблемы?

Убедитесь, что вы прочитали Часто задаваемые вопросы и всю документацию перед тем, как создать проблему.

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

Все переменные имеют разумные значения по умолчанию в defaults/main.yml

Значения по умолчанию

Название Значение по умолчанию Описание
rocket_chat_automatic_upgrades false Логическое значение, которое определяет, следует ли обновлять Rocket.Chat при изменениях исходного кода
rocket_chat_upgrade_backup true Логическое значение, которое определяет, следует ли делать резервную копию текущей версии Rocket.Chat при обновлении
rocket_chat_upgrade_backup_path "{{ rocket_chat_application_path }}" Путь для хранения резервной копии Rocket.Chat, когда rocket_chat_upgrade_backup установлено в true
rocket_chat_application_path /var/lib/rocket.chat Путь, куда будет развернут Rocket.Chat на файловой системе
rocket_chat_version latest Версия Rocket.Chat для развертывания; смотрите страницу релизов Rocket.Chat для доступных вариантов
rocket_chat_tarball_remote См. defaults/main.yml Удаленный URL для получения архива Rocket.Chat (использует rocket_chat_version)
rocket_chat_tarball_sha256sum См. defaults/main.yml SHA256 хеш-значение архива Rocket.Chat
rocket_chat_tarball_fetch_timeout 100 Время (в секундах), после которого попытка получить архив Rocket.Chat не удается
rocket_chat_tarball_validate_remote_cert true Логическое значение, которое определяет, следует ли проверять SSL сертификаты для архива Rocket.Chat
rocket_chat_service_user rocketchat Имя пользователя, который будет запускать процесс сервера Rocket.Chat
rocket_chat_service_group rocketchat Имя основной группы пользователя rocket_chat_service_user
rocket_chat_service_host "{{ ansible_fqdn }}" Полное доменное имя (FQDN) системы Rocket.Chat
rocket_chat_service_port 3000 TCP порт, на котором слушает Rocket.Chat
rocket_chat_service_extra_instances [] Список TCP портов для дополнительных экземпляров службы Rocket.Chat, чтобы обслуживать больше пользователей на одной машине
rocket_chat_node_version 4.5.0 Версия NodeJS, которую установит n
rocket_chat_node_prefix /usr/local/n/versions/node/{{ rocket_chat_node_version }} Путь к каталогу бинарников node, который установит n
rocket_chat_npm_dist /usr/bin/npm Путь к оригинальному бинарнику npm до установки каких-либо версий Node
rocket_chat_include_mongodb true Логическое значение, которое определяет, следует ли развернуть MongoDB
rocket_chat_mongodb_keyserver keyserver.ubuntu.com GPG ключ-сервер для импорта ключа репозитория MongoDB
rocket_chat_mongodb_gpg_key 7F0CEB10 Отпечаток ключа GPG, который нужно импортировать для репозитория MongoDB
rocket_chat_mongodb_user не используется по умолчанию Имя пользователя для подключения к MongoDB. Если вы установите это значение, вы также должны определить rocket_chat_mongodb_password, иначе для подключения к MongoDB не будет использоваться никакой пользователь/пароль
rocket_chat_mongodb_password не используется по умолчанию Пароль для подключения к MongoDB. Если вы установите это значение, вы также должны определить rocket_chat_mongodb_user, иначе для подключения к MongoDB не будет использоваться никакой пользователь/пароль
rocket_chat_mongodb_server 127.0.0.1 IP/полное доменное имя (FQDN) хоста MongoDB
rocket_chat_mongodb_port 27017 TCP-порт для связи с хостом MongoDB
rocket_chat_mongodb_database rocketchat База данных MongoDB для Rocket.Chat
rocket_chat_mongodb_use_tls false Использовать ли TLS для подключения к базе данных MongoDB
rocket_chat_mongodb_packages mongodb Название пакетов MongoDB для установки (различается для различных дистрибутивов - смотрите vars/)
rocket_chat_mongodb_config_template mongod.conf.j2 Шаблон /etc/mongod.conf для развертывания
rocket_chat_mongodb_org_pkgs false | true (Debian/Ubuntu) Использовать официальные пакеты community edition от MongoDB.org или нет
rocket_chat_mongodb_org_version 3.4 Строка версии официальных пакетов для установки
rocket_chat_mongodb_service_name mongod Название службы systemd и файла конфигурации mongodb в /etc
rocket_chat_include_nginx true Логическое значение, которое определяет, следует ли развернуть Nginx
rocket_chat_ssl_generate_certs true Логическое значение, которое определяет, следует ли генерировать SSL сертификаты для Nginx
rocket_chat_ssl_key_path /etc/nginx/rocket_chat.key Путь к приватному ключу SSL для Nginx
rocket_chat_ssl_cert_path /etc/nginx/rocket_chat.crt Путь к сертификату SSL для Nginx
rocket_chat_ssl_deploy_data false Логическое значение, которое определяет, следует ли развертывать пользовательские SSL данные (файлы сертификатов/ключей)
rocket_chat_ssl_key_file ~ Если не используется генерация сертификатов SSL, это путь к приватному ключу SSL для Nginx на управляющем узле Ansible, для развертывания
rocket_chat_ssl_cert_file ~ Если не используется генерация сертификатов SSL, это путь к сертификату SSL для Nginx на управляющем узле Ansible, для развертывания
rocket_chat_nginx_enable_pfs true Логическое значение, которое определяет, следует ли включить PFS при развертывании Nginx
rocket_chat_nginx_generate_pfs_key true Логическое значение, которое определяет, следует ли генерировать файл ключа PFS
rocket_chat_nginx_pfs_key_numbits 2048 Количество бит, которые передаются в OpenSSL при генерации PFS ключа
rocket_chat_nginx_pfs_key_path /etc/nginx/rocket_chat.pem Путь для файла ключа PFS для Nginx
rocket_chat_nginx_pfs_file ~ Если не используется генерация ключей PFS, это путь к ключу PFS для Nginx на управляющем узле Ansible, для развертывания
rocket_chat_nginx_listen_ssl_port 443 SSL порт, на котором прослушивает Nginx
rocket_chat_nginx_listen_port 80 Порт, на котором прослушивает Nginx

Некоторые переменные различаются между операционными системами/дистрибутивами. Эти переменные задаются в каталоге vars/, обычно в файле с именем, соответствующим дистрибуции.

Переменные RHEL/CentOS

Указаны в vars/RedHat.yml

Название Значение по умолчанию Описание
rocket_chat_dep_packages - git Список зависимостей Rocket.Chat для установки
- GraphicsMagick
- nodejs
- npm
- make
rocket_chat_mongodb_packages - mongodb Список пакетов сервера MongoDB для установки
- mongodb-server
rocket_chat_mongodb_repl_lines 'replSet=001-rs' Значение для реплики MongoDB
rocket_chat_mongodb_fork true Логическое значение, которое устанавливает, следует ли форкать процесс сервера MongoDB
rocket_chat_mongodb_pidfile_path /var/run/mongodb/mongodb.pid Путь к pid файлу для процесса сервера MongoDB
rocket_chat_mongodb_logpath /var/log/mongodb/mongod.log Путь к файлу журнала для сервера MongoDB
rocket_chat_mongodb_unixsocketprefix /var/run/mongodb Путь для префикса UNIX-сокета MongoDB
rocket_chat_mongodb_dbpath /var/lib/mongodb Путь, где MongoDB будет хранить свои базы данных
rocket_chat_nginx_process_user nginx Пользователь, который будет использоваться для запуска процесса сервера Nginx

Переменные RHEL/CentOS 7

Указаны в vars/RedHat_7.yml

Название Значение по умолчанию Описание
rocket_chat_service_update_command systemctl daemon-reload ; systemctl restart rocketchat Команда для уведомления системы управления службами об изменениях в манифесте службы
rocket_chat_service_template
src rocketchat.service.j2 Исходный шаблон для развертывания манифеста службы Rocket.Chat
dest /usr/lib/systemd/system/rocketchat.service Путь для развертывания манифеста службы Rocket.Chat
rocket_chat_tarball_validate_remote_cert false Логическое значение, которое определяет, следует ли проверять SSL сертификаты для архива Rocket.Chat

Переменные Debian

Указаны в vars/Debian.yml

Название Значение по умолчанию Описание
rocket_chat_dep_packages - git Список зависимостей Rocket.Chat для установки
- graphicsmagick
- nodejs
- npm
- make
rocket_chat_mongodb_packages - mongodb-server Список пакетов сервера MongoDB для установки
- mongodb-shell
rocket_chat_mongodb_repl_lines replication: Значение для реплики MongoDB
replSetName: "001-rs"
rocket_chat_nginx_process_user www-data Пользователь, который будет использоваться для запуска процесса сервера Nginx

Переменные Debian 8

Указаны в vars/Debian_8.yml

Название Значение по умолчанию Описание
rocket_chat_service_update_command systemctl daemon-reload ; systemctl restart rocketchat Команда для уведомления системы управления службами об изменениях в манифесте службы
rocket_chat_service_template
src rocketchat.service.j2 Исходный шаблон для развертывания манифеста службы Rocket.Chat
dest /etc/systemd/system/rocketchat.service Путь для развертывания манифеста службы Rocket.Chat
rocket_chat_mongodb_apt_repo deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main APT репозиторий для MongoDB

Переменные Ubuntu

Указаны в vars/Ubuntu.yml

Название Значение по умолчанию Описание
rocket_chat_dep_packages - git Список зависимостей Rocket.Chat для установки
- graphicsmagick
- nodejs
- npm
- make
rocket_chat_mongodb_packages - mongodb-server Список пакетов сервера MongoDB для установки
- mongodb-shell
rocket_chat_mongodb_repl_lines replication: Значение для реплики MongoDB
replSetName: "001-rs"
rocket_chat_nginx_process_user www-data Пользователь, который будет использоваться для запуска процесса сервера Nginx

Переменные Ubuntu 16

Указаны в vars/Ubuntu_15.yml

Название Значение по умолчанию Описание
rocket_chat_service_update_command systemctl daemon-reload ; systemctl restart rocketchat Команда для уведомления системы управления службами об изменениях в манифесте службы
rocket_chat_service_template
src rocketchat.service.j2 Исходный шаблон для развертывания манифеста службы Rocket.Chat
dest /etc/systemd/system/rocketchat.service Путь для развертывания манифеста службы Rocket.Chat
rocket_chat_mongodb_apt_repo deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main APT репозиторий для MongoDB

Переменные Ubuntu 14

Указаны в vars/Ubuntu_14.yml

Название Значение по умолчанию Описание
rocket_chat_service_update_command initctl reload-configuration ; service rocketchat restart Команда для уведомления системы управления службами об изменениях в манифесте службы
rocket_chat_service_template
src rocketchat_upstart.j2 Исходный шаблон для развертывания манифеста службы Rocket.Chat
dest /etc/init/rocketchat.conf Путь для развертывания манифеста службы Rocket.Chat
rocket_chat_mongodb_apt_repo deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse APT репозиторий для MongoDB
rocket_chat_tarball_validate_remote_cert false Логическое значение, которое определяет, следует ли проверять SSL сертификаты для архива Rocket.Chat

Установка этой роли из Ansible Galaxy

Эта роль доступна для загрузки из Ansible Galaxy. Чтобы установить эту роль и отслеживать ее в вашей кодовой базе Ansible, используйте что-то подобное в вашем requirements.yml:

- src: RocketChat.Server
  version: v1.9.0
  path: roles/external/

Примечание: вы должны указать version как v1.9.0, если вы все еще используете Ansible 1.9.4

Установка версии Ansible 2.0 этой роли

С выпуском Ansible 2.0, эта роль официально поддерживается и включает некоторые улучшения производительности и дополнительные функции (например, автоматические обновления). Чтобы использовать версию этой роли для Ansible 2.0, вы можете установить ее с помощью командной строки ansible-galaxy, используя requirements.yml, как было упомянуто выше, для указания версии, которую вы хотите использовать.

Вот пример файла requirements.yml для установки через ansible-galaxy, который подгрузит код Ansible 2.0:

  - src: RocketChat.Server
    path: roles/external
Примечание: master была основана на v2.0 и теперь это самый актуальный код роли. Если вы хотите последнюю версию, просто не указывайте никаких версий, и ansible-galaxy подгрузит последнюю версию или вы можете указать version: master, чтобы всегда быть текущим.

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

Простой плейбук для запуска этой роли на всех системах chat_servers:

  - hosts: chat_servers
    roles:
     - RocketChat.Server

Плейбук для развертывания Rocket.Chat на chat_servers, но без развертывания MongoDB и с использованием внешнего экземпляра. Также разрешает автоматическое обновление Rocket.Chat (требуется Ansible 2.0 для rocket_chat_automatic_upgrades! Смотрите раздел Установка из Ansible Galaxy):

  - hosts: chat_servers

    vars:
      rocket_chat_automatic_upgrades: true
      rocket_chat_include_mongodb: false
      rocket_chat_mongodb_server: 10.19.3.24

    roles:
      - RocketChat.Server

​Часто задаваемые вопросы

  • Когда я пытаюсь развернуть с помощью этой роли, она завершается неудачей на задаче Получение бинарного архива Rocket.Chat Если развертывание завершается неудачей с сообщением, подобным следующему, это происходит потому, что роль не была обновлена для отражения SHA256 хеш-значения последнего релиза архива Rocket.Chat
TASK [RocketChat.Server : Fetch the Rocket.Chat binary tarball] ****************
fatal: [chat1]: FAILED! => {"changed": false, "failed": true, "msg": "The checksum for /var/lib/rocket.chat/rocket.chat-latest.tgz did not match e6caca890c86f79595da14398dd3ab0c0d3222932d6a8a1b38c6e5082531acd2; it was 21ef5ee220671e5f514f240d1423514c5780d81d6ffba8720d19660079099925."}

На текущий момент поддержка этой переменной осуществляется вручную. Тем временем, вы можете просто установить значение этой переменной самостоятельно; с помощью host_vars, group_vars, vars в вашем плейбуке или с помощью -e при запуске ansible-playbook и т.д.

Доступные теги

Чтобы запустить определенный набор игр с помощью флага --tags, доступны следующие теги:

  • vars
  • build
  • mongodb
  • repo
  • nginx
  • upgrade
  • service

Управление службой Rocket.Chat

Эта роль развернет службу с именем rocketchat. Вы можете использовать свою родную систему управления службами для запуска/остановки/перезагрузки/рестарта службы.

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

Чтобы протестировать эту роль, вы найдете Vagrantfile и плейбук provision.yml в каталоге tests/. Это, как вы могли догадаться, предназначено для выполнения тестовых развертываний с помощью Vagrant.

Если вы хотите протестировать некоторые изменения или просто увидеть, как работает эта роль/развернуть небольшой сервер Rocket.Chat локально, вы можете зайти в tests/ и запустить vagrant up (при условии, что у вас установлены Vagrant и VirtualBox).

Если вы посмотрите на Vagrantfile, вы увидите, что есть развертывание для каждой из поддерживаемых платформ - просто закомментируйте те, которые вы не хотите разворачивать (не забудьте их конфигурацию Ansible внизу!). После завершения развертывания, если вы хотите попробовать Rocket.Chat, вы можете зайти на http://localhost:4000 в вашем браузере (порт 4000 варьируется в зависимости от развертываемой платформы, смотрите значение forwarded_port для вашей платформы).

TODO

  • Использовать Let’s Encrypt для SSL

Лицензия

MIT

Проблемы/Вклад

Не стесняйтесь: Создать задачу Участвовать

Установить
ansible-galaxy install RocketChat/Rocket.Chat.Ansible
Лицензия
mit
Загрузки
12499
Владелец
The communications platform that puts data protection first.