Deployfish MySQL plugin
Project description
deployfish-mysql
deployfish-mysql
is a plugin for deployfish that
allows you to manage databases in remote MySQL servers in AWS.
deploy mysql create {name}
: Create database a database and user, with appropriateGRANT
s.deploy mysql update {name}
: Update the user's password andGRANT
sdeploy mysql validate {name}
: Validate that the username/password combination is validdeploy mysql dump {name}
: Dump MySQL databases as SQL files to local file systems.deploy mysql load {name} {filename}
: Load a local SQL file into remote MySQL databasesdeploy mysql show-grants {name}
: Show GRANTs for your user
{name}
above refers to the name
of a MySQL connection from the mysql:
section of your deployfish.yml
file. See below for how the mysql:
connection works.
Install deployfish-mysql
pip install deployfish deployfish-mysql
Configure deployfish-mysql
First follow the instructions for installing and configuring deployfish, then
add this stanza to your ~/.deployfish.yml
file:
plugin.mysql:
enabled: true
NOTE: ~/.deployfish.yml
is the config file for deployfish itself. This is different from the deployfish.yml
file that defines your services and tasks.
Instrument your deployfish.yml
deployfish-mysql
looks in your deployfish.yml
file (the one with your services and task definitions, not the ~/.deployfish.yml
config file for deployfish iteslf) for a section named mysql
, which has definitions of mysql databases:
mysql:
- name: test
service: service-test
host: my-remote-rds-host.amazonaws.com
db: mydb
user: myuser
pass: password
- name: config-test
service: service-test
host: config.DB_HOST
db: config.DB_NAME
user: config.DB_USER
pass: config.DB_PASSWORD
services:
- name: dftest-test
cluster: my-cluster
environment: test
config:
- DEBUG=False
- DB_HOST=${terraform.rds_address}
- DB_NAME=dftest
- DB_USER=dftest_u
- DB_PASSWORD:secure:kms_key_arn=${env.DB_PASSWORD}
Entries in the mysql:
section must minimally define these keys:
name
: the name of the connection. This will be used in all thedeploy mysql
commands as the connection name.service
: the name of a service in theservices:
section. This will be used to determine which host we use to use for SSH when doing our mysql commandshost
: the hostname of the remote MySQL serverdb
: the name of the database to work with inhost
user
: the username of the user to use to authenticate tohost
pass
: the password of the user to use to authenticate tohost
These are optional keys that you can add to your connection definition:
port
: the port to connect to on the remote MySQL server. Default: 3306character_set
: set the character set of your database to this (used fordeploy mysql create
anddeploy mysql update
). Default:utf8
.collation
: set the collation set of your database to this (used fordeploy mysql create
anddeploy mysql update
). Default:utf8_unicode_ci
.
As you can see in the examples above, you can either hard code host
, db
, user
and password
in or you can reference config
parameters from the config:
section of the definition of our service. For the latter, deployfish-mysql
will retrieve those parameters directly from AWS SSM Parameter Store, so ensure you write the service config to AWS before trying to establish a MySQL connection.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for deployfish_mysql-1.2.16-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68857add21375946bd86f4123f7c40fa85d99eed787e0ae7cad5c8f4c0ca60df |
|
MD5 | 873700c95a235fe1d81700695e3931c5 |
|
BLAKE2b-256 | 5e97e493eefee5af3eccd4da938d5d6e5a6a8ea00722813fcfa44288cecee037 |