Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【Vagrantドキュメント意訳】15.Push

More than 3 years have passed since last update.

はじめに

本文章は、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はクォート制御をする。

注意すること - scripuinlineオプションの一方のみが、一つの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

スクリプトの引数

シェル・プロビジョナを参照のこと。

関連記事

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away