--- # tasks file for deploy-redmine.yml - name: Create persistent volume for redmine k8s: state: present definition: apiVersion: v1 kind: PersistentVolume metadata: name: redmine spec: capacity: storage: "{{ redmine_storage }}" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: standard hostPath: path: "/data/store-0/eom/redmine" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - alpha-worker-0 - name: Create persistent volume claim for redmine k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redmine namespace: eom spec: accessModes: - ReadWriteOnce resources: requests: storage: "{{ redmine_storage }}" storageClassName: standard volumeName: redmine - name: Create a deployment k8s: definition: apiVersion: apps/v1 kind: Deployment metadata: name: redmine namespace: eom spec: replicas: 1 selector: matchLabels: app: redmine template: metadata: labels: app: redmine spec: containers: - name: redmine image: redmine volumeMounts: - name: redmine mountPath: /usr/src/redmine/files ports: - containerPort: 3000 env: - name: REDMINE_DB_MYSQL value: "mariadb.eom.svc.cluster.local" - name: REDMINE_DB_PORT value: "3306" - name: REDMINE_DB_DATABASE value: "redmine" - name: REDMINE_DB_USERNAME value: "redmine" - name: REDMINE_DB_PASSWORD value: "{{ redmine_mariadb_password }}" volumes: - name: redmine persistentVolumeClaim: claimName: redmine - name: Expose deployment as a service k8s: definition: apiVersion: v1 kind: Service metadata: name: redmine namespace: eom spec: selector: app: redmine ports: - port: 80 targetPort: 3000 protocol: TCP name: redmine-port-80 type: ClusterIP