はじめに
本文章は、Vagrant公式サイト内のドキュメント内のPUSHに記載されている内容を意訳に近い形で日本語化したものである。
誤訳が含まれている可能性が十分にあることを踏まえて、参考いただきたい。
Vagrant Push
バージョン1.7として、VagrantはVagrantfileと同じディレクトリにあるアプリケーション・コードをHashiCorpのAtlasやFTPサーバなどのようなリモートへデプロイや"push"をできるようになった。
PushはアプリケーションのVagrantfile内で定義され、vagrant pushのサブコマンドを使用して呼び出される。Vagrantの多くのほかのコンポーネントのように、それぞれのVagrantのPushプラグインはオプションを持っている。Vagrant Pushプラグインに関するより詳細な情報についてはドキュメントを参照のこと。ここに、Vagrantfile内のVagrant Push設定セクションを例示する。
config.push.define "ftp" do |push|
push.host = "ftp.company.com"
push.username = "..."
# ...
end
アプリケーションがFTPサーバへデプロイする準備ができたら、一つのコマンドを実行するだけである。
$ vagrant push
多くのVagrantのプロバイダのように、Vagrant Pushも複数のバックエンドの定義をサポートしている。ステージングやQA(品質保証)環境との共通のシナリオを考慮すること。
config.push.define "staging", strategy: "ftp" do |push|
# ...
end
config.push.define "qa", strategy: "ftp" do |push|
# ...
end
このシナリオでは、ユーザはVagrant Pushの名前をサブコマンドに受け渡すべきである。
$ vagrant push staging
Vagrant Pushはアプリケーションをデプロイする最も早い方法である。サイドバーにあるドキュメントへのリンクでより詳しく見ることができる。
Atlasの手順
Atlasは、あなたのVagrant開発環境を製品にするためのHashiCorpの商業的な提供物である。AltasのホームページでHashiCorpのAtlasに関することや、その機能についての詳細を読むことができる。Vagrant Push Atlasの手順は、あなたのアプリケーションのコードをHashiCorpのAtlasサービスへpushする。
Vagrant Push Atlasストラテジは以下の設定オプションをサポートする。
-
app- HashiCorpのAtlasの中でのアプリケーションの名前。アプリケーションが存在していない場合、ユーザへの確認の上で作成される。 -
exclude- アップロードから除外するファイルやファイルのパタンを、dirに対する相対表現で追加する。この値は複数指定できるし、追加できる。excludeはincludeの値を除外する。 -
include- アップロードに含めるファイルやファイルのパタンを、dirに対する相対表現で追加する。この値は複数指定できるし、追加できる。 -
dir- アップロードするファイルを含むベースとなるディレクトリ。デフォルトでは、これはVagrantfileがある場所と同じディレクトリであるが、srcフォルダやbinフォルダやアップロードしたいそのほかのフォルダがあれば、指定することができる。 -
vcs- trueに設定された場合、Vagrantは自動的にVCSのデータを、アップロードするファイルを決定する為に自動的に使用する。コミットしていない変更はデプロイされない。
加えて、以下に示すオプションが、Vagrant Atlas Pushストラテジのパワー・ユーザのために公開されている。多くのユーザはこれらのオプションを必要としないだろう。
-
address- アップロードする先のAtlasのアドレス。デフォルトではこれは公共のAtlasサーバである。 -
token- 使用するためのAtlasトークン。ユーザがvagrant loginを実行した場合、そのコマンドによってトークンが生成される。もし環境変数ATLAS_TOKENが設定されていれば、アップ・ローダはこの値を使用する。デフォルトでは、これはnilである。
使い方
Vagrant Push Atlasの手順はatlasのキーを使用して、Vagrantfile内で定義されている。
config.push.define "atlas" do |push|
push.app = "username/application"
end
そして、Atlasへアプリケーションをpushする。
$ vagrant push
FTPとSFTPの手順
Vagrant Push FTP または SFTPの手順は、あなたのVagrant開発環境にあるコードをリモートのFTPまたはSFTPサーバへPushする。
Vagrant Push FTP または SFTPの手順は以下に示す設定オプションをサポートする。
-
host- リモートの(S)FTPサーバのアドレス。(S)FTPサーバが標準的なポートで稼働していない場合、アドレスの後にポート(ホスト:ポート)を指定することが出来る。 -
username- (S)FTPサーバとの認証に使用されるユーザ -
password- (S)FTPサーバとの認証に使用されるパスワード -
passive- パッシブFTPを使用する(デフォルトではtrue) -
secure- セキュアを使用する(SFTP)(デフォルトではfalse) -
destination- ファイルを同期する際の、ターゲット・システムでルートとなる場所(デフォルトでは/) -
exclude- アップロードから除外するファイルやファイルのパタンを、dirに対する相対表現で追加する。この値は複数指定できるし、追加できる。excludeはincludeの値を除外する。 -
include- アップロードに含めるファイルやファイルのパタンを、dirに対する相対表現で追加する。この値は複数指定できるし、追加できる。 -
dir- アップロードするファイルを含むベースとなるディレクトリ。デフォルトでは、これはVagrantfileがある場所と同じディレクトリであるが、srcフォルダやbinフォルダやアップロードしたいそのほかのフォルダがあれば、指定することができる。
使い方
Vagrant Push FTP または SFTPの手順はftpのキーを使用してVagrantfile内で定義されている。
config.push.define "ftp" do |push|
push.host = "ftp.company.com"
push.username = "username"
push.password = "password"
end
そして、FTPまたはSFTPサーバへアプリケーションをpushする。
$ vagrant push
Herokuの手順
Herokuは、アプリケーションをデプロイするのを簡単にする公開PAASプロバイダである。Vagrant Push Herokuの手順は、あなたのアプリケーションのコードをHerokuへPushする。
警告:Vagrant Push Herokuの手順は、Herokuの証明書が設定済みで、Herokuのアプリケーションが生成されている必要がある。この文書では、これらの事前準備については対象外である。しかし、これに関するより詳細な情報はHerokuのドキュメントで読むことができる。
Gitリプ時トリにコミットしたファイルだけが、HerokuにPushされる。加えて、たとえ”master"ブランチでないとしても、カレントのワーキング・ブランチは常にHerokuにPushされる。
Vagrant Push Herokuの手順は以下の設定オプションをサポートする。
-
app- Herokuアプリケーションの名前。もし、そのHerokuアプリケーションが存在しなければ、例外が発生する。もし、値が指定されていなければ、Vagrantfileがあるディレクトリのベース名をHerokuアプリケーションの名前とする。この値はユーザによって変更できるので、appの設定をVagrantfileに追加することを強く推奨する。 -
dir- HerokuへアップロードするGitリポジトリを含むベースディレクトリ。デフォルトでは、これは、Vagrantfileと同じディレクトリである。しかし、Gitディレクトリをネストしているならば、これを指定することができる。 -
remote- Herokuが設定されている、Gitリモートの名前。デフォルト値は"heroku"である。
使い方
Vagrant Push Herokuの手順は、herokuキーを使ってVagrantfile内で定義される。
config.push.define "heroku" do |push|
push.app = "my_application"
end
そして、Herokuへアプリケーションをプッシュする。
$ vagrant push
Local Execの手順
Vagran Push Local Execの手順は、Push操作の一部としてユーザが任意のシェル・コマンドやスクリプトを呼び出すことを許す。
警告:Vagrant Push Local Execの手順は、シェル・スクリプトの正しさについてのいかなる検証動作を行うことはない。
Vagrant Push Local Execの手順は、以下に示す設定オプションをサポートする。
-
script- 実行するためのディスク上のスクリプトへのパス(Vagrantfileに対する相対表現)。Vagrantはこのスクリプトを実行可能なように変換しようとする。しかし、それが失敗した場合、例外を発生する。 -
inline- 実行するためのインライン・スクリプト(文字列)。 -
args(文字列または列挙) - 単一の文字として実行する際に、シェル・スクリプトに受け渡すオプショナルな引数。これらの引数は、必要に応じてエスケープ文字やクォートなどに注意しながら、コマンドライン上に直接打ち込むように書かれたものであるべきである。同じように列挙を使用して引数を受け渡すこともできる。この場合、Vagrantはクォート制御をする。
注意すること - scripuとinlineオプションの一方のみが、一つのPush定義内で指定することができる。
使い方
Vagrant Push Local Execの手順は、local-execキーを使用してVagrantfileの中で定義する。
リモート・パス:
config.push.define "local-exec" do |push|
push.inline = <<-SCRIPT
scp -r . server:/var/www/website
SCRIPT
end
ローカル・パス:
config.push.define "local-exec" do |push|
push.inline = <<-SCRIPT
cp -r . /var/www/website
SCRIPT
end
より複雑なスクリプトに対して、それらを別々のファイルに格納し、次のようにVagrantfileから読み込む。
config.push.define "local-exec" do |push|
push.script = "my-script.sh"
end
そして、VagrantでPushを呼び出す。
$ vagrant push
スクリプトの引数
シェル・プロビジョナを参照のこと。