6

OpsWorks を使用して、いくつかのLaravel4ベースの PHP アプリをAmazonにデプロイしようとしています。これにはいくつかのことが必要です。

  • git からコードを取得する
  • getcomposer.com から composer.phar をダウンロードします。
  • 走るphp composer.phar install
  • いくつかの特定のフォルダーのアクセス許可を変更する

シェフに関しては完全に新鮮なので、最初にシェフの基本を理解する場所を探してから、上記のタスクを達成する方法を教えていただければ幸いです。

4

6 に答える 6

2

私はシェフの第一人者ではありませんが (通常は Puppet を使用します)、次のことを試してください。

git からコードを取得する

wget コマンドを実行することもできます (以下の例を参照)。

より洗練されたものが必要な場合は、http://docs.opscode.com/resource_deploy.html を参照してください

deploy_revision "/path/to/application" do
  repo 'ssh://name-of-git-repo/repos/repo.git'
  migrate false
  purge_before_symlink %w{one two folder/three}
  create_dirs_before_symlink []
  symlinks(
    "one"   => "one",
    "two"   => "two",
    "three" => "folder/three"
  )
  before_restart do
    # some Ruby code
  end
  notifies :restart, "service[foo]"
  notifies :restart, "service[bar]"
end

getcomposer.com から composer.phar をダウンロードします。

wgetを実行します。

ここからいくつかのコードを持ち上げました: http://cookingclouds.com/2012/06/23/chef-simple-cookbook-example/

基本的には、特定のフォルダーで wget を実行し、tar の内容を抽出し、新しいファイルのいくつかのアクセス許可を更新するだけです。これは、フォルダーがまだ存在しない場合にのみ行われます。

# Run a bash shell -  download and extract composer
bash "install_composer" do
     user "root"
     cwd "/folder/to/extact/to"
     code <<-EOH
       wget http://getcomposer.com/composer.tar.gz
       tar -xzf composer.tar.gz
       chown -R user:group /folder/to/extact/to
     EOH
     not_if "test -d /folder/to/extact/to"
end

php composer.phar install を実行します

http://docs.opscode.com/resource_execute.html

execute "composer install" do
  command "php composer.phar install && touch /var/log/.php_composer_installed"
  creates "/var/log/.php_composer_installed"
  action :run
end

これは一度だけ実行されます。それ以外の場合は、「作成」を削除すると、毎回実行されます。

いくつかの特定のフォルダーのアクセス許可を変更する

http://docs.opscode.com/resource.html

directory "/tmp/folder" do
  owner "root"
  group "root"
  mode 0755
  action :create
end

ディレクトリが既に存在する場合、何も起こりません。ディレクトリが何らかの方法で変更された場合、リソースは更新済みとしてマークされます。

ついに

検索は便利だと思います。Chef のサイトをブラウジングするのは絶望的です (掘り下げるには情報が多すぎます)。http://docs.opscode.com/search.html

于 2013-05-01T06:51:04.193 に答える
2

Drew Khouryの答えに1つ変更を加えて、ほとんど行きます。compose.phar をダウンロードするには、bash スクリプトで wget を実行する代わりに、 remote_file リソースを使用できます。

于 2013-05-01T07:32:13.853 に答える
0

または、ベンダー ディレクトリをコミットすることもできます。Laravel 4 と OpsWorks でいくつかのプロジェクトを実行しています。

于 2014-03-12T13:10:51.537 に答える
-1

私は Laravel と OpsWorks で同じ立場にいます。解決策を探していましたが、その後...

誰かがサブモジュールの 1 つにセキュリティ上の欠陥を挿入するとどうなりますか? これは、X 個の外部コードベースが常に 100% 安全であると信頼しているということですか?

私の理解に根本的な欠陥があるか、実稼働サーバーで composer を実行することが最も深刻な問題です。

プロジェクト リポジトリのコードが 100% そのままデプロイされることを確認しました。本番サーバーに外部モジュールをダウンロードすることはありません。

于 2013-05-12T11:41:27.573 に答える