mjanser.mysql
Ansibleロール: mysql
Fedora、Debian、UbuntuにMySQLまたはMariaDBサーバーをインストールするAnsibleロールです。
DebianとUbuntuには、https://dev.mysql.com/downloads/repo/apt/から上流バージョンのMySQLがインストールされ、Fedoraにはhttps://dev.mysql.com/downloads/repo/yum/からインストールされます。
上流のMariaDBには、https://downloads.mariadb.org/mariadb/repositories/のリポジトリが使用されます。
要件
ファイアウォールを設定するには、firewalld
サービスが実行中であり、python-firewall
パッケージがインストールされている必要があります。
ロール変数
利用可能な変数は以下に示され、デフォルト値が設定されています:
mysql_vendor: mysql
mysql_origin: distribution
mysql_upstream_version: ~ # MariaDB: 10.2, MySQL: 5.7
mysql_root_password: "My $3cr3t password"
mysql_import_timezones: yes
mysql_bind_address: 0.0.0.0
mysql_key_buffer_size: 256M
mysql_max_allowed_packet: 1M
mysql_table_open_cache: 256
mysql_sort_buffer_size: 1M
mysql_read_buffer_size: 1M
mysql_read_rnd_buffer_size: 4M
mysql_net_buffer_length: 1M
mysql_myisam_sort_buffer_size: 64M
mysql_thread_cache_size: 8
mysql_query_cache_size: 16M
mysql_max_connections: ~
mysql_thread_concurrency: ~
mysql_ssl_ca: ~
mysql_ssl_cert: ~
mysql_ssl_key: ~
mysql_custom_config: ~
mysql_backup: no
mysql_backup_destination: /var/lib/backup/database
mysql_backup_password: "My $3cr3t password"
mysql_firewall_zones: []
mysql_databases: []
mysql_users: []
ベンダーと起源
このAnsibleロールは、ディストリビューションまたは上流パッケージからMySQLとMariaDBのインストールをサポートしています。
ベンダーは、変数mysql_vendor
で設定でき、mysql
またはmariadb
の値をサポートしています。デフォルトのベンダーはmysql
です。
変数mysql_origin
は、パッケージの出所を定義します。デフォルト値distribution
は、ディストリビューションからパッケージがインストールされることを意味します。この設定では、ディストリビューションがバージョンを定義し、変更することはできません。
mysql_origin
がupstream
に設定されている場合、MySQL/MariaDBのパッケージがインストールされます。これは、https://downloads.mariadb.org/mariadb/repositories/のリポジトリを使用して行われます。この設定では、変数`mysql_upstream_version`でバージョンを指定できます。
ルートユーザー
変数mysql_root_password
で定義されたパスワードは、インストール時にルートパスワードとして設定されます。これは安全なパスワードに変更する必要があります。
ルートユーザーは、ローカルホストからのみ接続できます。すべてのリモートホストエントリは削除されます。
さらに、匿名ユーザーとテストデータベースも削除されます。
タイムゾーンのインポート
タイムゾーンデータはデフォルトでインポートされます(https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.htmlを参照)。この動作を変更するには、変数`mysql_import_timezones`を`no`に設定します。
ネットワーク
デフォルトでは、サーバーはホスト上のすべてのIPv4インターフェースでリッスンします。これを変更するには、変数mysql_bind_address
を0.0.0.0
以外のアドレスに設定します。
オプション
調整可能なオプションがいくつかあり、デフォルト値が設定されています。詳細は上記またはdefaults/tasks.yml、ドキュメントを参照してください。
SSL
SSLサポートを有効にするには、mysql_ssl_ca
、mysql_ssl_cert
、mysql_ssl_key
の変数を設定する必要があります。
カスタム設定
追加の設定は、変数mysql_custom_config
で定義できます。例えば:
mysql_custom_config: |
skip_name_resolve
skip-locking
バックアップ
バックアップはデフォルトでは無効ですが、mysql_backup
をyes
に設定することで自動日次バックアップスクリプトを有効にできます。
すべてのデータベースを、mysql_backup_destination
で定義されたディレクトリに、タイムスタンプ付きのSQLファイルとしてダンプします。また、各データベースごとに最新のバックアップファイルへのリンクも作成します。
バックアップ用のデータベースユーザーが自動的に作成され、パスワードは変数mysql_backup_password
で設定します。この変数はデフォルトでは空であり、バックアップが有効になりパスワードが設定されていない場合はエラーが発生します。
ファイアウォール
変数mysql_firewall_zones
を使用して、nginxにアクセスできるファイアウォールゾーンを宣言できます。これにより、3306/tcp
ポートが開放されます。
現在サポートされているのはfirewalld
のみで、Fedoraのデフォルトです。
データベース
作成するデータベースは、変数mysql_databases
で定義できます。mysql_databases
の各エントリの可能な値は、デフォルト値と共に以下の通りです:
name: ~
collation: utf8_general_ci
encoding: utf8
import_file: ~
名前
キーname
でデータベースの名前を設定できます。
照合順序とエンコーディング
照合順序とエンコーディングを調整するには、collation
とencoding
で設定できます。
インポート
データベースの作成後にインポートするSQLファイルへのパスをimport_file
で設定できます。これはバックアップのインポートに使用できます。
データベースが既に存在する場合、何もインポートされません。
ユーザー
データベースユーザーは、変数mysql_users
で定義できます。mysql_users
の各エントリの可能な値は、デフォルト値と共に以下の通りです:
name: ~
password: ~
host: localhost
privileges: "*.*:USAGE"
append_privileges: no
認証情報
name
とpassword
のキーがユーザーの認証情報を定義します。ユーザーは、host
で設定されたホストからのみサーバーにアクセスできます。%
を設定すると、すべてのホストからのアクセスが許可されます。
権限
権限は文字列でprivileges
に定義できます。詳細はMySQLまたはMariaDBのマニュアルを参照してください。append_privileges
がyes
に設定されている場合、定義された権限は既存のものに追加されます。
依存関係
なし
例 Playbook
- hosts: all
roles:
- { role: mjanser.mysql }
vars:
mysql_root_password: secret
mysql_databases:
- name: my_db
mysql_users:
- name: my_user
password: secret
privileges: "my_db.*:ALL"
ライセンス
MIT