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.16.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

deployfish_mysql-1.2.16-py2.py3-none-any.whl (14.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file deployfish-mysql-1.2.16.tar.gz.

File metadata

  • Download URL: deployfish-mysql-1.2.16.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for deployfish-mysql-1.2.16.tar.gz
Algorithm Hash digest
SHA256 524e5e43757e714e78289e2d08e00ad07667ea01efe1c4b288aedbb082ffd3c4
MD5 2bd2b4472ce5ae63a7c5572984fb4e86
BLAKE2b-256 23a52312cff8659c07b696ace22a7a811839992119bc1a2e383ca1cff01d0335

See more details on using hashes here.

File details

Details for the file deployfish_mysql-1.2.16-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for deployfish_mysql-1.2.16-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 68857add21375946bd86f4123f7c40fa85d99eed787e0ae7cad5c8f4c0ca60df
MD5 873700c95a235fe1d81700695e3931c5
BLAKE2b-256 5e97e493eefee5af3eccd4da938d5d6e5a6a8ea00722813fcfa44288cecee037

See more details on using hashes here.

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