NECモバイルバックエンド基盤サーバをセットアップする Ansible Playbook です。
ターゲットホスト
- RHEL 7 (x64) または CentOS 7 (x64)
- Amazon Linux 2 (x64)
制御ホスト(Ansible を実行するホスト): Ansible 2.0 以上
Playbook 実行中に Internet 上のサイトから必要なソフトウェアをダウンロードするため、ターゲットホストは Internet に対して HTTP/HTTPS で通信できるようになっている必要があります。
制御ホスト側に Ansible 2.0 以上をインストールしてください。
- CentOS/RHEL の場合は先に EPEL をインストールし、yum install ansible でインストールしてください。
- Ubuntu の場合は apt-get install ansible でインストールしてください。
制御ホストからターゲットホストに同一ユーザ・パスワードなしで ssh でログインできるよう、ssh 鍵認証の設定を行ってください。 具体的には制御ホストの ssh 公開鍵を制御ホストの ~/.ssh/authorized_keys に追記してください。
ssh パスワードが必要な場合は、以降 ansible-playbook を実行する際に -k オプションが必要になります。 また、ユーザ名が異なる場合は -u オプションも必要です。
ターゲットホスト側は、sudo でスーパーユーザ権限でコマンドを実行できるように設定してください。 sudo はパスワードなしで実行できるようにすることを推奨します。 sudo 時にパスワードが必要な場合は、以降 ansible-playbook を実行する際に -K オプションが必要になります。
- common.yml: Proxy設定、ulimit設定など共通設定を行います
- mongod.yml: MongoDB をインストールします
- tomcat.yml: Tomcat をインストールします
- baas-server.yml: BaaS サーバ(APIサーバ/Consoleサーバ)をインストールします
- ssepush.yml: SSEPush サーバをインストールします
- cloudfn.yml: Cloud Functions サーバをインストールします。
パラメータ(Variable)設定は group_vars 内の各ファイルに記述してください。 各パラメータ値の詳細は、各 Role (role/*) 内の README.md を参照してください。
Ansible 実行前に Git submodule を更新してください。
$ git submodule init
$ git submodule update
ansible-playbook を実行します
$ ansible-playbook -i [inventory_file] site.yml
inventory file にはデプロイ先のホスト名を指定してください。サンプルは hosts.sample ファイルにあります。
グループに設定したサーバに対し、各サーバソフトのインストールが実行されます。
- mongodb グループ: MongoDB サーバ
- rabbitmq グループ: RabbitMQ サーバ
- baas-server グループ: BaaS サーバ
- ssepush-server グループ: SSEPush サーバ
- cloudfn-server グループ: Cloud Functions サーバ
- fluentd サーバのインストールは未対応
- MongoDB はシングル構成のみ対応しています(レプリカセット・シャーディングは未対応)
- ファイヤウォールの設定は行いません。個別に開放を行ってください。
Ansible Playbook でデプロイした Vagrant Box の作成と利用手順は、 vm/vagrantbox/README.md を参照してください。
Ansible Playbook でデプロイした Vagrant Box から、 VirtualBox VM 用イメージへの作成と利用手順は、 vm/virtualbox/README.md を参照してください。