カテゴリー
コンピューター

Vagrant のプロビジョニングのシェルスクリプトファイルに引数を渡す方法

Vagrant でプロビジョニングをして、WordPress を構築したいと思いましたの。

このとき、WordPress の URL を指定しなければなりません。

Vagrant の開発環境ですので、Vagrantfile で設定する IP アドレスを指定したいですわ。

そうなりますと、Vagrantfile からシェルスクリプトファイルに引数を渡せないかしら、と思い当たります。

今回、その方法をノートいたします。

ポイントと Vagrantfile

  • shell プロビジョナーの args オプションを使用する。
  • path オプションには $1 などの引数を記述する必要はない。
# ipアドレスをシェルスクリプトに渡したいので、変数を定義する。
ipadress = "192.168.56.11"

Vagrant.configure(2) do |config|
  config.vm.network "private_network", ip: ipadress
  config.vm.provision "shell" do |shell|
    shell.path = "wordpress.sh"
    shell.args = [ipadress]
  end
end

Vagrantfile は Ruby で書かれておりますのて、変数を定義するにあたり次のページが参考になりました。ありがとう存じます♪

試行錯誤

シェルスクリプトに引数を渡すには、公式ドキュメントだけを見るとスクリプト部分に $1 などの変数を記述するように読み取ってしまいました><。

これは、次のエラーとなりました><。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

shell provisioner:
* `path` for shell provisioner does not exist on the host system: /Users/username/vagrant-centos-7-wp/wordpress.sh $1

公式ページの例は、シェルスクリプト本体に $1 などの変数を記述しております。

ですので、シェルスクリプトファイルの中に $1 などの引数を書けばよく、シェルスクリプトファイルの設定時には引数を指定する必要はありませんの。

最終的に、上述した書き方で問題解決いたしました!

おわりに

問題解消の決定打となりましたのは、次のページでした。ありがとう存じます!

以上です。

コメントを残す