すべてを統括する一人のシェフ


10

私はだシェフに探し EC2のような標準的なMagentoのホスティングオプションだけでなく、環境に両方- Magentoの展開を自動化します。私はググってみて、たくさんのレシピを見つけましたが、どれも標準的なものとして私を実際に攻撃するものはありません。より良い/最高の特定のシェフスクリプトはありますか?また、PHPを使用してchefのデプロイを以前に行ったことがある場合は、始めたときに知っておいてほしいことは何ですか。


2
Ansible(ansible.com/home)が存在することを知っていればよかったのですが。
リードブロムキスト2014

興味がある場合は、saltstack.comdocker.comを使用してください。どちらも有望に見えますが、私はどちらかで作業する機会がありませんでした。
beeplogic 14

1
capistrano-ashを実験してきました:github.com/augustash/capistrano-ash
pzirkind

Reidは何かを理解していると思います。Alanre:Ansible。クライアントにエージェント(ssh +キーで動作する)をインストールする必要はありません。これは宣言型システムであるため、べき等であり、一般に、使用すると「1つのことを行うだけで、それを簡単に実行できます。シェフ、人形、塩などのより堅牢なシステムと比較して、UNIXのような感覚。元々投稿してから久しぶりですが、シェフと一緒に仕事をして久しぶりの感想はありますか?
ブライアン 'BJ'ホフパウアJr.

回答:


6

万能のルーチンセットを用意することはほぼ不可能です。chef-clientが提供するホストのリストでrun を実行するBashスクリプトを作成することに成功しましたknife search。手順は次のようになります…

Ubuntu 12.04 LTS上のオープンソースChef Server 10.18.2

  1. 変数を初期化する
  2. GitHubから最新のリビジョンハッシュを取得 $branch
  3. 可用性の監視を無効にして、HTTP 503ステータスによるアラートを防止する
  4. すべてのWebおよびユーティリティホストをメンテナンスモードに切り替えます
  5. 配置ユーティリティ
    1. MagentoのcronとすべてのResqueワーカーを停止します
    2. ファイルシステムの依存関係に対処する
    3. シェフは定義されたリビジョンを新しいリリースとしてチェックアウトします
    4. Magentoの依存関係(パッケージ、モジュール、ファイルシステム、権限)に対処する
    5. 自動化のためにすべてのcronタスクとスクリプトを更新する
    6. すべてのモジュールをデプロイする(コンポーザー)
    7. キャッシュをクリア n98-magerun.phar
    8. で移行を実行する n98-magerun.phar
    9. Magento cronを再度有効にする
    10. Resqueワーカーを開始する
  6. 最初のWebホストをデプロイする
    1. ファイルシステムの依存関係に対処する
    2. シェフは定義さ$revisionれた新しいリリースをチェックアウトします
    3. Magentoの依存関係に対処する
    4. すべてのMagentoモジュールをデプロイする
  7. New Relicで新しいデプロイメントをマークする
  8. 可用性監視サービスを有効にする
  9. 他のすべてのWebホストへのロードバランサーサービスを無効にする
  10. Webホストへの展開を続行し、順次オンラインにする
  11. 検索ホストに対してChefルーチンを実行する

ソース:https : //gist.github.com/parhamr/6177160#file-2-deployment


4

これはどのように私がきた /なりたいシステム管理者を身に着けている間、この領域に近づい役割をDevOpsチーム。以下のほとんどは、私が従おうとする一般的な原則にすぎず、シェフ固有のものではありません。

当時はより多くのリソースがあることに気づき、私にとってPuppetを選びました。

私はapacheやphp5などの利用可能なさまざまなビルド済みモジュールを調べました。それらの多くは必要以上に機能しているようで、プラットフォームに慣れていないため、何が起こっているのか信頼できませんでした。各ノードタイプで実行する必要があることを特定するだけの方が簡単だと判断しました。

私は、チームのローカル開発環境(vargrant + virtual box)をプロビジョニングすることからプロセスを開始しました。各サービス/コンポーネントについて、モジュールを作成しました:php5、apache2、redis、mysqlなど。

開発環境が安定して動作するようになったら、QA環境の構築を開始しました。devと同じモジュールを再利用するWebサーバー、redis、varnishなどの汎用ノードタイプを定義しました。これが完了すると、ステージングとプロダクションには、最小限の変更が必要です。

レシピ/テンプレートを作成して作成するときに、再利用/一般化できるかどうかを検討する必要があります。ディストリビューション/プロジェクト/環境間で変化する可能性のあるパスやユーザー/グループなどをハードコーディングしないでください。あなたが一般化されたアプローチを見ているので、私は大きなハードルが* nixディストリビューション間の違いを扱うことになると思います。

最も重要なことは、キープがシンプルであることです。環境の最も重要で時間のかかる部分を自動化/標準化します。繰り返し、進化する。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.