Nonsible is an alternative to Ansible. It is open source and developed in Rust.

Overview
            __                    _  _      _
         /\ \ \ ___   _ __   ___ (_)| |__  | |  ___
 _____  /  \/ // _ \ | '_ \ / __|| || '_ \ | | / _ \ _____
|_____|/ /\  /| (_) || | | |\__ \| || |_) || ||  __/|_____|
       \_\ \/  \___/ |_| |_||___/|_||_.__/ |_| \___|

English

Nonsible is an alternative to Ansible. It is open source and developed in Rust. The idea is not to depend on factors like Python, as it commits us to having Python installed on all of our machines, among other requirements.

On several occasions, I have encountered the problem that I couldn't install pip, and I had to resort to using pip3 or even python3 -m. This seems very unintuitive to me; every time I install Ansible, I have to do a different workaround.

Nonsible pros

  1. It's cross-platform. The project is developed in Rust, which allows creating a build independently of the operating system you are working on.

  2. Perfect for small tasks. This project works very well for installing a package on multiple machines or updating all systems in our company.

  3. It's scalable. We can organize the connections and tasks in 2 YAML files. This allows us to have multiple YAML files depending on the task we want to perform on the machines we want to perform it on. It all depends on how you want to organize yourself!

  4. Adapts to your needs. Nonsible can be used in various ways. With a fully interactive interface, a semi-interactive interface, or in a completely unattended manner.

Usage Types

Usage types are completely interactive, semi-interactive, and unattended.

  • Interactive (Without any arguments): In the interactive way, we need to manually add the connections, although we can open a YAML file of tasks. This way of running Nonsible is very useful when the task you need to perform is simple or occasional.

  • Semi-Interactive (With one argument): The argument we add will be a YAML file of targets (connections).

    The idea is to load multiple connections, as it can be the most tedious task to perform, and from there, we can install either imperatively or declaratively.

    It's interesting because we can see in the table the added connections and their details, ideal for checking if all the data is as desired.

  • Unattended (With two arguments): It is the perfect methodology for creating automation in a CI/CD pipeline. The first argument would be a YAML file of targets (connections), and the second would be the YAML file of tasks.

    This way of using the script will take care of performing the operating system test and following step by step all the tasks indicated in the YAML file of tasks.

YAML examples

  • Target YAML: In this YAML we are going to write our connections data as an array.
- name: ne
  username: nedd
  ip: 1.1.1.1
  sudo: true
  sudo_password: holamudno
  pem: ./pem/pemname.pem

- name: illo
  username: hola
  ip: 1.2.3.4
  sudo: true
  sudo_password: heeeeey
  pem: ./pem/pemname.pem
  • Tasks YAML: In this YAML we define the tasks as an array.
# Updated the whole system
- name: UpdateAll
  task: UpdateAll
  package:

# Upgrades the whole system
- name: UpgradeAll
  task: UpgradeAll
  package:

# Installs the Tree tool
- name: Install tree
  task: Install
  package: tree

# Uninstalls the Tree tool
- name: Uninstall tree
  task: Uninstall
  package: tree

I will soon provide documentation with all the types of tasks that can be performed, and we will implement more tasks that I believe are necessary.


Español

Nonsible es una alternativa a Ansible. Es open source y desarrollada en Rust. La idea es no depender de factores como Python, ya que nos compromete a tener instalado Python en todas nuestras máquinas, entre otros requisitos.

En varias ocasiones me he encontrado con el problema de que no podía instalar pip, y tuve que tomar la alternativa de usar pip3 o incluso python3 -m. Esto me resulta muy poco intuitivo, cada vez que instalo Ansible tengo que hacer una bilguería distinta.

Ventajas de Nonsible

  1. Es multiplataforma. El proyecto está desarrollado en Rust, lo cual permite crear una build independientemente del sistema operativo en el que estemos trabajando.

  2. Perfecto para pequeñas tareas. Este proyecto funciona muy bien para instalar un paquete en varios equipos, o actualizar todos los sistemas de nuestra empresa.

  3. Es escalable. Podemos organizar las conexiones y las tareas en 2 archivos YAML. Esto nos permite tener varios archivos YAML dependiendo de la tarea que queramos realizar en los equipos que queramos realizarlo. ¡Todo depende de como te quieras organizar tu mismo!.

  4. Se adapta a tus necesidades. Nonsible puede usarse de varias maneras. Con una interfaz completamente interactiva, una interfaz semi interactiva, o de manera totalmente desatendida.

Tipos de uso

Los tipos de uso son completamente interactiva, semi interactiva y desatendida.

  • Interactiva (Sin ningún argumento): En la manera interactiva tenemos que añadir nosotros las conexiones manualmente, aunque sí que podemos abrir un archivo YAML de tareas. Esta manera de ejecutar el Nonsible es muy útil cuando la tarea que tienes que realizar es sencilla o puntual.

  • Semi-Interactiva (Con un argumento): El argumento que añadimos será un archivo YAML de targets (conexiones).

La idea es cargar varias conexiones, ya que puede ser la tarea más tediosa de realizar, y a partir de ahí ya podemos instalar de manera imperativa o declarativa.

Es interesante porque podemos ver en la tabla las conexiones agregadas y sus detalles, ideal para comprobar si todos los datos están como deseamos.

  • Desatendida (Con dos argumentos): Es la metodología perfecta para crear una automatización en un pipeline de CICD. El primer argumento sería un archvio YAML de targets (conexiones), y el segundo sería el archivo YAML de tareas.

Esta manera de usar el script se encargará de realizar el test de sistema operativo, y de seguir paso a paso todas las tareas que se le indiquen en el YAML de tareas.

Ejemplos de YAMLs.

  • Target YAML (conexiones): En este YAML vamos a definir los datos de nuestras conexiones. La idea es definirlos a modo de array.
- name: ne
  username: nedd
  ip: 1.1.1.1
  sudo: true
  sudo_password: holamudno
  pem: ./pem/pemname.pem

- name: illo
  username: hola
  ip: 1.2.3.4
  sudo: true
  sudo_password: heeeeey
  pem: ./pem/pemname.pem
  • Tasks YAML (tareas): Definimos las tareas que queremos realizar, en el orden deseado. Hay que definir las tareas a modo de array.
# Realiza un update del sistema completo
- name: UpdateAll
  task: UpdateAll
  package:

# Realiza un upgrade del sistema completo
- name: UpgradeAll
  task: UpgradeAll
  package:

# Instala la herramienta Tree
- name: Install tree
  task: Install
  package: tree

# Desinstala la herramienta Tree
- name: Uninstall tree
  task: Uninstall
  package: tree

Pronto dejaré lista una documentación con todos los tipos de tareas que se pueden realizar, e implementaremos más tareas que yo pienso que son necesarias.

You might also like...
An open source, programmed in rust, privacy focused tool for reading programming resources (like stackoverflow) fast, efficient and asynchronous from the terminal.

Falion An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronou

Open source email client written in Rust and Dioxus. Under 🏗️
Open source email client written in Rust and Dioxus. Under 🏗️

Blazemail A full-featued, beautiful, mail client that doesn't suck. Works on mac, windows, linux, mobile, web, etc. Features, status Blazemail is curr

botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing & RPA

botwork botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing, acceptance test driven develo

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

A free and open-source DNA Sequencing/Visualization software for bioinformatics research.
A free and open-source DNA Sequencing/Visualization software for bioinformatics research.

DNArchery 🧬 A free and open-source cross-platform DNA Sequencing/Visualization Software for bioinformatics research. A toolkit for instantly performi

Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices
Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices

Welcome to the server-side application for the HarmonyLink project. This innovative software is developed with the Rust programming language and is ai

A blazing fast command line license generator for your open source projects written in Rust🚀
A blazing fast command line license generator for your open source projects written in Rust🚀

Overview This is a blazing fast ⚡ , command line license generator for your open source projects written in Rust. I know that GitHub

Open-source Fortnite launcher, built in Rust.

Instigator Instigator is a basic command-line Fortnite launcher I've been working on for the last day and a bit. It is extremely basic. It injects con

Open-source Rust framework for building event-driven live-trading & backtesting systems

Barter Barter is an open-source Rust framework for building event-driven live-trading & backtesting systems. Algorithmic trade with the peace of mind

Owner
Nedd Chairi Muñoz
💽​ DevSecOps & Rustacean 🦀​
Nedd Chairi Muñoz
This tool was developed as part of a course on forensic analysis and cybersecurity. It is intended to be used as a training resource to help students understand the structure and content of job files in Windows environments.

Job File Parser Job File Parser is a Rust-based tool designed for parsing both legacy binary job files and modern XML job files used by the Windows Ta

Mehrnoush 3 Aug 12, 2024
Synthia is a lightweight and beginner-friendly interpreted programming language developed in Rust

Synthia is a lightweight and beginner-friendly interpreted programming language developed in Rust. With a simple, intuitive syntax and a focus on ease of use, Synthia is perfect for both newcomers to programming and experienced developers looking for a flexible scripting language

Shiva 3 Oct 5, 2023
This will be developed in Rust on a Teensy 4.1 with an ARM Cortex-M7

Advent of Code 2021 This will be developed in Rust on a Teensy 4.1 with an ARM Cortex-M7. Solutions are stored in src/bin. Setup It is really recommen

Liz 3 Aug 9, 2022
Platform that enables Windows driver development in Rust. Developed by Surface.

windows-drivers-rs This repo is a collection of Rust crates that enable developers to develop Windows Drivers in Rust. It is the intention to support

Microsoft 1.1k Oct 11, 2023
A collection of COSMIC projects developed by the community.

COSMIC Project Collection A collection of COSMIC projects developed by the community. Applications Name Description Image tasks A simple task manageme

Eduardo Flores 94 Jul 25, 2024
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 30 Dec 14, 2022
Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.

Horus Horus is an open-source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual mach

null 4 Dec 15, 2022
Over-simplified, featherweight, open-source and easy-to-use authentication and authorization server.

concess ⚠️ Early Development: This is not production ready, yet. Do not use it for anything important. Introduction concess is a over-simplified, feat

Dustin Frisch 3 Nov 25, 2022
Get your loadshedding schedule in your calendar and never be left in the dark! Open-source, up-to-date, and developer friendly.

Loadshedding schedules in your digital calendar. No apps, no ads, up-to-date, and developer friendly. Get it • Key Features • Using the data • Project

Boyd Kane 117 Apr 26, 2023
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 18 Oct 24, 2022