--- # tasks file for media - name: Create persistent volume for media k8s: state: present definition: apiVersion: v1 kind: PersistentVolume metadata: name: "eom-{{ target_namespace }}-media" spec: capacity: storage: 1024Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: standard hostPath: path: "/data/store-0/eom/media" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - alpha-worker-0 - name: Create a persistent volume claim for media k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: media namespace: "eom-{{ target_namespace }}" spec: accessModes: - ReadWriteOnce resources: requests: storage: 1024Gi storageClassName: standard volumeName: "eom-{{ target_namespace }}-media" - name: Create a config map for httpd k8s: state: present api_version: v1 kind: ConfigMap name: media namespace: "eom-{{ target_namespace }}" definition: data: httpd.conf: "{{ lookup('file', 'media-httpd.conf') }}" httpd-dav.conf: "{{ lookup('template', 'httpd-dav.conf.j2') }}" mime.types: "{{ lookup('file', 'mime.types') }}" - name: Create a deployment k8s: definition: apiVersion: v1 kind: Deployment metadata: name: media namespace: "eom-{{ target_namespace }}" spec: replicas: 1 selector: matchLabels: app: media template: metadata: labels: app: media spec: containers: - name: httpd image: httpd volumeMounts: - name: config mountPath: /usr/local/apache2/conf - name: media mountPath: /usr/local/apache2/htdocs/ ports: - containerPort: 80 volumes: - name: config configMap: name: media - name: media persistentVolumeClaim: claimName: media - name: Expose deployment as a service k8s: definition: apiVersion: v1 kind: Service metadata: name: media namespace: "eom-{{ target_namespace }}" spec: selector: app: media ports: - port: 80 name: media-80 type: ClusterIP