2016-12-28 6 views
0

私の質問を読んでくれてありがとう。私は新しいワークフローでの経験から少しの方向を探しています。私は最近、物事を更新しているし、いくつかのdevopsタスクのためにAnipalを追加し、私たちのリポジトリを専用のGitLabサーバに移しました。Gitlab(およびおそらくAnsible)を使った自動展開

現在のノード

  • 5本番サーバ
  • 1専用Gitlabサーバホスティングレポ取引のすべてのサイト
  • 1台のAnsible制御サーバ用
  • 2開発サーバ
  • 2 DBサーバ(すべてのボックスは在庫にあります)

私が達成しようとしているのは、自動化されたプロセスですが、標準のwebhooks、runnersを使用するべきかどうか、あるいは、おそらく、私のAnsibleコントロールサーバーに接続タスクを管理する必要があるかどうかはわかりません。

基本的に、各レポは、master(製造)およびdevelop(開発)ブランチを有する。誰かがこのブランチにプッシュしたときに、私はdevelopブランチを自動的に展開したいと思っています。さらに、マージ要求が承認され、生産ラインにマージされたときに、masterを手動でプロダクションに展開したいと思います。

私はAnsibleを新しくしていて、今はdevopsタスクでうまく動作していますが、Gitの可能性と私のような状況については不明です。経験のある人からの指示は、非常に有益であり、最も感謝しています。

+3

この投稿(私はそれを質問と呼ぶことさえありません)が[質問しない]セクション(http://stackoverflow.com/help/dont-ask)に記載されている基準を満たしていませんか?ほとんどの人は? – techraf

+1

あなたのビジネスニーズに合わせて個人用のCI/CDを設定することは、SOの質問に対してはかなり広範囲です。 –

+0

私は解答を求めていませんでしたが、私のようなgitのワークフローでAnsibleを使用することの可能性(またはその欠如)に関する教育的な回答が増えました。 –

答えて

0

私たちは、あらゆる種類のサーバー上での展開に使用できます。 Anabilitiesはgitとの統合性が高く、gitはAnsibleのモジュールをビルドしています。必要なのは、あなたのansible脚本で、このようないくつかの抜粋です。私の経験から

- git: repo=<your_git_repo> dest=<destination_directory_for_code> clone=yes version={{ branch_name }} depth=1 
    tags: 
    - <any_tags> 
    sudo: no 

、私はあなたに2つのことを伝えることができます:

  1. が必要な唯一の支店を展開し、全体をクローニングありませんレポは、特にレポが大きいときに役立ちます。 (上のコードに示されている)

  2. 深度= 1を使用すると、本質的に最後にコミットされたコミットログだけを保持することが指定されています。これは、クローンサイズを小さく保つだけでなく、展開されたコードが適切かどうかを判断するために最後に行われたコミットを知ることも助けます。自動展開部に

、あなたは同じ展開ジョブの変更のポーリング特定の枝を維持するためのジェンキンス/竹/トラヴィスCI /他のCIとすることができ、あなたのCIに同じスクリプトを維持することができます。各ciはgitとの統合性が優れています(Jenkins git pluginなど)。

私は本当に面白いとわかったの表示Example Provisioning and Deployment using ANsibleを表示しています。

非常に広範なドキュメントを参照することをお勧めします。私は個人的には、コマンドラインのドキュメント自体を使用しています:)

希望します。

編集: gitプラグインがgithub/gitlab/bitbucketで完全に正常に機能することを忘れてしまったので、gitプラグインをciでgitlabに問題なく使用できます。

関連する問題