Skip to content

Commit

Permalink
Added controller for running ansible playbooks
Browse files Browse the repository at this point in the history
This addition should be flexible enough to run
ansible playbooks for testing popuses.
it is dependent on this patch
openstack-k8s-operators/tcib#182
  • Loading branch information
Ella Shulman authored and eshulman2 committed Jul 1, 2024
1 parent b68150c commit 45b958a
Show file tree
Hide file tree
Showing 18 changed files with 1,886 additions and 2 deletions.
288 changes: 288 additions & 0 deletions api/bases/test.openstack.org_ansibletests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,288 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.11.1
creationTimestamp: null
name: ansibletests.test.openstack.org
spec:
group: test.openstack.org
names:
kind: AnsibleTests
listKind: AnsibleTestsList
plural: ansibletests
singular: ansibletests
scope: Namespaced
versions:
- name: v1beta1
schema:
openAPIV3Schema:
description: AnsibleTestsStatus is the Schema for the AnsibleTestsStatus API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: AnsibleTestsSpec defines the desired state of AnsibleTests
properties:
ansibleCollections:
default: ""
description: AnsibleCollections - extra ansible collections to instal
in additionn to the ones exist in the requirements.yaml
type: string
ansibleExtraVars:
default: ""
description: AnsibleExtraVars - string to pass parameters to ansible
using
type: string
ansibleGitRepo:
default: ""
description: AnsibleGitRepo - git repo to clone into container
type: string
ansibleInventory:
default: ""
description: AnsibleInventory - string that contains the inventory
file content
type: string
ansiblePlaybookPath:
default: ""
description: AnsiblePlaybookPath - path to ansible playbook
type: string
ansibleVarFiles:
default: ""
description: AnsibleVarFiles - interface to create ansible var files
Those get added to the
type: string
backoffLimit:
default: 0
description: BackoffLimimt allows to define the maximum number of
retried executions (defaults to 6).
format: int32
type: integer
computeSSHKeySecretName:
default: dataplane-ansible-ssh-private-key-secret
description: ComputeSSHKeySecretName is the name of the k8s secret
that contains an ssh key for computes. The key is mounted to ~/.ssh/id_ecdsa
in the ansible pod
type: string
containerImage:
default: quay.io/podified-antelope-centos9/openstack-ansible-tests:current-podified
description: Container image for AnsibleTests
type: string
debug:
default: false
description: Run ansible playbook with -vvvv
type: boolean
extraMounts:
description: Extra configmaps for mounting in the pod.
items:
properties:
Name:
description: The name of an existing config map for mounting.
type: string
mountPath:
description: Path within the container at which the volume should
be mounted.
type: string
subPath:
default: ""
description: Config map subpath for mounting, defaults to configmap
root.
type: string
required:
- Name
- mountPath
- subPath
type: object
type: array
openStackConfigMap:
default: openstack-config
description: OpenStackConfigMap is the name of the ConfigMap containing
the clouds.yaml
type: string
openStackConfigSecret:
default: openstack-config-secret
description: OpenStackConfigSecret is the name of the Secret containing
the secure.yaml
type: string
storageClass:
default: local-storage
description: StorageClass used to create PVCs that store the logs
type: string
workflow:
description: A parameter that contains a workflow definition.
items:
properties:
ansibleCollections:
description: AnsibleCollections - extra ansible collections
to instal in additionn to the ones exist in the requirements.yaml
type: string
ansibleExtraVars:
description: AnsibleExtraVars - interface to pass parameters
to ansible using -e
type: string
ansibleGitRepo:
description: AnsibleGitRepo - git repo to clone into container
type: string
ansibleInventory:
description: AnsibleInventory - string that contains the inventory
file content
type: string
ansiblePlaybookPath:
description: AnsiblePlaybookPath - path to ansible playbook
type: string
ansibleVarFiles:
description: AnsibleVarFiles - interface to create ansible var
files Those get added to the service config dir in /etc/test_operator/<file>
and passed to the ansible command using -e @/etc/test_operator/<file>
type: string
backoffLimit:
description: BackoffLimimt allows to define the maximum number
of retried executions (defaults to 6).
format: int32
type: integer
computeSSHKeySecretName:
description: ComputeSSHKeySecretName is the name of the k8s
secret that contains an ssh key for computes. The key is mounted
to ~/.ssh/id_ecdsa in the ansible pod
type: string
containerImage:
description: Container image for AnsibleTests
type: string
debug:
description: Run ansible playbook with -vvvv
type: boolean
extraMounts:
description: Extra configmaps for mounting in the pod
items:
properties:
Name:
description: The name of an existing config map for mounting.
type: string
mountPath:
description: Path within the container at which the volume
should be mounted.
type: string
subPath:
default: ""
description: Config map subpath for mounting, defaults
to configmap root.
type: string
required:
- Name
- mountPath
- subPath
type: object
type: array
openStackConfigMap:
description: OpenStackConfigMap is the name of the ConfigMap
containing the clouds.yaml
type: string
openStackConfigSecret:
description: OpenStackConfigSecret is the name of the Secret
containing the secure.yaml
type: string
stepName:
description: Name of a workflow step. The step name will be
used for example to create a logs directory.
type: string
storageClass:
description: StorageClass used to create PVCs that store the
logs
type: string
workloadSSHKeySecretName:
description: WorkloadSSHKeySecretName is the name of the k8s
secret that contains an ssh key for the ansible workload.
The key is mounted to ~/test_keypair.key in the ansible pod
type: string
required:
- stepName
type: object
type: array
workloadSSHKeySecretName:
default: ""
description: WorkloadSSHKeySecretName is the name of the k8s secret
that contains an ssh key for the ansible workload. The key is mounted
to ~/test_keypair.key in the ansible pod
type: string
required:
- computeSSHKeySecretName
- openStackConfigMap
- openStackConfigSecret
- storageClass
- workloadSSHKeySecretName
type: object
status:
description: AnsibleTestsStatus defines the observed state of AnsibleTests
properties:
conditions:
description: Conditions
items:
description: Condition defines an observation of a API resource
operational state.
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another. This should be when the underlying condition changed.
If that is not known, then using the time when the API field
changed is acceptable.
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition.
type: string
reason:
description: The reason for the condition's last transition
in CamelCase.
type: string
severity:
description: Severity provides a classification of Reason code,
so the current situation is immediately understandable and
could act accordingly. It is meant for situations where Status=False
and it should be indicated if it is just informational, warning
(next reconciliation might fix it) or an error (e.g. DB create
issue and no actions to automatically resolve the issue can/should
be done). For conditions where Status=Unknown or Status=True
the Severity should be SeverityNone.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: Type of condition in CamelCase.
type: string
required:
- lastTransitionTime
- status
- type
type: object
type: array
hash:
additionalProperties:
type: string
description: Map of hashes to track e.g. job status
type: object
networkAttachments:
additionalProperties:
items:
type: string
type: array
description: NetworkAttachments status of the deployment pods
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}
Loading

0 comments on commit 45b958a

Please sign in to comment.