Glide Note

glidenote's blog

PuppetのSyntaxをvim(syntastic)とgit hooks(pre-commit)の2重でチェックするようにした

puppetのmanifestを書いていて、我ながらtypo、構文ミスとかヘボいミスが多すぎるので、 vimとgit hooks(pre-commit)とで2重でsyntax checkをするようにした。

具体的なsyntax checkの方法

  • vimからはsyntasticを利用してsyntax check
  • git hooks(pre-commit)からpuppet parser validateを利用して、commitのタイミングでsyntax check。問題がある場合はcommitが出来ないようにする

puppetとpuppet-lintの導入

manifestを書いているマシンにpuppetが入っていないとSyntax Checkが出来ないので導入。 またsyntasticがpuppet-lintを利用するので併せて導入。

私は、最近はmac上でmanifestを書いているのでgemで導入

1
2
gem install puppet
gem install puppet-lint

RHEL系でyumの場合は下記のような感じ。

1
sudo yum -y install puppet rubygem-puppet-lint

syntasticの導入

私はneobundleを利用しているので、下記を.vimrcに書いて:NeoBundleInstall

1
NeoBundle 'scrooloose/syntastic'

puppetのmanifestを編集して、保存したタイミングでsyntaxのcheckが走る。 エラー部分は:Errorsで表示。

構文がおかしい場合は、下記のように表示される。

これでvimからsyntax checkが出来る。

git pre-commitを用意

Vimだけでも良いんですが、puppetのファイルは全てgitで管理しているので、 git hooksでもcheckが走るようにする。

.git/hooks/pre-commitに下記のようなファイルを用意

puppetのversionが2.7以下の場合は、puppet parser validateというコマンドが無いので、下記コマンドを利用するように変更してください。

1
git cat-file blob :0:$indexfile | puppet --color=false --parseonly --ignoreimport > $error_msg ;;

するとcommitしようとしたタイミングにsyntax checkが走るので、エラーがある場合は下記のようにcommit出来ない。

これでヘボいミスも減って、commit履歴を汚さずに済むはず。

参考

Comments