最近Ansible職人になることが多かったので、マイナーモードを書いてみました。
https://github.com/k1LoW/emacs-ansible
現在MELPAに申請中(&難航中)なので、うまくいけば、M-x package-install ansible
でインストールできるようになります。
そうでない場合はCaskファイルに
(depends-on "ansible" :git "https://github.com/k1LoW/emacs-ansible.git"
:files ("*.el" "snippets" "dict"))
を追記してください。
使い方
M-x ansible
で有効化できます。もしくはyaml-modeにフックさせて起動させてもいいかもしれません。
(add-hook 'yaml-mode-hook '(lambda () (ansible 1)))
機能
helmインターフェースを利用した*.yml
ファイルの列挙するhelm-source (ansible::helm-playbooks-source
)- yasnippet用スニペットによるModuleの記述補助
- auto-complete用辞書によるModule optionの記述補助
だけです。テスト実行系は個人的嗜好で作っていません。
なかなかModuleを覚えないので「ならEmacsに任せよう」という感じで作りました。
yasnippetとauto-completeを連携させているとなお良いです。補完にModuleの名前ででてくるので。
というわけで
ほんの少しは便利になると思うので、全国のAnsible職人の方はどうぞ。
これなんてデジャヴ??
Serverspecでテストを書くときに便利かもしれないserverspec.elを書いてみた - Copy/Cut/Paste/Hatena
あれ??????
以下、ansible.elの作成の経緯
serverspec.elより先にansible.elでsnippet自動生成が実現
自分はServerspec職人もやりますがAnsible職人もやります。本職はCakePHP職人ですが。
で、serverspec.elを作った際のエントリで
今回、ちまちまと手作業でスニペットなどを作ったのですが、うまくやれば http://serverspec.org やServerspecのリポジトリをクローリングして自動生成ができそうだなーと思っています。
とかのたまっていたのですが、ふとansible/ansible · GitHubを眺めていたら、Moduleのソースコード内に「ドキュメントが」「YAMLで」記述しているわけですよ。
これはアツい!!!!
Ansible Moduleは公式のものだけで既に200を超えており、正直最初から手作業でのスニペット化は諦めていたわけですが、これなら簡単なスクリプトでスニペットファイルを自動生成できるな、と。
最初は
Pythonをパースするgem (Ruby)ってあるのかな。。。。って、俺は一体何を。。
— k1LoW (@k1LoW) May 23, 2014
とか言っていて、d:id:kiwanami より
@k1LoW pythonにはパーサーがあるはずなので、PythonでパースだけしてASTをJSONとかにして返すコマンドをRubyから実行するとか。
— kiwanami (@kiwanami) May 23, 2014
@kiwanami こんなトンチンカンな要望にソリューションを提示する @kiwanami さん。さすがEmacsでSkypeやGoogle Calendarを操作したりIDEをつくってみたりDBに接続したりするだけあります!!あざす!
— k1LoW (@k1LoW) May 23, 2014
というアリガタイ(有り、難い)お言葉をもらいつつ、結局1行づづ行を読んで適当に対応しました。すみません!!!俺にはそこまでのやんちゃなことはできませんでした!!!
世の中のEmacs以外のエディタを駆使しているAnsible職人の方へ
是非スニペットを作るべきかと。ansible.vimとか。ansible.pyとか。
https://github.com/k1LoW/emacs-ansible/blob/master/lib/generate.rb
たったこれだけのやっつけコードでEmacs用スニペットがほぼ全モジュール分できました(file moduleはうまくいっていない)。一度作ると楽ですよー。
Fukuoka.rbにて
上のやっつけコードを提出し、モヒカンな方から暇つぶしのマサカリを受ける所存です。 また、ひきつづきserverspec.elのスニペットの自動生成方法を模索します。
以上です。