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 で動くプロビジョニングツールがあったら本気出すと思っていたのですが、本気を出す時が来たようです。