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

infrastructor は Groovy でできたサーバープロビジョニングツールで、まあ、 Chef とか itamae とか Ansible の類のツールです。2018/06/07 現在のバージョンは 0.1.8 ということで、まだ開発が始まってから1年くらいの若いツールです。
この記事では 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 はこちらを参照。
で、このイメージを起動しておきます。
$ 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 で動くプロビジョニングツールがあったら本気出すと思っていたのですが、本気を出す時が来たようです。