stone-payments.mongodb
stone-payments.mongodb
このAnsibleのロールは、スタンドアロンの設定やレプリカセットでMongoDBを管理します。
サポートされているシステム
開発の効率を考慮して、以下の要件を満たすディストリビューションのみをサポートすることに決めました:
- 現在サポートされているディストリビューションであること(EOLにないこと);
- MongoDB.orgによって現在サポートされていること(この要件はすぐに廃止される可能性があります);
- systemdベースであること;
- 十分なユーザー数を持っていること。
そのため、現在のサポートされているシステムは:
- エンタープライズLinux(CentOSおよびRHEL)
- 7.3
- 7.4
- 7.5
- Ubuntu
- 16.04
要件が満たされていれば、リクエストに応じてさらに他のディストリビューションが追加される可能性があります。
使用法
クイックスタート
基本的なパスワードなしのループバック専用スタンドアロンMongoDBのセットアップには、変数は一切必要ありません。プレイに以下のように含めるだけです:
- name: mongodbをインストールする
hosts: all
roles: stone-payments.mongodb
レプリカセットの設定
レプリカセットを構築するには、マスターであることを通知し、接続するマスターのレプリカを指定する必要があります。以下の抜粋を使用してこれを行うことができます:
- name: mongodbレプリカセットをインストールする
host: all
roles: stone-payments.mongodb
vars:
mongodb_conf_bindIp: "0.0.0.0"
mongodb_replSet_enabled: true
mongodb_replSet_name: "someReplicaSetName"
mongodb_replSet_master: "1.2.3.4" # IPアドレスを指定する必要があります
mongodb_replSet_key: "someLongKey" # 任意、クロスレプリカの認証キー
mongodb_replSet_member: "{{ ansible_eth1['ipv4']['address'] }}" # 任意、異なるIFを指定してレプリケーション
mongodb_replSet_arbiter: "{{ true if inventory_hostname == 'hostThatIsArbiter' else false }}"
認証
認証を有効にし、管理者アカウントを作成するには、次のようにします:
- name: 認証付きでmongodbをインストールする
hosts: all
roles: stone-payments.mongodb
vars:
mongodb_conf_auth: true
mongodb_admin_user: "admin"
mongodb_admin_password: "somePassword"
ロギング
任意のsystemLogオプションを、mongodb_conf_logging
辞書を提供することで設定できます:
- name: ネットワークデバッグロギング付きでmongodbをインストールする
host: all
roles: stone-payments.mongodb
vars:
mongodb_conf_logging:
verbosity: 0
component:
network:
verbosity: 5
destination: file
path: /var/log/mongodb/mongod.log
ファイアウォール
このルールは、ufwまたはfirewalldを構成し、デフォルトでの受信接続を有効にします。以下のオプションを使用してカスタマイズできます(使用しているファイアウォールソリューションに特有のもの):
- name: カスタムファイアウォール設定でmongodbをインストールする
hosts: all
roles: stone-payments.mongodb
vars:
mongodb_firewall_zone: "public" # firewalldのみ
mongodb_firewall_interface: "eth0" # ufwのみ
mongodb_firewall_source: "192.168.0.0/24" # ufwのみ
mongodb_install_firewall: false
を設定することでファイアウォールの設定を無効にすることもできます。
Linuxセキュリティモジュール
このロールはデフォルトでLSM(現在はSELinuxのみサポートされています)を構成します。これを無効にするには:
mongodb_install_lsm: false
を設定してください。
その他の設定
ほとんどのその他の設定は自明であるか、MongoDBのコア機能に直接関連していると考えています。defaults/main.yml
の設定をオーバーライドすれば、(できるだけ)システムに適用されるはずです。
テスト
このロールは、Docker上でMoleculeを使用して大部分のユニットテストを実装しています。Molecule 2.0以上のみをサポートしています。いくつかのテストは、完全なVMを必要とする側面をテストするために、VagrantとVirtualBoxで実装されています。ただし、Vagrantが必要なテストについては、ネストされた仮想化をサポートする公的なCIがないため、CI統合はありません。
現在のシナリオは以下の通りです:
シナリオ名 | ドライバー | 説明 |
---|---|---|
default |
docker | 個別のセットアップでの基本ロールのサニティテスト |
replica-set |
docker | レプリカセットでの混合ディストリビューションのセットアップ |
security |
vagrant | LSMとファイアウォール設定をテストするためのフルVM |
Docker環境のセットアップ
以下のコマンドを使用して、仮想環境内にMoleculeとDockerのインタラクションライブラリをインストールできます。virtualenvの内外でdocker-pyが必要です。
sudo pip install docker-py
virtualenv .venv
.venv/bin/activate
pip install molecule docker-py
Dockerのインストールと設定は範囲外です。
SELinuxが有効なホストを使用している場合、libselinux-pythonライブラリもインストールする必要があります。localhostにタスクを委任する際に、ホストのPythonインタプリタを使用するためにMoleculeプレイブックに特別な追加があります。FedoraとCentOSのどちらでもこのパッケージをインストールできます:
sudo yum install python2-libselinux
Vagrant環境のセットアップ
以下のコマンドを使用して、仮想環境内にMoleculeをインストールできます:
virtualenv .venv
.venv/bin/activate
pip install molecule
VagrantとVirtualBoxのインストールと設定は範囲外です。
テストの実行
仮想環境内でMoleculeがセットアップされたら、次のコマンドでテストを実行できます:
molecule converge [-s scenario_name]
ここで、scenario_name
はmolecule
の下にあるテストケースの名前です。パラメータを渡さない場合はデフォルトのテストケースが実行されます。
コントリビューション
PRをオープンしてください。PRを大歓迎します!
進めるべきことリスト
以下は、今後の提案です:
- ディストリビューションパッケージのMongoDBの使用をサポートする。
- serverspecやtestinfraでさらにスタンドアロンのテストを書く。
- レプリカセットのテストケースを改善する。
ライセンス
このロールはMITライセンスの下で配布されています。
ansible-galaxy install stone-payments.mongodb