-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added controller for running ansible playbooks
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
Showing
18 changed files
with
1,886 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: {} |
Oops, something went wrong.