Server
Rocket.Chat
Разверните 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