RocketChat.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およびNginxリバースSSLプロキシを含めて完全に展開します。 または、既存のMongoDBおよび/Nginxインスタンス/展開方法と統合してRocket.Chatを展開します。
オプションの自動SSL証明書生成: Nginxリバースプロキシを介して、HTTPS接続のSSL証明書を自動的に生成します。 または、自分のSSL証明書を展開してください!
オプションの自動アップグレード[Ansible 2.0が必要]: 新しいバージョンのRocket.Chatがリリースされた場合や、テスト目的で開発を追跡したい場合は、展開したいリリースに
rocket_chat_versionを更新して、rocket_chat_automatic_upgradesをtrueに設定し、この役割に残りの処理をさせてください。 もし、あなたがフォローしている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
あなたのディストリビューション/オペレーティングシステムをサポートしてほしい場合は、問題を報告してください!
問題が発生しましたか?
問題を報告する前に、FAQやすべてのドキュメントを読んでいることを確認してください。
役割の変数
すべての変数は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_upgrade_backupがtrueの場合のRocket.Chatのバックアップを保存するパス |
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を参照 |
Rocket.Chatのtarballを取得するためのリモートURL(rocket_chat_versionを使用) |
rocket_chat_tarball_sha256sum |
defaults/main.ymlを参照 |
取得中のRocket.Chat tarballのSHA256ハッシュ |
rocket_chat_tarball_fetch_timeout |
100 | Rocket.Chat tarballの取得が失敗する前のタイムアウト時間(秒) |
rocket_chat_tarball_validate_remote_cert |
true | Rocket.Chat tarballのリモートSSL証明書を検証するかどうかを決定するブール値 |
rocket_chat_service_user |
rocketchat |
Rocket.Chatサーバープロセスを実行するユーザー名 |
rocket_chat_service_group |
rocketchat |
rocket_chat_service_userユーザーのプライマリグループ名 |
rocket_chat_service_host |
"{{ ansible_fqdn }}" |
Rocket.ChatシステムのFQDN |
rocket_chat_service_port |
3000 | Rocket.ChatがリッスンするTCPポート |
rocket_chat_service_extra_instances |
[] |
1台のマシンでより多くのユーザーを扱うための追加のrocketchatサービスインスタンスのTCPポート番号のリスト |
rocket_chat_node_version |
4.5.0 |
nが理解するNodeJSのインストールバージョン |
rocket_chat_node_prefix |
/usr/local/n/versions/node/{{ rocket_chat_node_version }} |
nがインストールするnodeバイナリディレクトリのパス |
rocket_chat_npm_dist |
/usr/bin/npm |
nがNodeのバージョンをインストールする前の元のnpmバイナリへのパス |
rocket_chat_include_mongodb |
true | MongoDBを展開するかどうかを決定するブール値 |
rocket_chat_mongodb_keyserver |
keyserver.ubuntu.com | MongoDBリポジトリキーをインポートする際に使用するGPGキーサーバ |
rocket_chat_mongodb_gpg_key |
7F0CEB10 |
MongoDBリポジトリのインポートに必要なGPGキーの指紋 |
rocket_chat_mongodb_user |
デフォルトでは使用しない | MongoDBに接続する際に使うユーザー名。設定した場合は、rocket_chat_mongodb_passwordも定義する必要があります。さもなくば、接続時にユーザー名/パスワードは使用されません。 |
rocket_chat_mongodb_password |
デフォルトでは使用しない | MongoDBに接続する際に使うパスワード。設定した場合は、rocket_chat_mongodb_userも定義する必要があります。さもなくば、接続時にユーザー名/パスワードは使用されません。 |
rocket_chat_mongodb_server |
127.0.0.1 | MongoDBホストのIP/FQDN |
rocket_chat_mongodb_port |
27017 | MongoDBホストにアクセスするためのTCPポート |
rocket_chat_mongodb_database |
rocketchat | Rocket.Chat用に使用するMongoDBデータベース |
rocket_chat_mongodb_use_tls |
false | MongoDB DBに接続する際にTLSを使用するかどうか |
rocket_chat_mongodb_packages |
mongodb |
インストールするMongoDBパッケージ名(異なるディストリビューションで異なる) |
rocket_chat_mongodb_config_template |
mongod.conf.j2 |
展開する/etc/mongod.confのテンプレート |
rocket_chat_mongodb_org_pkgs |
false | true (Debian/Ubuntu) | 公式のMongoDB.orgコミュニティエディションパッケージを使用するかどうか |
rocket_chat_mongodb_org_version |
3.4 | インストールする公式パッケージのバージョン |
rocket_chat_mongodb_service_name |
mongod |
/etcのmongodb設定ファイルのsystemdサービスユニット名 |
rocket_chat_include_nginx |
true | Nginxを展開するかどうかを決定するブール値 |
rocket_chat_ssl_generate_certs |
true | NginxのSSL証明書を生成するかどうかを決定するブール値 |
rocket_chat_ssl_key_path |
/etc/nginx/rocket_chat.key |
Nginx SSLプライベートキーの宛先パス |
rocket_chat_ssl_cert_path |
/etc/nginx/rocket_chat.crt |
Nginx SSL証明書の宛先パス |
rocket_chat_ssl_deploy_data |
false | カスタムSSLデータ(証明書/キーファイル)を展開するかどうかを決定するブール値 |
rocket_chat_ssl_key_file |
~ |
SSL証明書生成を使用しない場合、Ansibleコントロールノード上のNginx SSLプライベートキーへのパス |
rocket_chat_ssl_cert_file |
~ |
SSL証明書生成を使用しない場合、Ansibleコントロールノード上のNginx SSL証明書へのパス |
rocket_chat_nginx_enable_pfs |
true | Nginx展開時にPFSを有効にするかどうかを決定するブール値 |
rocket_chat_nginx_generate_pfs_key |
true | PFSキーを生成するかどうかを決定するブール値 |
rocket_chat_nginx_pfs_key_numbits |
2048 | PFSキーを生成する際にOpenSSLに渡すビット数 |
rocket_chat_nginx_pfs_key_path |
/etc/nginx/rocket_chat.pem |
Nginx PFSキーの宛先パス |
rocket_chat_nginx_pfs_file |
~ |
PFSキー生成を使用しない場合、Ansibleコントロールノード上のNginx PFSキーへのパス |
rocket_chat_nginx_listen_ssl_port |
443 |
NginxがリッスンするSSLポート |
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 |
MongoDBサーバープロセスのpidファイルのパス |
rocket_chat_mongodb_logpath |
/var/log/mongodb/mongod.log |
MongoDBサーバーのログファイルのパス |
rocket_chat_mongodb_unixsocketprefix |
/var/run/mongodb |
MongoDBのUNIXソケットプレフィックスのパス |
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 | Rocket.Chat tarballのリモートSSL証明書を検証するかどうかを決定するブール値 |
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 |
MongoDBのAPTリポジトリ |
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 |
MongoDBのAPTリポジトリ |
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 |
MongoDBのAPTリポジトリ |
rocket_chat_tarball_validate_remote_cert |
false | Rocket.Chat tarballのリモートSSL証明書を検証するかどうかを決定するブール値 |
この役割をAnsible Galaxyからインストールする
この役割はAnsible Galaxyからダウンロードできます。
この役割をインストールし、Ansibleコードベースで追跡するには、requirements.ymlに以下のように記述します。
- src: RocketChat.Server
version: v1.9.0
path: roles/external/
注意:Ansible 1.9.4をまだ使用している場合は、versionをv1.9.0として指定する必要があります。
Ansible 2.0バージョンのこの役割をインストール
Ansible 2.0のリリースにより、この役割には公式サポートが入り、パフォーマンスの向上や追加機能(自動アップグレードなど)が提供されます。
Ansible 2.0バージョンのこの役割を使用するには、requirements.ymlを使用してansible-galaxyコマンドラインツールを使用してインストールできます。
以下は、ansible-galaxyを通じてAnsible 2.0コードを取得するためのrequirements.ymlファイルの例です:
- src: RocketChat.Server
path: roles/external
注意:masterはv2.0にリベースされ、現在はこの役割の最新のコードです。最新を取得したい場合は、バージョンを全く含めずにansible-galaxyを使って最新のタグを取得するか、version: masterを指定して常に最新の状態を取得します。
例のプレイブック
全てのchat_serversシステムでこの役割を実行するシンプルなプレイブック:
- hosts: chat_servers
roles:
- RocketChat.Server
MongoDBのデプロイを除外し、外部インスタンスを使用してchat_serversにRocket.Chatをデプロイするプレイブック。Rocket.Chatの自動アップグレードも許可しています(rocket_chat_automatic_upgradesにはAnsible 2.0が必要です!詳しくは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
FAQ
- この役割を使用してデプロイしようとしたときに、
Fetch the Rocket.Chat binary tarballタスクで失敗します もしデプロイが、以下のようなメッセージで失敗する場合、これは役割が最新のRocket.ChatリリースtarballのSHA256ハッシュ合計を反映するために更新されていないことが原因です。
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を使用するといった方法で設定可能です。
利用可能なタグ
特定のプレイセットを実行するには、--tagsフラグを使用します。利用可能なタグは以下の通りです:
varsbuildmongodbreponginxupgradeservice
Rocket.Chatサービスの管理
この役割はrocketchatという名前のサービスをデプロイします。
ネイティブのサービス管理システムを使用して、サービスの開始/停止/再読み込み/再起動を行うことができます。
Vagrantによるテスト
この役割をテストするには、tests/ディレクトリ内にあるVagrantfileとprovision.ymlプレイブックを見てください。
これは、おそらくお分かりかと思いますが、Vagrantを使ってテストデプロイメントを行うためのものです。
もし変更をテストしたり、役割がどのように機能するかを見たり、ローカルにちょっとしたRocket.Chatサーバーをプロビジョニングするつもりであれば、tests/に移動し、vagrant upを実行することができます(VagrantとVirtualBoxがインストールされていることが前提です)。
Vagrantfileを見ると、現在サポートされているプラットフォームごとにデプロイメントがあり、不要なものはコメントアウトすれば大丈夫です(Ansibleの設定も忘れずに!)。
デプロイが完了すると、http://localhost:4000にブラウザでアクセスすることでRocket.Chatを試せます(ここでのポート4000は展開するプラットフォームに基づいて変わり、プラットフォームごとのforwarded_port値を参照してください)。
TODO
- Let's EncryptをSSLに使用
ライセンス
MIT
問題/貢献
ansible-galaxy install RocketChat.Server