Nota

Este complemento es parte del colección kubernetes.core (versión 1.1.1).

Para instalarlo use: ansible-galaxy collection install kubernetes.core.

Para usarlo en un libro de jugadas, especifique: kubernetes.core.k8s.

  • Sinopsis
  • Requisitos
  • Parámetros
  • Notas
  • Ejemplos de
  • Valores devueltos

Sinopsis

  • Utilice el cliente OpenShift Python para realizar operaciones CRUD en objetos K8s.
  • Pase la definición del objeto desde un archivo fuente o en línea. Vea ejemplos para leer archivos y usar plantillas Jinja o archivos cifrados en bóveda.
  • Acceso a la gama completa de API de K8.
  • Utilizar el kubernetes.core.k8s_info módulo para obtener una lista de elementos sobre un objeto de tipo kind
  • Autentíquese mediante un archivo de configuración, certificados, contraseña o token.
  • Admite el modo de verificación.

Nota

Este módulo tiene un correspondiente complemento de acción.

Requisitos

Los siguientes requisitos son necesarios en el host que ejecuta este módulo.

  • pitón> = 2.7
  • desplazamiento abierto> = 0,6
  • PyYAML> = 3,11

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
Clave APIcuerda Token utilizado para autenticarse con la API. También se puede especificar mediante la variable de entorno K8S_AUTH_API_KEY.
api_versioncuerda Defecto:
“v1”
Úselo para especificar la versión de API. Úselo para crear, eliminar o descubrir un objeto sin proporcionar una definición de recurso completa. Úselo junto con amable, nombre, y espacio de nombres para identificar un objeto específico. definición de recurso se proporciona, el apiVersion valor de la resource_definition anulará esta opción.
alias: api, versión
append_hashbooleano
    Opciones:

  • no
Si agregar un hash al nombre de un recurso con fines de inmutabilidad Se aplica solo a los recursos ConfigMap y Secret El parámetro se ignorará silenciosamente para otros tipos de recursos La definición completa de un objeto es necesaria para generar el hash; esto significa que eliminar un objeto creado con append_hash solo lo hará. funciona si se pasa el mismo objeto con state = ausente (alternativamente, solo use state = ausente con el nombre que incluye el hash generado y append_hash = no) Requiere openshift> = 0.7.2
solicitarbooleano
    Opciones:

  • no
apply compara la definición de recurso deseada con la definición de recurso proporcionada anteriormente, ignorando las propiedades que se generan automáticamenteapply funciona mejor con Servicios que ‘force = yes’ Requiere openshift> = 0.9.2 mutuamente exclusivo con merge_type
ca_certsendero Ruta a un certificado de CA utilizado para autenticarse con la API. Se debe proporcionar la cadena de certificados completa para evitar errores de validación de certificados. También se puede especificar mediante la variable de entorno K8S_AUTH_SSL_CA_CERT.
alias: ssl_ca_cert
client_certsendero Ruta a un certificado utilizado para autenticarse con la API. También se puede especificar mediante la variable de entorno K8S_AUTH_CERT_FILE.
alias: cert_file
clave_clientesendero Ruta a un archivo de clave utilizado para autenticarse con la API. También se puede especificar mediante la variable de entorno K8S_AUTH_KEY_FILE.
alias: key_file
contextocuerda El nombre de un contexto que se encuentra en el archivo de configuración. También se puede especificar mediante la variable de entorno K8S_AUTH_CONTEXT.
fuerzabooleano
    Opciones:

  • no
Si se establece en yes, y estado es present, se reemplazará un objeto existente.
anfitrióncuerda Proporcione una URL para acceder a la API. También se puede especificar mediante la variable de entorno K8S_AUTH_HOST.
amablecuerda Úselo para especificar un modelo de objeto. Úselo para crear, eliminar o descubrir un objeto sin proporcionar una definición de recurso completa. Úselo junto con api_version, nombre, y espacio de nombres para identificar un objeto específico. definición de recurso se proporciona, el amable valor de la resource_definition anulará esta opción.
kubeconfigsendero Ruta a un archivo de configuración de Kubernetes existente. Si no se proporciona, y no se proporcionan otras opciones de conexión, el cliente openshift intentará cargar el archivo de configuración predeterminado desde ~ / .kube / config.json. También se puede especificar mediante la variable de entorno K8S_AUTH_KUBECONFIG.
merge_typelista / elementos = cadena
    Opciones:

  • json
  • unir
  • fusión estratégica
Si se debe anular el enfoque de combinación de parches predeterminado con un tipo específico. Por defecto, normalmente se utilizará la fusión estratégica. Por ejemplo, las definiciones de recursos personalizadas normalmente no se pueden actualizar mediante la fusión estratégica habitual. Es posible que desee utilizar merge si ve “el formato de parche de combinación estratégica no es compatible”, consulte https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deploymentRequiere openshift> = 0.6.2 Si se proporciona más de un merge_type, los merge_types se probarán en orden Si openshift> = 0.6.2, este valor predeterminado es ['strategic-merge', 'merge'], que es ideal para usar los mismos parámetros en tipos de recursos que combinan recursos personalizados y recursos integrados. Para openshift <0.6.2, el valor predeterminado es simplemente strategic-merge.mutually exclusivo con apply
nombrecuerda Úselo para especificar un nombre de objeto. Úselo para crear, eliminar o descubrir un objeto sin proporcionar una definición de recurso completa. Úselo junto con api_version, amable y espacio de nombres para identificar un objeto específico. definición de recurso se proporciona, el metadata.name valor de la resource_definition anulará esta opción.
espacio de nombrescuerda Úselo para especificar un espacio de nombres de objeto. Útil al crear, eliminar o descubrir un objeto sin proporcionar una definición de recurso completa. api_version, amable, y nombre para identificar un objeto específico. definición de recurso se proporciona, el metadata.namespace valor de la resource_definition anulará esta opción.
contraseñacuerda Proporcione una contraseña para autenticarse con la API. También se puede especificar a través de la variable de entorno K8S_AUTH_PASSWORD. Lea la descripción de la username opción para una discusión de cuándo esta opción es aplicable.
persist_configbooleano
    Opciones:

  • no
Si guardar o no los tokens de actualización de configuración de kube. También se puede especificar a través de la variable de entorno K8S_AUTH_PERSIST_CONFIG. Cuando el contexto k8s usa credenciales de usuario con tokens de actualización (como oidc o gke / gcloud auth), la biblioteca cliente de python k8s actualiza el token, pero no se guarda de manera predeterminada. Por lo tanto, el token de actualización anterior puede caducar y la siguiente autenticación puede fallar. Establecer este indicador en verdadero le dirá al cliente de k8s python que guarde el nuevo token de actualización en el archivo de configuración de kube. Por defecto es falso. Tenga en cuenta que la versión actual de la biblioteca cliente de k8s python no admite la configuración de este indicador en Verdadero todavía. La solución para esta biblioteca de Python k8s está aquí: https://github.com/kubernetes-client/python-base/pull/169
apoderadocuerda La URL de un proxy HTTP que se utilizará para la conexión. También se puede especificar a través de la variable de entorno K8S_AUTH_PROXY. Tenga en cuenta que este módulo no recoge la configuración de proxy típica del entorno (por ejemplo, HTTP_PROXY).
resource_definitioncuerda Proporcione una definición YAML válida (ya sea como una cadena, lista o diccionario) para un objeto al crearlo o actualizarlo. amable, api_version, nombre, y espacio de nombres se sobrescribirán con los valores correspondientes que se encuentran en el resource_definition.
alias: definición, en línea
srcsendero Proporcione una ruta a un archivo que contenga una definición YAML válida de un objeto u objetos que se crearán o actualizarán. Mutuamente excluyente con resource_definition. NOTA: amable, api_version, nombre, y espacio de nombres se sobrescribirán con los valores correspondientes que se encuentran en la configuración leída desde el src archivo. Lee del sistema de archivos local. Para leer desde el sistema de archivos del controlador Ansible, incluidos los archivos almacenados, use el complemento de búsqueda de archivos o el complemento de búsqueda de plantillas, combinado con el filtro from_yaml, y pase el resultado a resource_definition. Consulte los ejemplos a continuación. plantilla en caso de k8s módulo.
estadocuerda
    Opciones:

  • ausente
  • regalo
Determina si se debe crear, parchear o eliminar un objeto. Cuando se establece en present, se creará un objeto, si aún no existe. Si se establece en absent, se eliminará un objeto existente. Si se establece en present, se aplicará un parche a un objeto existente, si sus atributos difieren de los especificados mediante resource_definition o src.
plantillacrudo Proporcione un archivo de definición de plantilla YAML válido para un objeto al crearlo o actualizarlo. El valor se puede proporcionar como una cadena o diccionario. Mutuamente exclusivo con src y resource_definitionLos archivos de plantilla deben estar presentes en el sistema de archivos del controlador Ansible. Se pueden especificar parámetros adicionales usando el diccionario. Parámetros adicionales válidos –newline_sequence (str): especifique la secuencia de nueva línea que se utilizará para los archivos de plantillas. las opciones válidas son ” n”, ” r”, ” r n”. Valor predeterminado ” n”.block_start_string (str): la cadena que marca el comienzo de un bloque. Valor por defecto “%”.block_end_string (str): la cadena que marca el final de un bloque. Valor por defecto “%”.variable_start_string (str): la cadena que marca el comienzo de una declaración de impresión. Valor por defecto “”.variable_end_string (str): la cadena que marca el final de una declaración impresa. Valor por defecto “”.trim_blocks (bool): determina cuándo se deben eliminar las nuevas líneas de los bloques. Cuando se establece en yes la primera línea nueva después de eliminar un bloque (¡bloque, no etiqueta variable!). El valor predeterminado es verdadero.lstrip_blocks (bool): determina cuándo se deben eliminar los espacios iniciales y las pestañas. Cuando se establece en yes los espacios iniciales y las tabulaciones se eliminan desde el principio de una línea hasta un bloque. Esta funcionalidad requiere Jinja 2.7 o más reciente. El valor predeterminado es falso.
nombre de usuariocuerda Proporcione un nombre de usuario para autenticarse con la API. También se puede especificar a través de la variable de entorno K8S_AUTH_USERNAME. Tenga en cuenta que esto solo funciona con clústeres configurados para usar HTTP Basic Auth. Si su clúster tiene una forma diferente de autenticación (por ejemplo, OAuth2 en OpenShift), esta opción no funcionará como se esperaba y debe buscar en la k8s_auth módulo, ya que podría hacer lo que necesita.
validardiccionario cómo (en todo caso) validar la definición de recurso con el esquema de Kubernetes. Requiere el módulo de Python kubernetes-validate y openshift> = 0.8.0
fail_on_errorbooleano
    Opciones:

  • no
si fallar en los errores de validación.
estrictobooleano
    Opciones:

  • no
si fallar al pasar propiedades inesperadas
versióncuerda versión de Kubernetes para validar. predeterminado a la versión del servidor de Kubernetes
validate_certsbooleano
    Opciones:

  • no
Si verificar o no los certificados SSL del servidor API. También se puede especificar mediante la variable de entorno K8S_AUTH_VERIFY_SSL.
alias: verify_ssl
Esperebooleano
    Opciones:

  • no
Ya sea para esperar a que ciertos tipos de recursos terminen en el estado deseado. De forma predeterminada, el módulo sale una vez que Kubernetes ha recibido la solicitud. state=present por Deployment, DaemonSet y Pod, y para state=absent para todos los tipos de recursos. Para los tipos de recursos sin una implementación, wait regresa inmediatamente a menos que wait_condition Está establecido.
condición_de_esperadiccionario Especifica una condición personalizada sobre el estado a esperar. wait no está establecido o está establecido en False.
razóncuerda El valor del campo de motivo en su condición deseada Por ejemplo, si un Deployment está en pausa, el Progressingtype tendrá el DeploymentPaused Las posibles razones de una condición son específicas de cada tipo de recurso en Kubernetes. Consulte la documentación de la API del campo de estado de un recurso determinado para ver las posibles opciones.
estadocuerda
    Opciones:

  • Cierto
  • Falso
  • Desconocido
El valor del campo de estado en la condición deseada. Por ejemplo, si un Deployment está en pausa, el Progressingtype tendrá el Unknown estado.
escribecuerda El tipo de condición por la que esperar. Por ejemplo, el Pod recurso establecerá el Ready condición (entre otras). Requerido si está especificando una wait_condition.Si se deja vacío, el wait_condition Los tipos posibles de una condición son específicos de cada tipo de recurso en Kubernetes. Consulte la documentación de la API del campo de estado de un recurso determinado para ver las posibles opciones.
espera_dormirentero Defecto:
5
Número de segundos para dormir entre controles.
wait_timeoutentero Defecto:
120
Cuánto tiempo en segundos esperar a que el recurso termine en el estado deseado. wait no está configurado.

Notas

Nota

  • Si su biblioteca OpenShift Python no es 0.9.0 o más reciente y está tratando de eliminar un elemento de una matriz / diccionario asociativo, por ejemplo, una etiqueta o una anotación, deberá establecer explícitamente el valor del elemento que se eliminará. null. Simplemente eliminar la entrada en el diccionario no la eliminará de openshift o kubernetes.
  • El cliente OpenShift Python envuelve el cliente Python de K8s, proporcionando acceso completo a todos los APIS y modelos disponibles en ambas plataformas. Para obtener detalles de la versión de API e información adicional, visite https://github.com/openshift/openshift-restclient-python
  • Para evitar errores de validación del certificado SSL cuando validate_certs es Cierto, la cadena de certificados completa para el servidor API debe proporcionarse a través de ca_cert o en el archivo kubeconfig.

Ejemplos de

-name: Create a k8s namespace
  kubernetes.core.k8s:name: testing
    api_version: v1
    kind: Namespace
    state: present

-name: Create a Service object from an inline definition
  kubernetes.core.k8s:state: present
    definition:apiVersion: v1
      kind: Service
      metadata:name: web
        namespace: testing
        labels:app: galaxy
          service: web
      spec:selector:app: galaxy
          service: web
        ports:-protocol: TCP
          targetPort:8000name: port-8000-tcp
          port:8000-name: Remove an existing Service object
  kubernetes.core.k8s:state: absent
    api_version: v1
    kind: Service
    namespace: testing
    name: web

# Passing the object definition from a file-name: Create a Deployment by reading the definition from a local file
  kubernetes.core.k8s:state: present
    src: /testing/deployment.yml

-name:>-
    Read definition file from the Ansible controller file system.
    If the definition file has been encrypted with Ansible Vault it will automatically be decrypted.
  kubernetes.core.k8s:state: present
    definition:" from_yaml "-name: Read definition template file from the Ansible controller file system
  kubernetes.core.k8s:state: present
    template:'/testing/deployment.j2'-name: Read definition template file from the Ansible controller file system that uses custom start/end strings
  kubernetes.core.k8s:state: present
    template:path:'/testing/deployment.j2'variable_start_string:'[['variable_end_string:']]'-name: fail on validation errors
  kubernetes.core.k8s:state: present
    definition:" lookup('template', '/testing/deployment.yml') "validate:fail_on_error: yes

-name: warn on validation errors, check for unexpected properties
  kubernetes.core.k8s:state: present
    definition:" from_yaml "validate:fail_on_error: no
      strict: yes

Valores devueltos

Los valores de retorno comunes están documentados aquí, los siguientes son los campos exclusivos de este módulo:

Llave Devuelto Descripción
resultadocomplejo éxito El objeto creado, parcheado o presente de otro modo. Estará vacío en el caso de una eliminación.
api_versioncuerda éxito El esquema versionado de esta representación de un objeto.
duraciónentero cuando wait es verdad tiempo transcurrido de la tarea en segundos
Muestra:48
elementoslista / elementos = cadena cuando resource_definition o src contiene una lista de objetos Se devuelve solo cuando se pasan varios documentos yaml a src o resource_definition
amablecuerda éxito Representa el recurso REST que representa este objeto.
metadatoscomplejo éxito Metadatos de objeto estándar. Incluye nombre, espacio de nombres, anotaciones, etiquetas, etc.
Especificacionescomplejo éxito Atributos específicos del objeto. Variará según el api_version y amable.
estadocomplejo éxito Detalles del estado actual del objeto.

Autores

  • Chris Houseknecht (@chouseknecht)
  • Fabian von Feilitzsch (@fabianvf)