es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reiniciar un grupo de instancias mediante la biblioteca de Google Cloud en Python.

No puedo encontrar ningún ejemplo de código o documentación relevante sobre la biblioteca de Python para Google Cloud.
Quiero reiniciar todos los VM de grupos de instancias gestionadas a través de una función de nube.
Para listar las instancias estoy utilizando algo como esto

import googleapiclient.discovery
def list_instances(compute, project, zone):
    result = compute.instances().list(project=project, zone=zone).execute()
    return result['items'] if 'items' in result else None

En el archivo de requerimientos tengo:

google-api-python-client==2.31.0
google-auth==2.3.3
google-auth-httplib2==0.1.0

Desde la línea de comandos es posible hacerlo a través del SDK ->
https://cloud.google.com/sdk/gcloud/reference/compute/instance-groups/managed/rolling-action/restart
Pero en Python no puedo escribir código alguno.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar las mismas llamadas a API en Python para reiniciar grupos de instancias administrados. Aquí hay un código de muestra para reiniciar todas las VM en un grupo de instancias administrado:

    import google.auth
    from google.auth.compute_engine import Credentials
    from googleapiclient.discovery import build
    
    # Establecer el ID del proyecto, la zona y el nombre del grupo de instancias
    proyecto = 'mi-proyecto'
    zona = 'us-central1-a'
    grupo_instancias = 'mi-grupo-de-instancias'
    
    # Crear el objeto de credenciales
    creds, _ = google.auth.default()
    creds = Credentials(creds)
    
    # Crear el objeto cliente de Compute Engine
    compute = build('compute', 'v1', credentials=creds)
    
    # Obtener la lista de instancias en el grupo de instancias
    instancias = list_instances(compute, proyecto, zona)
    urls_instancia = [i['selfLink'] for i in instancias]
    
    # Crear el cuerpo de solicitud
    cuerpo_solicitud = {
        'instances': urls_instancia,
        'rollingAction': {
            'actionType': 'RESTART'
        }
    }
    
    # Enviar la solicitud de reinicio escalonado
    solicitud = compute.instanceGroupManagers().rollingAction(
        project=proyecto,
        zone=zona,
        instanceGroupManager=grupo_instancias,
        body=cuerpo_solicitud
    )
    respuesta = solicitud.execute()
    print(respuesta)
    

    Asegúrate de reemplazar las variables proyecto, zona y grupo_instancias con tus propios valores. Este código asume que ya tienes una función para listar instancias utilizando la función list_instances que has proporcionado.

    Una vez que ejecutes este código, todas las instancias en el grupo de instancias administrado especificado se reiniciarán.

Comments are closed.