# This file is generated by Ansible. Changes will be lost.
# Update templates under ansible/templates/
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: awxs.awx.ansible.com
  namespace: awx
spec:
  group: awx.ansible.com
  names:
    kind: AWX
    listKind: AWXList
    plural: awxs
    singular: awx
  scope: Namespaced
  versions:
    - name: v1beta1
      served: true
      storage: true
      subresources:
        status: {}
      schema:
        openAPIV3Schema:
          description: Schema validation for the AWX CRD
          properties:
            spec:
              properties:
                deployment_type:
                  description: Name of the deployment type
                  type: string
                  default: awx
                kind:
                  description: Kind of the deployment type
                  type: string
                  default: AWX
                api_version:
                  description: apiVersion of the deployment type
                  type: string
                  default: awx.ansible.com/v1beta1
                tower_task_privileged:
                  description: If a privileged security context should be enabled
                  type: boolean
                  default: false
                tower_admin_user:
                  description: Username to use for the admin account
                  type: string
                  default: admin
                tower_hostname:
                  description: The hostname of the instance
                  type: string
                tower_admin_email:
                  description: The admin user email
                  type: string
                tower_admin_password_secret:
                  description: Secret where the admin password can be found
                  type: string
                tower_postgres_configuration_secret:
                  description: Secret where the database configuration can be found
                  type: string
                tower_old_postgres_configuration_secret:
                  description: Secret where the old database configuration can be found for data migration
                  type: string
                tower_secret_key_secret:
                  description: Secret where the secret key can be found
                  type: string
                tower_broadcast_websocket_secret:
                  description: Secret where the broadcast websocket secret can be found
                  type: string
                tower_extra_volumes:
                  description: Specify extra volumes to add to the application pod
                  type: string
                tower_ingress_type:
                  description: The ingress type to use to reach the deployed instance
                  type: string
                  enum:
                    - none
                    - Ingress
                    - ingress
                    - Route
                    - route
                    - LoadBalancer
                    - loadbalancer
                    - NodePort
                    - nodeport
                tower_ingress_annotations:
                  description: Annotations to add to the ingress
                  type: string
                tower_ingress_tls_secret:
                  description: Secret where the ingress TLS secret can be found
                  type: string
                tower_loadbalancer_annotations:
                  description: Annotations to add to the loadbalancer
                  type: string
                tower_loadbalancer_protocol:
                  description: Protocol to use for the loadbalancer
                  type: string
                  default: http
                  enum:
                    - http
                    - https
                tower_loadbalancer_port:
                  description: Port to use for the loadbalancer
                  type: integer
                  default: 80
                tower_route_host:
                  description: The DNS to use to points to the instance
                  type: string
                tower_route_tls_termination_mechanism:
                  description: The secure TLS termination mechanism to use
                  type: string
                  default: Edge
                  enum:
                    - Edge
                    - edge
                    - Passthrough
                    - passthrough
                tower_route_tls_secret:
                  description: Secret where the TLS related credentials are stored
                  type: string
                tower_node_selector:
                  description: nodeSelector for the AWX pods
                  type: string
                tower_tolerations:
                  description: node tolerations for the AWX pods
                  type: string
                tower_image:
                  description: Registry path to the application container to use
                  type: string
                tower_image_version:
                  description: Application container image version to use
                  type: string
                tower_ee_images:
                  description: Registry path to the Execution Environment container to use
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      image:
                        type: string
                tower_image_pull_policy:
                  description: The image pull policy
                  type: string
                  default: IfNotPresent
                  enum:
                    - Always
                    - always
                    - Never
                    - never
                    - IfNotPresent
                    - ifnotpresent
                tower_image_pull_secret:
                  description: The image pull secret
                  type: string
                tower_task_resource_requirements:
                  description: Resource requirements for the task container
                  properties:
                    requests:
                      properties:
                        cpu:
                          type: string
                        memory:
                          type: string
                        storage:
                          type: string
                      type: object
                    limits:
                      properties:
                        cpu:
                          type: string
                        memory:
                          type: string
                        storage:
                          type: string
                      type: object
                  type: object
                tower_web_resource_requirements:
                  description: Resource requirements for the web container
                  properties:
                    requests:
                      properties:
                        cpu:
                          type: string
                        memory:
                          type: string
                        storage:
                          type: string
                      type: object
                    limits:
                      properties:
                        cpu:
                          type: string
                        memory:
                          type: string
                        storage:
                          type: string
                      type: object
                  type: object
                tower_replicas:
                  description: Number of instance replicas
                  type: integer
                  default: 1
                  format: int32
                tower_garbage_collect_secrets:
                  description: Whether or not to remove secrets upon instance removal
                  default: false
                  type: boolean
                tower_create_preload_data:
                  description: Whether or not to preload data upon Tower instance creation
                  default: true
                  type: boolean
                tower_task_args:
                  type: array
                  items:
                    type: string
                tower_task_command:
                  type: array
                  items:
                    type: string
                tower_web_args:
                  type: array
                  items:
                    type: string
                tower_web_command:
                  type: array
                  items:
                    type: string
                tower_task_extra_env:
                  type: string
                tower_web_extra_env:
                  type: string
                tower_ee_extra_volume_mounts:
                  description: Specify volume mounts to be added to Execution container
                  type: string
                tower_task_extra_volume_mounts:
                  description: Specify volume mounts to be added to Task container
                  type: string
                tower_web_extra_volume_mounts:
                  description: Specify volume mounts to be added to the Web container
                  type: string
                tower_redis_image:
                  description: Registry path to the redis container to use
                  type: string
                tower_redis_image_version:
                  description: Redis container image version to use
                  type: string
                tower_postgres_image:
                  description: Registry path to the PostgreSQL container to use
                  type: string
                tower_postgres_image_version:
                  description: PostgreSQL container image version to use
                  type: string
                tower_postgres_selector:
                  description: nodeSelector for the Postgres pods
                  type: string
                tower_postgres_tolerations:
                  description: node tolerations for the Postgres pods
                  type: string
                tower_postgres_storage_requirements:
                  description: Storage requirements for the PostgreSQL container
                  properties:
                    requests:
                      properties:
                        storage:
                          type: string
                      type: object
                    limits:
                      properties:
                        storage:
                          type: string
                      type: object
                  type: object
                tower_postgres_resource_requirements:
                  description: Resource requirements for the PostgreSQL container
                  properties:
                    requests:
                      properties:
                        cpu:
                          type: string
                        memory:
                          type: string
                      type: object
                    limits:
                      properties:
                        cpu:
                          type: string
                        memory:
                          type: string
                      type: object
                  type: object
                tower_postgres_storage_class:
                  description: Storage class to use for the PostgreSQL PVC
                  type: string
                tower_postgres_data_path:
                  description: Path where the PostgreSQL data are located
                  type: string
                ca_trust_bundle:
                  description: Path where the trusted CA bundle is available
                  type: string
                development_mode:
                  description: If the deployment should be done in development mode
                  type: boolean
                ldap_cacert_secret:
                  description: Secret where can be found the LDAP trusted Certificate Authority Bundle
                  type: string
                tower_projects_persistence:
                  description: Whether or not the /var/lib/projects directory will be persistent
                  default: false
                  type: boolean
                tower_projects_use_existing_claim:
                  description: Using existing PersistentVolumeClaim
                  type: string
                  enum:
                    - _Yes_
                    - _No_
                tower_projects_existing_claim:
                  description: PersistentVolumeClaim to mount /var/lib/projects directory
                  type: string
                tower_projects_storage_class:
                  description: Storage class for the /var/lib/projects PersistentVolumeClaim
                  type: string
                tower_projects_storage_size:
                  description: Size for the /var/lib/projects PersistentVolumeClaim
                  default: 8Gi
                  type: string
                tower_projects_storage_access_mode:
                  description: AccessMode for the /var/lib/projects PersistentVolumeClaim
                  default: ReadWriteMany
                  type: string
                extra_settings:
                  description: Extra settings to specify for the API
                  items:
                    properties:
                      setting:
                        type: string
                      value:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              properties:
                towerURL:
                  description: URL to access the deployed instance
                  type: string
                towerAdminUser:
                  description: Admin user of the deployed instance
                  type: string
                towerAdminPasswordSecret:
                  description: Admin password of the deployed instance
                  type: string
                towerMigratedFromSecret:
                  description: The secret used for migrating an old Tower.
                  type: string
                towerVersion:
                  description: Version of the deployed instance
                  type: string
                towerImage:
                  description: URL of the image used for the deployed instance
                  type: string
                conditions:
                  description: The resulting conditions when a Service Telemetry is instantiated
                  items:
                    properties:
                      status:
                        type: string
                      type:
                        type: string
                      reason:
                        type: string
                      lastTransitionTime:
                        type: string
                    type: object
                  type: array
              type: object
          type: object

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: null
  name: awx-operator
  namespace: awx
rules:
  - apiGroups:
      - route.openshift.io
    resources:
      - routes
      - routes/custom-host
    verbs:
      - '*'
  - apiGroups:
      - ""
      - "rbac.authorization.k8s.io"
    resources:
      - pods
      - services
      - services/finalizers
      - serviceaccounts
      - endpoints
      - persistentvolumeclaims
      - events
      - configmaps
      - secrets
      - roles
      - rolebindings
    verbs:
      - '*'
  - apiGroups:
      - apps
      - extensions
    resources:
      - deployments
      - daemonsets
      - replicasets
      - statefulsets
      - ingresses
    verbs:
      - '*'
  - apiGroups:
      - monitoring.coreos.com
    resources:
      - servicemonitors
    verbs:
      - get
      - create
  - apiGroups:
      - apps
    resourceNames:
      - awx-operator
    resources:
      - deployments/finalizers
    verbs:
      - update
  - apiGroups:
      - apps
    resources:
      - deployments/scale
      - statefulsets/scale
    verbs:
      - patch
  - apiGroups:
      - ""
    resources:
      - pods/exec
    verbs:
      - create
      - get
  - apiGroups:
      - apps
    resources:
      - replicasets
    verbs:
      - get
  - apiGroups:
      - awx.ansible.com
    resources:
      - '*'
    verbs:
      - '*'

---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: awx-operator
  namespace: awx
subjects:
  - kind: ServiceAccount
    name: awx-operator
    namespace: awx
roleRef:
  kind: ClusterRole
  name: awx-operator
  apiGroup: rbac.authorization.k8s.io

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: awx-operator
  namespace: awx

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: awx-operator
  namespace: awx
spec:
  replicas: 1
  selector:
    matchLabels:
      name: awx-operator
  template:
    metadata:
      labels:
        name: awx-operator
    spec:
      serviceAccountName: awx-operator
      containers:
        - name: awx-operator
          image: "quay.io/ansible/awx-operator:0.9.0"
          imagePullPolicy: "Always"
          volumeMounts:
            - mountPath: /tmp/ansible-operator/runner
              name: runner
          env:
            # Watch all namespaces (cluster-scoped).
            - name: WATCH_NAMESPACE
              value: ""
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: OPERATOR_NAME
              value: awx-operator
            - name: ANSIBLE_GATHERING
              value: explicit
          livenessProbe:
            httpGet:
              path: /healthz
              port: 6789
            initialDelaySeconds: 15
            periodSeconds: 20
      volumes:
        - name: runner
          emptyDir: {}