Skip to main content

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 appropriate GRANTs.
  • deploy mysql update {name}: Update the user's password and GRANTs
  • deploy mysql validate {name}: Validate that the username/password combination is valid
  • deploy 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 databases
  • deploy 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 the deploy mysql commands as the connection name.
  • service: the name of a service in the services: section. This will be used to determine which host we use to use for SSH when doing our mysql commands
  • host: the hostname of the remote MySQL server
  • db: the name of the database to work with in host
  • user: the username of the user to use to authenticate to host
  • pass: the password of the user to use to authenticate to host

These are optional keys that you can add to your connection definition:

  • port: the port to connect to on the remote MySQL server. Default: 3306
  • character_set: set the character set of your database to this (used for deploy mysql create and deploy mysql update). Default: utf8.
  • collation: set the collation set of your database to this (used for deploy mysql create and deploy 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deployfish-mysql-1.2.4.tar.gz (10.6 kB view hashes)

Uploaded Source

Built Distribution

deployfish_mysql-1.2.4-py2.py3-none-any.whl (11.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page