Wer es selbst mal ausprobieren möchte, kann den GPT unter folgendem Link erreichen: https://chat.openai.com/g/g-CcYaJbKYH-ansible-architect
ChatGPT bietet die Möglichkeit, eigene Custom-GPTs zu erstellen, welche einen bestimmten Auftrag haben und sich somit immer gleich verhalten sollen. (vgl. https://openai.com/blog/introducing-gpts).
Da ich aktuell sehr viel mit Ansible Automatisiere, habe ich mir einen Ansible GPT Assistenten gebaut, der mir einen konsistenten Output an Ansible Rollen ausgibt.
Ich gebe ChatGPT eine Anleitung im analogen Stil. Als Antwort erwarte ich Copy&Paste Rollen, Templates und host_vars.
Umeinen neuen GPT zu erstellen, klicke ich im eingeloggten Zustand auf meinen Profil-Badge und auf My GPTs.
Danach habe ich die Möglichkeit, aus bereits bestehenden GPTs zu wählen oder einen neuen GPT anzulegen. Einen GPT Store gibt es aktuell noch nicht, dieser soll aber bald kommen.
Ich entscheide mich dazu, einen neuen GPT anzulegen, nämlich meinen Ansible Architect GPT.
Initiiert habe ich dies mit dem folgenden Prompt. Die Erstellung eines GPTs ist geführt, ich bekomme also laufend Input von ChatGPT.
Prompt: I want create Ansible roles from user prompts. I want the GPT to follow ansible lint rules.
ChatGPT schlägt einen Namen vor und auch ein Profilbild.
Auch macht es bereits Vorschläge, was wohl hilfreich für diesen GPT sein könnte.
Irgendwann ist die Fragerunde dann beendet und ich darf den frisch erstellten GPT ausprobieren.
ChatGPT ist sehr redselig und antwortet mir auf meine Prompt mit einer ausführlichen Beschreibung. Dies habe habe ich in der Konfiguration des GPT noch einmal ausdrücklich deaktiviert.
Prompt: Keep your messages short and focus on copy&pastable code. Only give description if the user asks you.
Auch benutzt ChatGPT gerne lineinfile
und blockinfile
. Ich bevorzuge jedoch die Erstellung von Templates mit Jinja.
Prompt: prioritizes the use of Ansible’s template module over blockinfile or lineinfile
Als einfaches Beispiel möchte ich von meiner GPT nun eine Ansible Rolle zur Installation von Docker bekommen. Dazu kopiere ich einfach die Anleitung von https://docs.docker.com/engine/install/ubuntu/ in den Prompt.
To automate the Docker installation process using Ansible, create an Ansible role with tasks that replicate the steps provided. Below is an example of how this can be structured in Ansible:
- Create Role Directories:
mkdir -p docker-install/{tasks,templates,vars}
- Variables File (
docker-install/vars/main.yml
: This file will contain variables such as the Docker GPG key URL and the Docker repository URL.
docker_gpg_key_url: "https://download.docker.com/linux/ubuntu/gpg"docker_repo_url: "deb [arch={{ ansible_architecture }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release | lower }} stable"
- Tasks File (
docker-install/tasks/main.yml
: This file contains the tasks that need to be executed.
- name: Update apt and install prerequisitesansible.builtin.apt:name:- ca-certificates- curl- gnupgupdate_cache: yes- name: Create directory for Docker GPG keyansible.builtin.file:path: /etc/apt/keyringsstate: directorymode: '0755'- name: Add Docker's official GPG keyansible.builtin.get_url:url: "{{ docker_gpg_key_url }}"dest: "/etc/apt/keyrings/docker.gpg"mode: 'a+r'- name: Add Docker repositoryansible.builtin.template:src: docker.list.j2dest: /etc/apt/sources.list.d/docker.listnotify: Update apt cache- name: Install Docker packagesansible.builtin.apt:name:- docker-ce- docker-ce-cli- containerd.io- docker-buildx-plugin- docker-compose-pluginstate: latestnotify: Verify Docker Installation- name: Verify Docker Installationansible.builtin.command:cmd: docker run hello-worldregister: docker_test_outputchanged_when: false- debug:var: docker_test_output.stdout_lines
- Template File (
docker-install/templates/docker.list.j2
: This file is a Jinja2 template for the Docker repository source list.
{{ docker_repo_url }}
- Handlers File (
docker-install/handlers/main.yml
: This file will contain handlers to update the apt cache and verify Docker installation.
- name: Update apt cacheansible.builtin.apt:update_cache: yes- name: Verify Docker Installationansible.builtin.command:cmd: docker run hello-world
- Using the Role: In your playbook, include the role as follows:
- hosts: allroles:- docker-install
This Ansible role will set up the Docker repository and install Docker on the target machine(s, mimicking the manual steps you’ve outlined. Remember to adjust the variables as needed for your specific environment.
Die Möglichkeit, sich kleine Assistenten zu konfigurieren, die dann auch hoffentlich immer einem bestimmten Regelsatz folgen, finde ich sehr charmant.
In der Vergangenheit habe ich schon öfters mit Ansible und ChatGPT herumexperimentiert. Da der Output jedoch nie wirklich konsistent war, musste ich immer sehr viel nacharbeiten. Ich werde in einigen Monaten ein Update in diesem Artikel veröffentlichen und schauen, wie sich dieser GPT im Langzeittest macht.
Wer es selbst mal ausprobieren möchte, kann den GPT unter folgendem Link erreichen: https://chat.openai.com/g/g-CcYaJbKYH-ansible-architect
Quick Links