--- # tasks file for deploy-mariadb.yml - name: Create a ConfigMap for database schema k8s: state: present api_version: v1 kind: ConfigMap name: mariadb namespace: eom definition: data: schema.sql: "{{ lookup('template', 'schema.sql.j2') }}" - name: Create persistent volume for mariadb k8s: state: present definition: apiVersion: v1 kind: PersistentVolume metadata: name: mariadb spec: capacity: storage: "{{ mariadb_storage }}" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: standard hostPath: path: "/data/store-0/eom/mariadb" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - alpha-worker-0 - name: Create persistent volume claim for mariadb k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mariadb namespace: eom spec: accessModes: - ReadWriteOnce resources: requests: storage: "{{ mariadb_storage }}" storageClassName: standard volumeName: mariadb - name: Create a deployment k8s: definition: apiVersion: apps/v1 kind: Deployment metadata: name: mariadb namespace: eom spec: replicas: 1 selector: matchLabels: app: mariadb template: metadata: labels: app: mariadb spec: containers: - name: mariadb image: mariadb volumeMounts: - name: mariadb mountPath: /var/lib/mysql - name: schema-sql mountPath: /docker-entrypoint-initdb.d ports: - containerPort: 3306 env: - name: MARIADB_ROOT_PASSWORD value: "{{ mariadb_root_password }}" volumes: - name: schema-sql configMap: name: mariadb - name: mariadb persistentVolumeClaim: claimName: mariadb - name: Expose deployment as a service k8s: definition: apiVersion: v1 kind: Service metadata: name: mariadb namespace: eom spec: selector: app: mariadb ports: - port: 3306 protocol: TCP name: mariadb-port-3306 type: ClusterIP