Skip to content

paulhammond/ted

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐶 Ted

Ted is a configuration management tool for systems you care about.

It configures a system by following a plan file containing setup instructions. For example, this plan will install Git using the APT package manager and add a configuration file:

apt install git
file copy gitconfig /etc/gitconfig

You can use ted run to interactively check and fix any issues:

$ ted run plan.ted
✔ apt install git
✘ file copy ◌/gitconfig /etc/gitconfig
    /etc/gitconfig missing
  fix? [yn]: y
  fixing
  rechecking
  done

Behind the scenes, Ted compiles the plan into a POSIX shell script and then executes that script. This means you can run Ted against a remote host without installing any agents or software on that host. For example:

$ ted run plan.ted --host server.example.com --sudo
✔ apt install git
✔ file copy ◌/gitconfig /etc/gitconfig

You can also compile the plan into a self-contained shell script and then run it later. For example:

$ ted compile check plan.ted > script.sh
$ sh script.sh
✔ apt install git
✔ file copy ◌/gitconfig /etc/gitconfig

Current status

⚠️ Ted is alpha quality software. It works and I’m using it to manage my laptop and starting to use it with other personal servers. There are undoubtedly edge cases that are not well handled, but I’m confident that Ted will not damage your system without at least asking first.

Development work so far has been focused on getting the core functionality working (including reading plan files, generating shell scripts, running against remote servers, etc.) with a limited set of supported actions. The next step is adding more actions (including users, groups, more file operations and more package managers), followed by more features. Backwards compatibility is not yet guaranteed.

Installation

Prebuilt binaries for supported operating systems can be downloaded from the “Preview” Github Release.

Getting Started

$ ted help tutorial  # A step-by-step guide to using Ted
$ ted help plans     # Documentation on the plan file format
$ ted help actions   # A reference of all available actions
$ ted help           # An overview of all documentation

Why?

Ted is optimized for small infrastructures, especially single hosts like your laptop or the computer in your closet. Compared to alternatives:

  • Ted asks for confirmation before making any changes, unlike most configuration management systems. This is safer to run; you won’t accidentally overwrite an uncommitted working config with the version from a few weeks ago.
  • Ted plans are idempotent by default, unlike hand-written shell scripts. You can run them repeatedly and always get the same results.
  • Ted is realistic that it’s not enough to just copy some files into place. It also helps you manage users, packages, services, and anything else that requires a command to be run, such as the macOS “defaults” system.
  • Ted eschews complexity. Small infrastructures don’t need templating, manifests, role hierarchies, or coordination servers, so Ted avoids them.
  • Ted can be used to just run checks against the system, so you can manually make changes and then later commit those changes to version control once they actually work.
  • Ted has remote execution built in, making it easier to avoid having multiple out-of-sync copies of your config on different computers.

What’s with the name?

Ted is the name of my dog. It’s a riff on the idea of “Pets, not cattle”.

License

Ted is available under the MIT license. For information on the licenses of all included packages run ted licenses.

About

Configuration management for systems you care about

Resources

License

Stars

Watchers

Forks

Languages