Skip to main content

Ansible-aisnippet Generate ansible tasks with ChatGPT.

Project description

ansible-aisnippet

Features

Quickstart

Install python package

Install the latest version ansible-aisnippet with pip or pipx

pip install ansible-aisnippet

Usage

You must have an openai.api_key. You can create it from openai website.

export  OPENAI_KEY=<your token>

ansible-aisnippet --help

 Usage: ansible-aisnippet [OPTIONS] COMMAND [ARGS]...

╭─ Options ─────────────────────────────────────────────────────╮
│ --version             -v        Show the application's        │
│                                 version and exit.             │
│ --install-completion            Install completion for the    │
│                                 current shell.                │
│ --show-completion               Show completion for the       │
│                                 current shell, to copy it or  │
│                                 customize the installation.   │
│ --help                          Show this message and exit.   │
╰───────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────╮
│ generate  Ask ChatGPT to write an ansible task using a        │
│           template                                            │
╰───────────────────────────────────────────────────────────────╯

Generate task(s)

ansible-aisnippet can generate an or several ansible task from a description or a filetasks.

ansible-aisnippet generate --help

 Usage: ansible-aisnippet generate [OPTIONS] [TEXT]

 Ask ChatGPT to write an ansible task using a template

╭─ Arguments ──────────────────────────────────────────────────────────────────────╮
│   text      [TEXT]  A description of task to get [default: Install package htop] │
╰──────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────╮
│ --verbose     -v            verbose mode                                         │
│ --filetasks   -f      PATH  [default: None]                                      │
│ --outputfile  -o      PATH  [default: None]                                      │
│ --playbook    -p            Create a playbook                                    │
│ --help                      Show this message and exit.                          │
╰──────────────────────────────────────────────────────────────────────────────────╯

Generate a task

export  OPENAI_KEY=<your token>

ansible-aisnippet generate "execute command to start /opt/application/start.sh create /var/run/test.lock"
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.686 seconds.
Prefix dict has been built successfully.
name: Execute command to start /opt/application/start.sh create /var/run/test.lock

ansible.builtin.command:
  chdir: /opt/application
  cmd: ./start.sh && touch /var/run/test.lock
  creates: /var/run/test.lock
  removes: ''

Generate severals tasks

ansible-aisnippet can generate severals tasks from a file. The file is a yaml file which contains a list of tasks and blocks

Ex:

- task: Install package htop, nginx and net-tools with generic module
- task: Copy file from local file /tmp/toto to remote /tmp/titi set mode 0666 owner bob group www
  register: test
- name: A block
  when: test.rc == 0
  block:
    - task: wait for port 6300 on localhost timeout 25
  rescue:
    - task: Execute command /opt/application/start.sh creates /var/run/test.lock
- task: Download file from https://tmp.io/test/ set mode 0640 and force true

This file produces this result :

export  OPENAI_KEY=<your token>

ansible-aisnippet generate -f test.yml -p
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.671 seconds.
Prefix dict has been built successfully.
Result:

- name: Playbook generated with chatgpt
  hosts: all
  gather_facts: true
  tasks:
  - name: Install package htop, nginx and net-tools
    ansible.builtin.yum:
      name:
      - htop
      - nginx
      - net-tools
      state: present
  - name: Copy file from local file /tmp/toto to remote /tmp/titi
    ansible.builtin.copy:
      src: /tmp/toto
      dest: /tmp/titi
      mode: '0666'
      owner: bob
      group: www
    register: test
  - name: A block
    when: test.rc == 0
    block:
    - name: Wait for port 6300 on localhost timeout 25
      ansible.builtin.wait_for:
        host: 127.0.0.1
        port: '6300'
        timeout: '25'
    rescue:
    - name: Execute command /opt/application/start.sh creates /var/run/test.lock
      ansible.builtin.command:
        chdir: /tmp/test
        cmd: /opt/application/start.sh
        creates: /var/run/test.lock
  - name: Download file from https://tmp.io/test/
    ansible.builtin.get_url:
      backup: false
      decompress: true
      dest: /tmp/test
      force: true
      group: root
      mode: '0640'
      owner: root
      timeout: '10'
      tmp_dest: /tmp/test
      url: https://tmp.io/test/
      validate_certs: true

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansible_aisnippet-0.1.2.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

ansible_aisnippet-0.1.2-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file ansible_aisnippet-0.1.2.tar.gz.

File metadata

  • Download URL: ansible_aisnippet-0.1.2.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.3 Linux/5.15.0-1035-azure

File hashes

Hashes for ansible_aisnippet-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ffb24a7c187670d8b487b17190190ef63c15f9df2c8e340becb40935d07c1a65
MD5 117a9775d2cd62f865f7682d26a942e6
BLAKE2b-256 e6dd61a19647883e03bcc2687df7d0bcb02f92fbc13f81fb323eb1f36a75ce16

See more details on using hashes here.

File details

Details for the file ansible_aisnippet-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ansible_aisnippet-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.3 Linux/5.15.0-1035-azure

File hashes

Hashes for ansible_aisnippet-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4a7f1b036b002eca9f89067a3ca92473afe77a47cf8f61caf350d676a32fb860
MD5 5ea07f5cb10a78a24e1f2720f036cbba
BLAKE2b-256 f216f0cb2d84aadb5a4c8ad4dcae891f063c3d1d57ec80785351f2489ff31a93

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page