apiVersion: v1 kind: Template metadata: name: semaphore objects: - apiVersion: v1 kind: ImageStream metadata: name: semaphore labels: app: semaphore spec: tags: - name: latest from: kind: DockerImage name: "${SEMAPHORE_IMAGE_SOURCE}:${SEMAPHORE_IMAGE_TAG}" importPolicy: scheduled: true - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: semaphore-data spec: accessModes: - ReadWriteOnce resources: requests: storage: "${SEMAPHORE_DATA_VOLUME_SIZE}Gi" status: {} - apiVersion: v1 kind: DeploymentConfig metadata: labels: app: semaphore name: semaphore spec: replicas: 1 selector: app: semaphore deploymentconfig: semaphore strategy: activeDeadlineSeconds: 21600 resources: {} rollingParams: intervalSeconds: 1 maxSurge: 25% maxUnavailable: 25% timeoutSeconds: 600 updatePeriodSeconds: 1 type: Rolling template: metadata: labels: app: semaphore deploymentconfig: semaphore spec: containers: - env: - name: SEMAPHORE_DB_HOST value: mysql - name: SEMAPHORE_DB value: semaphore - name: SEMAPHORE_DB_PASS valueFrom: secretKeyRef: key: database-password name: mysql - name: SEMAPHORE_DB_USER valueFrom: secretKeyRef: key: database-user name: mysql - name: SEMAPHORE_PLAYBOOK_PATH value: /tmp/semaphore imagePullPolicy: Always name: semaphore ports: - containerPort: 3000 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/semaphore name: semaphore-etc subPath: etc - mountPath: /tmp name: tmp dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: semaphore-etc persistentVolumeClaim: claimName: semaphore-data - name: tmp emptyDir: test: false triggers: - type: ConfigChange - imageChangeParams: automatic: true containerNames: - semaphore from: kind: ImageStreamTag name: semaphore:latest type: ImageChange - apiVersion: v1 kind: Route metadata: name: semaphore spec: host: "${SEMAPHORE_URL}" port: targetPort: 3000-tcp to: kind: Service name: semaphore weight: 100 wildcardPolicy: None - apiVersion: v1 kind: Service metadata: labels: app: semaphore name: semaphore spec: ports: - name: 3000-tcp port: 3000 protocol: TCP targetPort: 3000 selector: app: semaphore deploymentconfig: semaphore sessionAffinity: None type: ClusterIP status: loadBalancer: {} parameters: - name: SEMAPHORE_IMAGE_SOURCE displayName: Semaphore image description: The id of the repository from which to pull the semaphore image value: docker.io/ansiblesemaphore/semaphore required: true - name: SEMAPHORE_IMAGE_TAG displayName: Semaphore image description: The tag to use for the semaphore repository value: latest required: true - name: SEMAPHORE_DATA_VOLUME_SIZE displayName: Semaphore data volume size description: The size, in Gi of the semaphore data volume, which is mounted at /etc/semaphore value: "5" required: true - name: SEMAPHORE_URL displayName: URL description: Set this to the value which you wish to be passed to the route. If blank will use generated url required: false