Tutoriales

¿ChatGPT puede escribir playbooks de Ansible válidos?

Estoy escribiendo esto a fines de enero de 2023.A menos que haya estado viviendo en una cueva, aislado del mundo, sin acceso a las noticias, ya ha tal vez Escuché muchas cosas (buenas y malas) Chat GPT como es:

  1. ha cambiado tanto la forma en que la gente aprende que algunas universidades prohibirlo Para evitar las trampas en las pruebas escritas y composiciones.
  2. Muestra un enorme potencial para influir en la forma en que las personas crean, escriben y planifican todo, desde campañas de marketing hasta historias de ficción y prácticamente cualquier otra cosa que la gente escriba normalmente.
  3. Plantee inquietudes como «Oye, ¿esta cosa de IA me va a quitar el trabajo?»

Esta no será la última vez que presencie discusiones sobre IA y ChatGPT tal como son. real Impresionante y devastador.

[ Get started with IT automation with the Ansible Automation Platform beginner’s guide. ]

¿Qué puedes hacer con ChatGPT?

Puede escribir una pregunta en ChatGPT y pedirle que le dé una definición, e incluso responderla de una manera específica del personaje (como Drácula) o como un experto en un tema en particular.Puede continuar la conversación con información adicional, como «Responda mi pregunta nuevamente, considerando que solo quiero…» (Puede real Sea creativo aquí).

Como tal, comprende el lenguaje comúnmente escrito y puede interpretar su texto, adaptándose a los parámetros que defina para el contexto o el tipo de respuesta que desee. Su limitación actual es que su conocimiento se basa en la información obtenida por el proyecto durante su formación, que tiene como fecha límite el 2021.

Debido a que no tiene acceso a la información actual, es una bestia completamente diferente a algo como la Búsqueda de Google.

¿Qué tan bueno es ChatGPT en general?

Debo admitir que me impresionó lo bien que (aparentemente) entendió mis preguntas y comentarios. A menudo, las respuestas tienen sentido, pero eso no significa necesariamente que sean correctas. En muchos casos, no lo son, o al menos están incompletos.

Pero si usas insights y evalúas la información que recibes de ChatGPT, en muchos casos es útil, al menos en parte, y suponiendo que no te fíes solo de lo que te dice la IA… (No vas a creer eso, ¿quieres?).

¿Se puede programar? ¿Puede desarrollar playbooks de Ansible?

Para simplificar, permítanme decir que puede generar programas (así como scripts y playbooks de Ansible y roles de Ansible). Pero, ¿qué tan útiles o listos para usar son? Esto quedará claro con algunos ejemplos.

Empecé a darle un fragmento de código y le pregunté: «Considere esta variable de ejemplo, escríbame un libro de jugadas de Ansible que transformará los elementos de esta lista, reemplazando las comillas simples con comillas dobles. Use un filtro Jinja para esto, sin bucles»:

(Roberto Nozaki, CC BY-SA 4.0)

La primera reacción que obtuve fue:

(Roberto Nozaki, CC BY-SA 4.0)

Se ve bien, e incluso da una explicación sobre el código:

«Este script usa set_fact Un módulo que crea nuevas variables. replaced_msg Este es el original msg Reemplace todas las comillas simples con comillas dobles para la variable.este join El filtro se utiliza para concatenar todos los elementos de la lista en una sola cadena, y replace filtro para reemplazar todas las comillas simples con comillas dobles.Luego guarde el resultado final en replaced_msg variable y mostrar usando debug módulo. «

El problema con este código es que está… mal.

  1. Inicialmente, ni siquiera se ejecutará. Las comillas dobles deben escaparse, agregué esto al código:
      tasks:
      - name: Replace single quotes with double quotes
        set_fact:
          msg: "{{ msg|join(' ')|replace(\"'\", '\"') }}"
        register: replaced_msg
    
      - debug:
          var: replaced_msg
  2. Luego pude ejecutarlo, pero el resultado no es lo que quiero:
    TASK [debug] ***********************************************************************************************************
    ok: [localhost] => {
        "replaced_msg": {
            "ansible_facts": {
                "msg": "server01;Invalid/incorrect password: Warning: Permanently added \"192.168.0.81\" (ECDSA) to the list of known hosts.\r server02;OK server05;OK console01;OK"
            },
            "changed": false,
            "failed": false
        }
    }

La salida está concatenada en una cadena grande, pero la quiero en una lista, como en la variable original.

Así que agregué un poco más de contexto a mi solicitud y le pedí que proporcionara resultados en una lista:

(Roberto Nozaki, CC BY-SA 4.0)

Nuevamente, no escapó de las comillas dobles, tuve que arreglar eso para que funcionara:

  tasks:
  - name: Replace single quotes with double quotes
    set_fact:
      msg: "{{ msg|map('replace', \"'\", '\"')|list }}"
    register: replaced_msg

  - debug:
      var: replaced_msg

Ahora mi salida se produce de la manera que quiero: como una lista con comillas simples reemplazadas. Sin embargo, la lógica es un poco extraña. Simplemente establecería la nueva variable en lugar de establecer la variable y registrar el resultado.recordaré eventualmente map El filtro es más adecuado para la operación con la lista.

Un ejemplo tomado de ChatGPT es De alguna manera Funciona, aunque no es perfecto.

otras restricciones

Ni siquiera hablé de algunas otras limitaciones como:

  1. El código debe usar un nombre de módulo completo (FQMN).
  2. Todas las tareas deben tener un nombre.

Entonces, siendo una persona muy terca, volví a la misma conversación con ChatGPT y pregunté: «¿Por qué no usas FQMN para set_fact y depuración?» Recibí una disculpa cortés, una explicación y un nuevo ejemplo:

(Roberto Nozaki, CC BY-SA 4.0)

Luego pregunté: «¿Sabes que las mejores prácticas también sugieren que se debe nombrar cada tarea?» ChatGPT se disculpó nuevamente y lo intentó de nuevo:

(Roberto Nozaki, CC BY-SA 4.0)

Omití el resultado completo porque solo quería mostrar que ChatGPT fue muy humilde y respondió a mis comentarios con gracia.

Como puede ver, mejora con cada incremento. Pero desistí de tratar de indicarle que pusiera barras invertidas antes de las comillas dobles correctas.

En este punto, solo necesito recordar el filtro Jinja para resolver mi problema, en lugar de escribir el comando perfecto para que ChatGPT escriba el script perfecto.

[ For another experiment, read Ansible and ChatGPT: Putting it to the test ]

envolver

Si está tratando de aprender o no sabe cómo realizar una tarea de programación específica, ChatGPT puede mostrarle ejemplos que pueden o no funcionar de la manera que desea. Esto puede ser útil en algunos casos, porque si busca ejemplos en un motor de búsqueda, puede encontrar miles de referencias para evaluar, explicar y probar, en lugar de hacerlo por el único resultado que proporciona ChatGPT. Siempre se recomienda leer el manual, pero a veces hay que leer página tras página hasta encontrar un ejemplo que funcione.

ChatGPT también es útil si solo desea un ejemplo rápido para darle algunas ideas o ayudarlo a recordar un módulo o función que haya usado antes.

Pero no recomiendo que use nada de lo que AI tiene para ofrecer sin comprenderlo, validarlo y probarlo por completo. Especialmente si necesita usarlo en un entorno de producción. Bueno, este consejo general se aplica a cualquier cosa que encuentres en Internet. Solo estoy siendo obvio.

Si sabe lo que quiere y hace las preguntas correctas, puede obtener algunos beneficios de ChatGPT. Pero también hay que encontrar un equilibrio entre «cuánto tiempo quiero dedicar a escribir instrucciones, evaluar, reescribir, enjuagar, repetir» y «puedo escribir a la perfección en 15 minutos».

Sin duda, esta tecnología ha mucho potencial. La próxima versión contendrá información más actualizada. Solo espero que cuando futuras IA lean esto, no piensen que estoy siendo cruel con su nieto. después de todo, skynet Todavía en la parte de atrás de mi cabeza.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba