
145
145
7.7 カスタムプロビジョナの追加
長い方の形式を使うことの利点は、設定のクラスが公開しているメソッドがあれ
ば、それらを呼び出せることです。これに対し、短い方の書き方は、属性を設定する
ことしかできません。
設定の定義と実装ができたら、次のステップは実際にそれらにアクセスすることで
す。プロビジョナの設定は、プロビジョナの実装中のインスタンス変数の
@config
を
通じて公開されます。プロビジョナに設定が定義されていなければこの変数は
nil
に
なりますが、設定がある場合には、この変数はそのプロビジョナの設定クラスのイン
スタンスになります。
これで、プロビジョナの実装を修正すれば、ユーザーが指定したパッケージをイン
ストールできるようになります。
module MyVagrantPlugin
class Provisioner < Vagrant.plugin("2", "provisioner")
def provision
command = "apt-get install -y #{@config.packages.join(" ")}"
@machine.communicate.sudo(command) do |type, data|
@machine.env.ui.info(data.chomp, prefix: false)
end
end
end
end
パッケージのリストをハードコーディングしなくても、
@config.packages
を使っ
て、そのリストが設定から取得されるようになります。 ...