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.
- _: 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
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",
});
});
- ๐ฅข Pick between YAML and TypeScript syntaxes
- ๐ฅก Powerful modules to create users, files, configurations, install packages, make API calls, execute scripts, etc.
- Built to be idempotent, cross-platform, previewable and combinable
- Choose between a wide range of module executors and module reporters
- ๐ก 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
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
- 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)