2016-10-04 27 views
1

私は、パイロットから生産者のAnsibleへの切り替えに際し、ベストプラクティスについての質問があります。私たちは、Animesを使用して、yumやその他のレポでは利用できない製品やパッチをインストールしています。彼らは600MBまでのzipファイルとして到着し、それらをzipファイルとしてサーバーにプッシュして解凍します。これはすべて正常に動作します。歴史的に、プロジェクトのファイル/製品とファイル/パッチディレクトリにこれらのzipを保存しています。大容量の大容量ファイル

プロジェクトをGit(Bitbucket)に移行しています。多くの人が、Gitにバイナリを格納すべきではないと言います。試してみると、大きなファイルをコミットしたりプッシュしたりするのには限界がありました(タイムアウトが発生します)。プロジェクトディレクトリにあるサーバーに保存するだけでは、プロジェクトの更新時に実質的な製品ライブラリやパッチを吹き飛ばすため、プロジェクトの「更新時に削除」設定を有効にしないように注意する必要があります。それは少し不安定です。

他の人が大容量のファイルを格納していて、どうすればAnsibleを使ってそれらを配布していますか?それらはプロジェクトの外部に保存され、完全修飾パスを使用して参照されていますか?これらの大きなファイルに対して、Anabilitiesがフェッチできる他の形式のレポを実装しましたか?どんな指導も高く評価されます。

答えて

1

まず第一に、実際にはGitにバイナリを格納したくないということです。レポのクローン作成(開発とデプロイの両方)とプロジェクトのナビゲートを簡単に行うことができます。

バイナリやアーティファクトリポジトリのいくつかの形式で、バイナリがAnipalを使用して展開する必要があるいくつかの大きなバイナリを持っている場合。私たちの場合は、apt reposのスナップショットを格納するのにAptly、一般的なバイナリ(普通はzipファイルですが、時にはWARファイルや他の多くのものも)のためにArtifactoryを使います。

Aptlyの場合、通常のapt repoのように、Artifactoryの場合はAnsibleのget_urlモジュールを使用して、中央のArtifactoryサーバーからバイナリをダウンロードします。

1

大規模なファイルをGitに保存することはお勧めできません。すべての開発者は、これらのファイルのすべてのコピーをいつもチェックアウトに入れておく必要があります。これを緩和するためのさまざまなアプローチを見つけることができますwith a simple web search

Anipalに関しては、これはあまり変わってはいけません。あなたがAnsibleを実行しているマシン上にソースファイルを保持するソリューションを使用する場合は、前と同じようにソースファイルをコピーし続けることができます。

また、多くの人がそれらのファイルを別のファイルストア(S3やローカルファイルサーバーなど)に保存し、これらのファイルをサーバーからダウンロードするためのAnsibleルール参照のリモートURLを持っています。これにより、ローカルマシンでダウンロードする必要がなくなります。サーバーとローカルマシンではなく、サーバーとファイルサーバーの間で帯域幅を使用します(おそらくこれには調整されていない可能性があります)。 HTTP(S)は、SSHよりもファイルを転送する方がはるかに効率的です。

これらの外部システムでは、古いバージョンが必要なバージョンのAnipalコードをチェックアウトするときに、古いバージョンのパッケージが使用可能であることを確認する必要があります。いくつかのgitソリューションはこれを自動的に処理しますが、ファイルパスにバージョン番号またはチェックサムを含めることで自分で行うこともできます。

関連する問題