bertvv.mariadb

Ansibleロール mariadb

RedHatベースのディストリビューションでMariaDBを管理するためのAnsibleロールです。このロールの主な機能は次の通りです。

  • MariaDBの公式リポジトリからパッケージをインストール
  • 安全でないデフォルトを削除:
    • データベースのrootパスワードを設定(設定後、このロールはrootパスワードを変更できません)
    • 匿名ユーザーを削除
    • テストデータベースを削除
  • ユーザーやデータベースを作成
  • 設定ファイル server.cnfcustom.cnf を管理
  • SSL証明書をアップロードし、サーバーがそれを使用するように構成

各リリースの重要な変更点については、変更ログを参照してください。

このロールを使用している/気に入っている方は、スターを付けることを検討してください。もしこのロールをAnsible Galaxyで評価し、何か不足を感じた場合は、フィードバックや改善できる提案を含むIssueをオープンしていただけると幸いです。ありがとうございます!

必要条件

特にありません。

ロール変数

以下の変数は必須ではありません。ユーザーが定義しない場合は、デフォルト値が使用されます。

基本設定

変数 デフォルト コメント
mariadb_bind_address '127.0.0.1' リッスンするネットワークインターフェースのIPアドレスを設定、すべてのインターフェースでリッスンするには '0.0.0.0' を設定。
mariadb_configure_swappiness true trueのとき、このロールは "swappiness" の値を設定します(mariadb_swappinessを参照)。
mariadb_custom_cnf {} カスタム設定を含む辞書。
mariadb_databases [] 追加されるデータベースを指定する辞書のリスト。詳細は以下を参照。
mariadb_mirror yum.mariadb.org .rpmパッケージ用のダウンロードミラー(1)
mariadb_port 3306 クライアントリクエストをリッスンするために使用されるポート番号
mariadb_root_password '' MariaDBのrootパスワード。(2)
mariadb_server_cnf {} サーバー設定を含む辞書。
mariadb_service mariadb サービス名(CentOSのMariaDB 5.5の場合、例えば'mysql'である必要があります)
mariadb_swappiness '0' "Swappiness"の値(文字列)。システムのデフォルトは60。0はプロセスのスワッピングを回避することを意味します。
mariadb_users [] 追加されるユーザーを指定する辞書のリスト。詳細は以下を参照。
mariadb_version '10.5' インストールされるMariaDBのバージョン。デフォルトは現在の安定版です。
mariadb_ssl_ca_crt null ルート証明書のパス
mariadb_ssl_server_crt null サーバーのSSL証明書のパス
mariadb_ssl_server_key null サーバーのSSL証明書キーのパス

注釈

(1) 公式レポジトリからのMariaDBのインストールは非常に遅くなることがあります(10分以上かかることもあるとの報告があります)。mariadb_mirror変数は、地理的位置に近いカスタムダウンロードミラーを指定することができ、インストールプロセスを速めることができます。例:

# RHEL/Fedoraの場合
mariadb_mirror: 'mariadb.mirror.nucleus.be/yum'
# Debianの場合
mariadb_mirror: 'mirror.mva-n.net/mariadb/repo'

(2) データベースのrootパスワードを設定することを強く推奨します! パスワードを空のままにすることは重大なセキュリティリスクです。この変数が設定されていない場合、ロールは警告を表示します。

サーバー設定

/etc/my.cnf.d/server.cnf(RHEL/Fedoraの場合)や/etc/mysql/conf.d/server.cnf(Debianの場合)の [mariadb] セクションで設定を指定できます。mariadb_server_cnf変数にキー/値の辞書を提供することで設定します。可能な設定については、MariaDBサーバーシステム変数のドキュメントを参照してください。

構成ファイルで = 値 がない設定については、値を空にしてください。すべての値は文字列として指定する必要があるため、数値は引用符で囲むべきです。

以下の例では、slow-query-logの値を空にしています:

mariadb_server_cnf:
  slow-query-log:
  slow-query-log-file: 'mariadb-slow.log'
  long-query-time: '5.0'

この結果、次のような server.cnf になります:

[mariadb]
slow-query-log
slow-query-log-file = mariadb-slow.log
long-query-time = 5.0

カスタム設定

[mariadb] セクション以外の他のセクションの設定は、mariadb_custom_cnfで設定できます。これらの設定は /etc/mysql/my.cnf.d/custom.cnf(RHEL/Fedoraの場合、または /etc/mysql/conf.d/custom.cnf の Debian)に書き込まれます。

mariadb_server_cnf と同様に、mariadb_custom_cnf 変数も辞書である必要があります。キーはセクション名、値は個々の設定のキーバリューマッピングの辞書です。

以下の例では、全般的なクエリログを有効にします:

mariadb_custom_cnf:
  mysqld:
    general-log:
    general-log-file: queries.log
    log-output: file

結果の設定ファイルは以下のようになります:

[mysqld]
general-log-file=queries.log
general-log
log-output=file

データベースの追加

データベースは、name:(必須)および init_script:(オプション)フィールドを含む辞書で定義されます。初期スクリプトは、データベースが作成されたときに実行されるSQLファイルで、テーブルを初期化し、値をポップulateします。

mariadb_databases:
  - name: appdb1
  - name: appdb2
    init_script: files/init_appdb2.sql

ユーザーの追加

ユーザーは、name:password:priv: で定義され、オプションで host:append_privs を含む辞書で指定されます。パスワードはプレーンテキストで、priv: はこのユーザーの権限を指定します(詳細は Ansibleのドキュメントを参照)。

例:

mariadb_users:
  - name: john
    password: letmein
    priv: '*.*:ALL,GRANT'
  - name: jack
    password: sekrit
    priv: 'jacksdb.*:ALL'
    append_privs: 'yes'
    host: '192.168.56.%'

依存関係

依存関係はありません。

例のプレイブック

テストプレイブックを参照してください。

テスト

このロールは Ansible Moleculeを使用してテストできます。Moleculeの設定は次のことを行います。

  • YamllintおよびAnsible Lintを実行
  • dbという名前のDockerコンテナを作成
  • 構文チェックを実行
  • テストプレイブックでロールを適用
  • BATSで受け入れテストを実行

このプロセスはサポートされている各Linuxディストリビューションに対して繰り返されます。

ローカルDockerテスト環境

ローカルテスト環境を設定したい場合は、Vagrant+VirtualBoxに基づくこの再現可能なセットアップを使用できます:https://github.com/bertvv/ansible-testenv。必要なツールを手動でインストールする手順:

  1. DockerとBATSをシステムにインストールします(Linuxが動作していることを前提としています)。テストを開始する際に、Dockerコンテナは実行中でない必要があります。
  2. Moleculeの推奨に従ってPythonの仮想環境を作成します。
  3. ソフトウェアツールをインストールします python3 -m pip install molecule docker netaddr yamllint ansible-lint
  4. ロールディレクトリのルートに移動し、molecule testを実行します。

Moleculeは自動的にテスト後にコンテナを削除します。自分でコンテナを確認したい場合は、molecule convergeを実行した後にmolecule login --host HOSTNAMEを実行してください。

Dockerコンテナは、Jeff Geerlingによって特にAnsibleテスト用に作成されたイメージに基づいています(geerlingguy/docker-DISTRO-ansibleという名前のイメージを探してください)。彼のイメージを使用できますが、meta/main.ymlで言及されているディストリビューションのみがサポートされています。

デフォルト設定ではCentOS 7コンテナを起動します(現在の主なサポートプラットフォームです)。別のディストリビューションを選択するには、MOLECULE_DISTRO変数をコマンドで設定します。例えば:

MOLECULE_DISTRO=fedora32 molecule test

または

MOLECULE_DISTRO=fedora32 molecule converge

両方のサーバーで受け入れテストを実行するにはmolecule verifyを使用するか、手動で以下のようにします:

SUT_IP=172.17.0.2 bats molecule/common/mariadb.bats

SUT_IP変数には、テスト対象のシステムのIPアドレスを初期化する必要があります。dbコンテナはIPアドレス172.17.0.2を持つべきです。

ローカルVagrantテスト環境

また、Dockerコンテナの代わりにフル機能のVMでMoleculeテストを実行できます。テストを実行するシステムにVagrant、VirtualBox、Ansible、Molecule、BATSをインストールする必要があります。

molecule test -s vagrant

これにより、サポートされているプラットフォーム用にVirtualBox VMが作成され、Bentoプロジェクトのベースボックスに基づいてテストプレイブックが適用され、受け入れテストが実行されます。

ライセンス

2条項BSD

貢献者

プロジェクトについて

Manage MariaDB on a RedHat based Linux distribution.

インストール
ansible-galaxy install bertvv.mariadb
ライセンス
other
ダウンロード
66.6k
所有者
Hi! My contribs are often related to my job (teaching Linux), but are mostly done in my free time. I can't always respond quickly to PRs and Issues. Sorry!