0

当社の e コマース Web サイトでは、Ansible で次のデプロイ プロセスを使用します。

  • ソースをリポジトリからリモート マシンにプルする
  • このリポジトリへのシンボリックリンク/var/www/mysite/current
  • 設定ファイルのシンボリックリンク

しかし、必要のないファイルを含むすべてのリポジトリをリモートに配置できるため、コードをデプロイするのが最善の方法かどうかはわかりません。

だから私はそれがより良いかどうか疑問に思っていました:

  • コードをローカルでプルします (たとえば、tmp で)
  • アーカイブを作成し、アーカイブをリモートに直接アップロードします/var/www/mysite/release/xxxxxxx
  • 現在にリリースするシンボリックリンク

どう思いますか?Ansibleでそれを行う方法はありますか?

ありがとうございました。

4

1 に答える 1

1

展開環境の複雑さをすべて知らなくても、「最良の」答えがあるかどうかは難しい問題です。そうは言っても、あなたが言ったことに基づいて、いくつかのことを考慮に入れます。

リポジトリ全体をデプロイすることが問題になるのはなぜですか?

コードと相互作用しない大きなバイナリ ファイルを保存していませんか? それらを別のリポジトリに分割するか、別の方法で管理することを検討することをお勧めします (たとえば、大きなディスク イメージは、git に保持するのではなく、ビルド システムで提供できます)。これらの他のコンポーネントを含むサブモジュールも、必要に応じてサブモジュールをプルすることなくリポジトリを複製できるため、有用なアプローチになる可能性があります。

それとも、git リポジトリの大きな履歴が原因でクローンが大きくなっているのでしょうか? その場合、Ansible の git モジュールがサポートする浅いクローンを作成できます。

アーカイブとコピー

これは、必要以上に複雑なソリューションのように思えます。

おそらくこれには、Ansible リポジトリで削除するファイルのリストを保持し (Ansible コードとターゲットのデプロイされたリポジトリの結合を増やす)、ローカル クローンを一時ファイルに調整し、ファイルを削除し、アーカイブを実行し、リモート転送を実行する必要があります。 、リモート解凍を行います。

これは、単に Ansiblegitサブモジュールを呼び出すこととは対照的です。

必要のないところに複雑さを加えるのは嫌いです。私は最も単純なアプローチを目指しています。

于 2015-10-08T18:54:07.333 に答える