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
フラグを使用します。利用可能なタグは以下の通りです:
vars
build
mongodb
repo
nginx
upgrade
service
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