Skip to content
This repository has been archived by the owner on Jun 5, 2024. It is now read-only.

Latest commit

History

History
82 lines (64 loc) 路 3.38 KB

README.md

File metadata and controls

82 lines (64 loc) 路 3.38 KB

馃崳 Itsudeno

Itsudeno is a scriptable IT automation system written in TypeScript and running on Deno. It can be used to easily deploy and configure applications, services and networks on target hosts.

馃崣 Using YAML

- _: Set file content
  file.content:
    path: /tmp/itsudeno.example
    content: Hello! Current time is ${new Date()}

- _: Configure firewalls
  loop:chain: [ INPUT, OUTPUT, FORWARD ]
  net.firewall:
    chain: ${chain}
    policy: DROP

- _: Install packages
  packages.apt:
    name: net-tools
    state: latest

馃崢 Using TypeScript

import * as it from "https://deno.land/x/itsudeno";

await it.tasks(({_, vault, tools}) => {
  for (const user of ["foo", "bar", "baz"]) {
    await _(`Create users and save passwords into default vault`)
      .os.user({
        user,
        password: await vault.get(`${user}_password`, await tools.mkpasswd())
      });
  }

  await _("Wait for user input")
    .wait.user({
      message: "Itsudeno successfully configured your machine, ready?",
      type: "confirm",
    });
});

馃嵄 Features

  • 馃ア Pick between YAML and TypeScript syntaxes
  • 馃ァ Powerful modules to create users, files, configurations, install packages, make API calls, execute scripts, etc.
  • 馃崱 Store hosts in inventories and secrets in vaults
    • Query hosts with hostname, groups, ip and traits (properties discovered at runtime)
  • 馃崪 Control Itsudeno with different interfaces, like CLI, API, web app, etc.
  • 馃崶 Take advantage of TypeScript, JavaScript and Deno runtime!
    • Never be limited by templating systems anymore, all languages features are exposed
    • Controller can be run on any operating system (provided it supports Deno runtime)
    • Compile your tasks into packaged executables
    • Easily import and create third-party components thanks to EcmaScript dynamic imports
  • 馃ギ Components documentation are auto-generated and always up-to-date

鈿狅笍 This project is in active development and some features advertised above may not be implemented yet. Progress can be tracked here

馃崶 Try it know!

deno run --allow-all --unstable --import-map https://deno.land/x/itsudeno/imports.json https://deno.land/x/itsudeno/mod.ts run https://deno.land/x/itsudeno/docs/examples/hello.yml

馃 Contributions and license

  • To report a bug, fill an issue describing it.
  • To suggest new features or request help, check out discussions instead.
  • To contribute, submit a pull request.
GNU General Public License v3.0
Copyright (c) 2021-present Simon Lecoq (lowlighter)