bertvv.mariadb
Ansibleロール mariadb
RedHatベースのディストリビューションでMariaDBを管理するためのAnsibleロールです。このロールの主な機能は次の通りです。
- MariaDBの公式リポジトリからパッケージをインストール
- 安全でないデフォルトを削除:
- データベースのrootパスワードを設定(設定後、このロールはrootパスワードを変更できません)
- 匿名ユーザーを削除
- テストデータベースを削除
- ユーザーやデータベースを作成
- 設定ファイル
server.cnf
とcustom.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の設定は次のことを行います。
このプロセスはサポートされている各Linuxディストリビューションに対して繰り返されます。
ローカルDockerテスト環境
ローカルテスト環境を設定したい場合は、Vagrant+VirtualBoxに基づくこの再現可能なセットアップを使用できます:https://github.com/bertvv/ansible-testenv。必要なツールを手動でインストールする手順:
- DockerとBATSをシステムにインストールします(Linuxが動作していることを前提としています)。テストを開始する際に、Dockerコンテナは実行中でない必要があります。
- Moleculeの推奨に従ってPythonの仮想環境を作成します。
- ソフトウェアツールをインストールします
python3 -m pip install molecule docker netaddr yamllint ansible-lint
- ロールディレクトリのルートに移動し、
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
貢献者
ansible-galaxy install bertvv.mariadb