Translate

jueves, 20 de mayo de 2021

Git: Mostrar los archivos modificados en tu último commit

    


Hoy traemos la típica funcionalidad que siempre se nos olvida y la traigo aqui como recordatorio, el caso de uso es el típico que estoy trabajando en una rama y tengo que cambiar a otra para ponerme con otra cosa urgente.

Podríamos usar el stash, pero muy sucio tendría que estar el código para usarlo, yo prefiero hacer un commit y dejar la rama limpia y cambiarme a trabajar con la rama urgente.

git commit -m "cambios parciales"

git checkout miRamaUrgente

Después cuando vuelves a la rama original después de varios días o simplmente porque quieres ver los archivos modificados porque no te acordabas o simplemente porque quieres ver lo que ha modificado algún otro compañero.

 

git checkout miRamaOriginal

git log --name-only

Si quiero sólo pero último commit

git log -1 --name-only

martes, 11 de mayo de 2021

Azure: Start / Stop AKS Cluster con API, ansible y CLI


No hace mucho Microsoft ha permitido la opción de parar los AKS, esta era una funcionalidad que se echaba mucho de menos porque una vez levantado un AKS ya no se podía para y seguía costando dinero mes a mes y sólo teníamos 2 opciones para no tener tanto coste a final de mes.


  • Destruir del aks
  • Modificar el número de nodos y/o la capacidad de las máquinas.

Pero con esta nueva opción podemos parar el AKS entero y mantener la configuración que tenemos del mismo sin que nos cueste dinero. 

Esta opción no está disponible a través del portal las opciones que tenemos son las siguientes:

  • 1 .  De manera manual trabajando con AZ CLI, para ello tienes que tener instalado la versión de AZ CLI de tu sistema operativo, ya sea windows o linux. Yo trabajo con linux y actualmente estoy usando la version azure-cli 2.21.0
    • az login: introducir las credenciales en el navegador
    • az account list: para optener el listado las subscriones disponibles
    • az account set -s [subcription_id o subscription_name] para situarnos en la subscripción del aks
    • Parar AKS: az aks stop --name myAKSCluster --resource-group myResourceGroup --subscription mySubscription
    • Arrancar AKS: az aks start --name myAKSCluster --resource-group myResourceGroup --subscription mySubscription
    • Comprobar el estado de AKS:  az aks show --name myAKSCluster --resource-group myResourceGroup --subscription mySubscription
    • El campo a revisar es powerState
--
  "powerState": {
    "code": "Stopped"
  },
--

                Nota: Esta opción puede ejecutarla un usario nominal  

  • 2. A mi que me gusta más tener procesos automatizados prefiero usar ansible para automatizar esta tipo de llamadas a la API en vez de usar los comandos desde la consola. Para ello necesitamos un appregistration con permisos RBAC sobre el resource group (RG) o sobre el propio AKS y lo haremos dos sencilos pasos:
    • Generar el token de acceso en base a las credenciales en base al appregistration (service principal) que tiene acceso al recurso de la subscripción.
- name: Get token in order to obtain  aks credentials for admin cluster user
  uri:
    url: "https://login.microsoftonline.com/{{ TENANT }}/oauth2/token"
    method: POST
    body_format: form-urlencoded
    return_content: true
    headers:
      Content-Type: application/x-www-form-urlencoded
    body:
      grant_type: client_credentials
      client_id: "{{ CLIENT_ID }}"
      client_secret: "{{ CLIENT_SECRET }}"
      resource: 'https://management.azure.com/'
  register: _response
  failed_when: _response.json is not defined or 'access_token' not in _response.json

- name: set token
  set_fact:
    _api_manager_token: "{{ _response.json.access_token }}"
  failed_when: _api_manager_token is not defined

--
    • Llamada a la API de AKS para parar/arracar el cluster con las opciones de power_action = stop o power_action = start

- name: "Power {{ power_action }} the aks {{ aks_name }}"
  uri:
    url: "https://management.azure.com/subscriptions/{{ aks_subscription_id }}
          /resourceGroups/{{ aks_resource_group }}/providers/Microsoft.ContainerService
          /managedClusters/{{ aks_name }}/{{ power_action }}?api-version=2020-09-01"
    body_format: json
    method: POST
    return_content: true
    status_code: [200, 202]
    headers:
      Content-Type: application/json
      Authorization: "Bearer {{ _api_manager_token }}"
    body:
  register: _api_response

- name: "Wait until the {{ aks_name }} is {{ power_action }}"
  uri:
    url: "{{ _api_response.azure_asyncoperation }}"
    method: GET
    status_code: [200]
    return_content: true
    headers:
      Content-Type: application/json
      SubscriptionId: "{{ aks_subscription_id }}"
      Authorization: "Bearer {{ _api_manager_token }}"
  until: _info.json.status == "Succeeded"
  retries: 50
  delay: 30
  register: _info
  failed_when: ( _info.status != 200 or _info.json is not defined or 'status' not in _info.json )


--

Referencias:

AKS stop API

AKS start API

AZ CLI start/stop