mike-neckのブログ

Java or Groovy or Swift or Golang

Groovy製のプロビジョニングツール infrastructor

f:id:mike_neck:20150917235151p:plain

infrastructor は Groovy でできたサーバープロビジョニングツールで、まあ、 Chef とか itamae とか Ansible の類のツールです。2018/06/07 現在のバージョンは 0.1.8 ということで、まだ開発が始まってから1年くらいの若いツールです。

github.com

この記事では infrastructor のチュートリアルをやってみます。


インストール

インストールは sdkman を使います。sdk は古いバージョンのものだと、新しい candidate の名前を判断できないので、最新版(2018/06/07 時点で 5.6.4+305)を使ってください。なお、 Java 9 以降にしているといろいろと警告がうるさいので(groovyさん…) Java 8 にしておきます。

$ sdk i infrastructor

Downloading: infrastructor 0.1.8

In progress...

######################################################################## 100.0%

Installing: infrastructor 0.1.8
Done installing!


Setting infrastructor 0.1.8 as default.

完了後、次のとおりにコマンドをうって、バージョンを確認できればインストール成功です。なお、 Java 9 以降を使うと groovy のリフレクションに関する警告がうるさいので、 Java 8 を使っています。

$ infrastructor version
version:    0.1.8
revision:   89b025d4bc710e24859d096bce0de7f2d48dcbc8
build date: 22-05-2018 13:44

チュートリアル

チュートリアルでは Docker を使います。 Docker のインストールは別途 Docker のサイトを参照してください。

infrastructor からチュートリアル用のイメージが配布されています。それをローカルに持ってきます。

$ docker pull infrastructor/ubuntu-sshd:latest

なお、このイメージの Dockerfile はこちらを参照。

github.com

で、このイメージを起動しておきます。

$ docker run -d -p 10022:22 --name infra-test infrastructor/ubuntu-sshd:latest

で、次のファイルを example.groovy という名前で作ります。

inlineInventory {
  node host: 'localhost', port: 10022, username: 'devops', password: 'devops'
}.provision {
  task name: 'install some packages', actions: {
    shell 'sudo apt update'
    ['tmux', 'mc', 'htop'].each { pkg ->
        shell "sudo apt install $pkg -y"
    }
  }
}

次のコマンドを実行します。

$ infrastructor run -f hello.groovy

実行に時間がかかりますが、次のように表示されます。

$ infrastructor run -f hello.groovy 
[INFO] running script: hello.groovy
[INFO] task: 'install some packages'
[INFO] task: 'install some packages', done on 1 node|s
[INFO] running script: hello.groovy - done

EXECUTION COMPLETE in 1 minutes, 2.437 seconds

テスト機能はないようなので、とりあえず、 Docker のインスタンスにログインして確認します。

$ docker exec -it infra-test bash
root@53aa2afc480b:/# which mc
/usr/bin/mc
root@53aa2afc480b:/# which tmux
/usr/bin/tmux
root@53aa2afc480b:/# which htop
/usr/bin/htop
root@53aa2afc480b:/# exit
exit

インストールできているようです


前から JVM で動くプロビジョニングツールがあったら本気出すと思っていたのですが、本気を出す時が来たようです。