Vagrantのshell provisionerはシェルスクリプト以外も指定出来る
1号による以下の「記事数/はてブ数の可視化」によりビリとして肩身が狭い2号です。
Vagrantのprovisionerは各種あり、大体はChef, Ansible, Puppet等の構成管理ツールが使われることが多いためそれほど登場の機会の無いshell provisioner、名前の通りシェルスクリプトに記載した内容に沿ってVMをprovisioningしていきますが、実はこの実行はshebangを見ているため、シェルスクリプト以外を指定することが出来ます。
「男なら黙ってオールPythonでprovisioningだ!」という硬派な方は、例えば以下のようなyumのAPIを直接叩くスクリプトを書き
#!/usr/bin/python import yum yb=yum.YumBase() searchlist=['name'] arg=['vim-enhanced'] matches = yb.searchGenerator(searchlist,arg) for (package, matched_value) in matches : if package.name == 'vim-enhanced' : yb.install(package) yb.buildTransaction() yb.processTransaction()
Vagrantfileに以下の様に指定することで
config.vm.provision :shell do |shell| shell.path = "provision.py" end
邪道なシェルスクリプトを使うことなくvimをインストールすることが出来るというわけです。多分誰もやらんだろうけど。