The simplest configuration tool - Itamae
Now I'm try to investigate ARM related technologies. ARM is a great tool. I can provision servers, networks, and services quite easily using ARM.
However, ARM is not good at configuring software on a virtual machine. We can use shell extension. However, it works only the first time.
So the turn around time of testing takes too long. I'd like to find out simple way to provision something. XP forks said that "So always do the simplest thing that could possibly work next. "
I come up with two solutions. One is Itamae. The other is chef-provisioning-rm. Both looks great. I try Itamae on this post.
Itamae
Itamae (https://github.com/itamae-kitchen/itamae) is very simple configuration tool inspired by Chef.
She is an itamae which means an experienced Japanese food cook.
Tutorial
1. Install itamae
You need install ruby in advance. I just install Vagrant and ChefDK.
Vagrant: https://www.vagrantup.com/
ChefDK: https://downloads.chef.io/chef-dk/
Vagrant:
Then
$ gem install itamae
Of course, you can use bundler.
2. Create a virtual machine
Create an Ubuntu image.
Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provider "virtualbox" do |v|
v.name = "itamae-vagrant"
end
end
Then
$ vagrant up
3. Write a recipe
recipe.rb
execute 'apt-get-upgrade' do
command 'apt-get upgrade -y'
end
execute 'apt-get update' do
command 'apt-get update -y'
end
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
4. Execute it
You can execute an itamae recipe on a target machine. Or via SSH. It has an option for Vagrant.
$ bundle exec itamae ssh --vagrant --host default recipe2.rb
INFO : Starting Itamae...
INFO : Recipe: /Users/ushio/Codes/itamae/recipe2.rb
INFO : execute[apt-get-upgrade] executed will change from 'false' to 'true'
INFO : execute[apt-get update] executed will change from 'false' to 'true'
INFO : package[nginx] installed will change from 'false' to 'true'
That's it. Deadly simple.
You can refer some other usages on this GitHub repository.
https://github.com/itamae-kitchen/itamae
It works fine with ARM.
The only problem is we can't perfectly automate a provisioning task.
Then we can use chef-provision-rm. ;) See you soon. Happy provisioning.