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_namemoleculeの下にあるテストケースの名前です。パラメータを渡さない場合はデフォルトのテストケースが実行されます。

コントリビューション

PRをオープンしてください。PRを大歓迎します!

進めるべきことリスト

以下は、今後の提案です:

  • ディストリビューションパッケージのMongoDBの使用をサポートする。
  • serverspecやtestinfraでさらにスタンドアロンのテストを書く。
  • レプリカセットのテストケースを改善する。

ライセンス

このロールはMITライセンスの下で配布されています。

プロジェクトについて

Role for installing MongoDB with clustering support

インストール
ansible-galaxy install stone-payments.mongodb
ライセンス
mit
ダウンロード
405
所有者
Pensar fora da máquina só é possível quando se trabalha com tecnologia humana de ponta.