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
