All Projects → itamae-kitchen → Mitamae

itamae-kitchen / Mitamae

Licence: other
mitamae is a fast, simple, and single-binary configuration management tool with a DSL like Chef

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Mitamae

Terraform With Circleci Example
This is an example of automatic deployments of your infrastructure using terraform and CircleCI 2.0 workflows
Stars: ✭ 142 (-41.32%)
Mutual labels:  infrastructure-as-code
Octodns
Tools for managing DNS across multiple providers
Stars: ✭ 2,090 (+763.64%)
Mutual labels:  infrastructure-as-code
Checkov
Prevent cloud misconfigurations during build-time for Terraform, Cloudformation, Kubernetes, Serverless framework and other infrastructure-as-code-languages with Checkov by Bridgecrew.
Stars: ✭ 3,572 (+1376.03%)
Mutual labels:  infrastructure-as-code
Mimic
mimic: Define your Deployments, Infrastructure and Configuration as a Go Code 🚀
Stars: ✭ 145 (-40.08%)
Mutual labels:  infrastructure-as-code
Terraform Aws Devops
Info about many of my Terraform, AWS, and DevOps projects.
Stars: ✭ 159 (-34.3%)
Mutual labels:  infrastructure-as-code
Pulumi Aws
An Amazon Web Services (AWS) Pulumi resource package, providing multi-language access to AWS
Stars: ✭ 169 (-30.17%)
Mutual labels:  infrastructure-as-code
Kumogata
Kumogata is a tool for AWS CloudFormation. It can define a template in Ruby DSL.
Stars: ✭ 128 (-47.11%)
Mutual labels:  infrastructure-as-code
Tfsec
Security scanner for your Terraform code
Stars: ✭ 3,622 (+1396.69%)
Mutual labels:  infrastructure-as-code
Terrible
An Ansible playbook that apply the principle of the Infrastructure as Code on a QEMU/KVM environment.
Stars: ✭ 161 (-33.47%)
Mutual labels:  infrastructure-as-code
Fogg
Manage Infrastructure as Code with less pain.
Stars: ✭ 181 (-25.21%)
Mutual labels:  infrastructure-as-code
Infrastructure As Code Tutorial
Infrastructure As Code Tutorial. Covers Packer, Terraform, Ansible, Vagrant, Docker, Docker Compose, Kubernetes
Stars: ✭ 1,954 (+707.44%)
Mutual labels:  infrastructure-as-code
Salt
Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
Stars: ✭ 12,086 (+4894.21%)
Mutual labels:  infrastructure-as-code
Cdk Clj
A Clojure wrapper for the AWS Cloud Development Kit (AWS CDK)
Stars: ✭ 173 (-28.51%)
Mutual labels:  infrastructure-as-code
Terraform Aws Landing Zone
Terraform Module for AWS Landing Zone
Stars: ✭ 142 (-41.32%)
Mutual labels:  infrastructure-as-code
Serverless.tf
serverless.tf is an opinionated open-source framework for developing, building, deploying, and securing serverless applications and infrastructures on AWS using Terraform.
Stars: ✭ 198 (-18.18%)
Mutual labels:  infrastructure-as-code
Red Team Infrastructure Automation
Disposable and resilient red team infrastructure with Terraform
Stars: ✭ 129 (-46.69%)
Mutual labels:  infrastructure-as-code
Dnscontrol
Synchronize your DNS to multiple providers from a simple DSL
Stars: ✭ 2,089 (+763.22%)
Mutual labels:  infrastructure-as-code
Aws Cdk Rfcs
RFCs for the AWS CDK
Stars: ✭ 222 (-8.26%)
Mutual labels:  infrastructure-as-code
Kics
Find security vulnerabilities, compliance issues, and infrastructure misconfigurations early in the development cycle of your infrastructure-as-code with KICS by Checkmarx.
Stars: ✭ 189 (-21.9%)
Mutual labels:  infrastructure-as-code
Awesome Terraform
Curated list of resources on HashiCorp's Terraform
Stars: ✭ 2,618 (+981.82%)
Mutual labels:  infrastructure-as-code

🍣 mitamae Latest Version Build Status

mitamae is a tool to automate configuration management using a Chef-like DSL powered by mruby.

Key Features

  • Fast - mitamae is optimized for local execution. It uses C functions via mruby libraries for core operations where possible, instead of executing commands on a shell or over a SSH connection like other tools, which is very slow.

  • Simple - Running mitamae doesn't require Chef Server, Berkshelf, Data Bags, or even RubyGems. The mitamae core provides only essential features. You can quickly be a master of mitamae.

  • Single Binary - mitamae can be deployed by just transferring a single binary to servers. You don't need to rely on slow operations over a SSH connection to workaround deployment problems.

Installation

Download a binary for your platform from GitHub Releases.

curl -L https://github.com/itamae-kitchen/mitamae/releases/latest/download/mitamae-x86_64-linux.tar.gz \
  | tar xvz
./mitamae-x86_64-linux help

Getting Started

Create a recipe file as recipe.rb:

package 'nginx' do
  action :install
end

service 'nginx' do
  action [:enable, :start]
end

And then excute mitamae local command to apply a recipe to a local machine.

$ mv mitamae-x86_64-linux mitamae
$ ./mitamae local recipe.rb
 INFO : Starting mitamae...
 INFO : Recipe: /home/user/recipe.rb
 INFO :   package[nginx] installed will change from 'false' to 'true'
 INFO :   service[nginx] enabled will change from 'false' to 'true'
 INFO :   service[nginx] running will change from 'false' to 'true'

See mitamae help local for available options. --log-level=debug is helpful to inspect what's executed in detail.

Documentation

mitamae was built as an alternative implementation of Itamae. Therefore you may refer to resources related to Itamae for mitamae as well.

How to write recipes

Please refer to Itamae wiki:

mitamae's original features

They should be ported to Itamae at some point.

  • not_if / only_if can take a block instead of a command
  • file, remote_file, and template resources have atomic_update attribute

Plugins

Please see PLUGINS.md for how to install or create plugins for mitamae.

Find mitamae plugins and Itamae plugins supporting mitamae on GitHub.

mruby features

The DSL is based on mruby instead of standard Ruby unlike Chef and Itamae. You may use the following mruby features in mitamae recipes.

Supported platforms

Running mitamae on servers

When you want to use mitamae on remote servers, you need to distribute a mitamae binary and recipes to the servers and run them remotely. There are at least the following ways to do it:

  • rsync and ssh - It's handy to send them using rsync and run them using ssh when you apply recipes to a few servers. hocho is a convenient tool to do this. While it's over a SSH connection, it's much faster than other tools which establish a SSH connection for each operation like itamae ssh.
  • deployment tool - A more scalable way is to install an agent to each server and notify the agents to fetch mitamae and recipes from an object storage and run them. Deployment tools like AWS CodeDeploy are useful to achieve them.

Migrating from Chef

While the DSL is inspired by Chef, there are some differences you need to keep in mind when you migrate Chef recipes to mitamae recipes.

Chef mitamae
cookbook_file Use remote_file or template, specifying a path with source.
directory's recursive true directory is recursive true by default
ruby_block Use local_ruby_block.
shell_out! Use run_command. Open3.capture3 or system might suffice too.
Chef::Log.* MItamae.logger.*
Digest::*.hexdigest Use *sum command (e.g. sha1sum) as a workaround.
bash Just use execute or specify bash -c ... with it.
mitamae's --shell=/bin/bash might also help.
cron You may use mitamae-plugin-resource-cron.
deploy_revision You may use mitamae-plugin-resource-deploy_revision.
See also: mitamae-plugin-resource-deploy_directory
runit_service You may use mitamae-plugin-resource-runit_service.

Change Log

See CHANGELOG.md.

Contributing

When you develop your local changes, you can write an integration test under spec/ and run it like:

bundle install
bundle exec rake test:integration

This requires Docker on your local environment.

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].