I’ve hit a problem with the FutureGateway stack deployment code. The goal is to write the deployment in such a way as to make it deployable on a cloud-native platform, following 12-factor. I’m using AnsibleContainer to do this.

The container.yml looks like this :

version: "2"
settings:
# We choose Jessie as the Conductor base since that's what the mysqldb is using.
conductor_base: debian:jessie

services:
apiserver:
from: centos:7
roles:
- AAROC.fgapi
ports:
- 8888:8888
command: ['/bin/true']
privileged: True

db:
from: mysql
roles:
- AAROC.fg-db
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_USER=
- MYSQL_USER_PASSWORD=
command: ['mysqld']
entrypoint: ['/entrypoint.sh']
volumes:
- $PWD:/var/lib/mysql
privileged: True
registries:
quay:
url: https://quay.io
namespace: aaroc

The problem I’m facing right now is applying the AAROC.fg-db role to the db image :

TASK [AAROC.fg-db : DBinst0 | Database creation check] *************************
fatal: [db]: FAILED! => {"changed": false, "failed": true, "msg": "the python mysqldb module is required"}

The task DBinst0 throws this error, which uses the mysql_db Ansible module to import a database. The notes state that the python-mysqldb package has to be present on the managed node and indeed there’s a prior task which performs this :

- name: ensure python db package
package:
name: python-mysqldb
state: present
update_cache: true

So… it seems like it’s the conductor container that doesn’t have the package. I need to find some way to ensure that the mysql python bindings are on the conductor container. Seems like a bit of a (huge) oversight to me, but hey, what do I know ?