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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffb24a7c187670d8b487b17190190ef63c15f9df2c8e340becb40935d07c1a65
|
|
| MD5 |
117a9775d2cd62f865f7682d26a942e6
|
|
| BLAKE2b-256 |
e6dd61a19647883e03bcc2687df7d0bcb02f92fbc13f81fb323eb1f36a75ce16
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a7f1b036b002eca9f89067a3ca92473afe77a47cf8f61caf350d676a32fb860
|
|
| MD5 |
5ea07f5cb10a78a24e1f2720f036cbba
|
|
| BLAKE2b-256 |
f216f0cb2d84aadb5a4c8ad4dcae891f063c3d1d57ec80785351f2489ff31a93
|