f500.project_deploy_module

プロジェクトデプロイモジュール (deploy_helper)

このモジュールは、ansible-modules-extra用に提案されたdeploy_helperモジュールです。

一般的な説明(プロジェクトの例とフォルダ構造から始めます):

ルート: リリース: - 20140415234508 - 20140415235146 - 20140416082818

共有:
    - セッション
    - アップロード

現在: -> リリース/20140416082818

'releases'フォルダには、利用可能なすべてのリリースが格納されます。リリースはデプロイされるアプリケーションの完全なビルドです。例えば、リポジトリのクローンや、ファイルシステム上のローカルフォルダの同期が考えられます。タイムスタンプ付きのフォルダを持つことは異なるリリースを持つ一つの方法ですが、gitタグやコミットハッシュなど、自分自身の戦略を選ぶこともできます。

デプロイ中、新しいフォルダがリリースフォルダ内に作成され、必要なビルドステップが実行されます。新しいビルドが準備できたら、'current'シンボリックリンクがこのビルドへのリンクに置き換えられ、デプロイ手順が「完了」します。

'共有'フォルダには、リリース間で共有されるリソースが保存されます。例えば、ウェブサーバーのセッションファイルや、アプリケーションのユーザーによってアップロードされたファイルなどです。リリースフォルダから共有のサブフォルダを指すシンボリックリンクを持つことは非常に一般的で、これらのリンクを作成することはビルドステップの一部として自動化されます。

'current'シンボリックリンクは、リリースの1つを指します。おそらく最新のリリースであり、デプロイが進行中でない限りそうです。プロジェクトのウェブサーバーのルートは、このシンボリックリンクを通じてアクセスされるため、新しいリリースに切り替える際の「ダウンタイム」は、リンクを切り替えるのにかかる時間に抑えられます。

成功したビルドと未完了のビルドを区別するために、進行中のリリースのフォルダにファイルを置くことができます。このファイルの存在が未完了を示し、クリーンアップ時に自動的に削除される手続きが可能になります。

典型的な使用法:

- name: デプロイルートの初期化と実情の収集
  deploy_helper: path=/path/to/root
- name: 新しいリリースフォルダにプロジェクトをクローン
  git: repo=git://foosball.example.org/path/to/repo.git dest={{ deploy_helper.new_release_path }} version=v1.1.1
- name: 未完了のファイルを追加し、成功した場合のクリーンアップを可能にする
  file: path={{ deploy_helper.new_release_path }}/{{ deploy_helper.unfinished_filename }} state=touch
- name: 依存管理ツールの実行など、ビルドステップを実行
  composer: command=install working_dir={{ deploy_helper.new_release_path }}
- name: 共有フォルダにフォルダを作成
  file: path='{{ deploy_helper.shared_path }}/{{ item }}' state=directory
  with_items: ['sessions', 'uploads']
- name: 新しいリリースから共有フォルダへのシンボリックリンクを追加
  file: path='{{ deploy_helper.new_release_path }}/{{ item.path }}'
        src='{{ deploy_helper.shared_path }}/{{ item.src }}'
        state=link
  with_items:
      - { path: "app/sessions", src: "sessions" }
      - { path: "web/uploads",  src: "uploads" }
- name: デプロイを完了し、未完了のファイルを削除し、シンボリックリンクを切り替え
  deploy_helper: path=/path/to/root release={{ deploy_helper.new_release }} state=finalize

デプロイ前の実情収集

- name: 'state=query'を実行して、何も変更せずに実情を収集
  deploy_helper: path=/path/to/root state=query

後で 'state=present'を呼び出す際には、'release'パラメータを設定するのを忘れないでください

- name: デプロイルートの初期化
  deploy_helper: path=/path/to/root release={{ deploy_helper.new_release }} state=present

すべてのパスは絶対パスまたは相対パスで指定できます('path'パラメータに対して)

- deploy_helper: path=/path/to/root
                 releases_path=/var/www/project/releases
                 shared_path=/var/www/shared
                 current_path=/var/www/active

自分自身のリリース命名戦略を使用する(この場合はバージョンタグ):

- deploy_helper: path=/path/to/root release=v1.1.1 state=present
- deploy_helper: path=/path/to/root release={{ deploy_helper.new_release }} state=finalize

異なる未完了ファイル名を使用する:

- deploy_helper: path=/path/to/root
                 unfinished_filename=README.md
                 release={{ deploy_helper.new_release }}
                 state=finalize

古いビルドのクリーンアップを延期する:

- deploy_helper: path=/path/to/root release={{ deploy_helper.new_release }} state=finalize clean=False
- deploy_helper: path=/path/to/root state=clean

新しいデプロイの前にクリーンアップを実行する

- deploy_helper: path=/path/to/root state=clean
- deploy_helper: path=/path/to/root state=present

もっと古いリリースを保持する:

- deploy_helper: path=/path/to/root release={{ deploy_helper.new_release }} state=finalize keep_releases=10

または、finalizeで 'clean=false'を使用した場合:

- deploy_helper: path=/path/to/root state=clean keep_releases=10

プロジェクトルートフォルダ全体を削除する

- deploy_helper: path=/path/to/root state=absent

モジュールから返された実情をデバッグする

- deploy_helper: path=/path/to/root
- debug: var=deploy_helper

ライセンス

LGPL

著者情報

ラモン・デ・ラ・フエンテ, ramon@delafuente.nl

プロジェクトについて

Deploy_helper module for building (Capistrano like) deploy roles

インストール
ansible-galaxy install f500.project_deploy_module
ライセンス
lgpl-3.0
ダウンロード
6.8k
所有者
Open source contributions by Future500