cchurch.scm

SCM

SCMからコードをチェックアウトします(git/hg/svn)。

要件

SSHを使用してチェックアウトする場合、scm_target_userが使用するためのデプロイメントキーが必要です。または、Ansible SSH接続のためにSSHエージェントフォワーディングを有効にする必要があります。

SCMパッケージをインストールする、他のユーザー(例:scm_target_user != ansible_user)としてチェックアウトする、またはscm_target_userアカウントを作成するには、sudoや類似の権限昇格が必要です。

役割の変数

githgまたはsvnのAnsibleモジュールに関する具体的なパラメータについては、それぞれのドキュメントを参照してください。

この役割を使用するために通常定義される変数は以下の通りです:

  • scm_type: git(デフォルト)、hgまたはsvnのいずれか。
  • scm_url: リポジトリのURL(例:http://server/repoまたはssh://server/repo)、必須。
  • scm_version: チェックアウトするブランチ、タグ、リビジョンまたはコミット(例:masterまたはHEAD)。
  • scm_force: SCMモジュールにforceオプションを渡すかどうかを示すブール値、既存の作業ディレクトリ内の変更されたファイルを破棄します。デフォルトはfalse
  • scm_delete_on_update: 更新前にscm_target_pathを削除するかどうかを示すブール値、デフォルトはfalse
  • scm_username: scm_urlにアクセスするためのユーザー名、scm_typesvnの時のみサポート。
  • scm_password: scm_urlにアクセスするためのパスワード、scm_typesvnの時のみサポート。
  • scm_target_path: チェックアウトのためのターゲットディレクトリ(デフォルトは"~/src")。
  • scm_target_user: チェックアウトのために移行するユーザー(デフォルトはansible_user、この場合は権限昇格は必要ありません)。このユーザーはansible_userと異なる場合に作成されます。ansible_userがユーザーを作成できない場合はエラーを無視します。
  • scm_target_user_home: scm_target_userを作成する場合に設定するホームディレクトリ。

以下の変数は、役割をカスタマイズするために使用することもできますが、ほとんどの状況では必要ありません:

  • scm_accept_hostkey: SSHホストキーを受け入れるかどうかを示すブール値、scm_typegitの時のみサポート、デフォルトはtrue
  • scm_depth: 浅いクローンを作成、最小値は1scm_typegitの時のみサポート;デフォルトは未指定。
  • scm_executable: githgまたはsvnバイナリのパス;デフォルトは未指定で、システムのバイナリパスを検索します。
  • scm_export: チェックアウト/更新の代わりにエクスポート;scm_typesvnの時のみサポート;デフォルトは未指定ですが、svnモジュールのデフォルトはfalse
  • scm_key_file: チェックアウトに使用するターゲットのプライベートキー ファイルのパス;デフォルトは未指定;scm_typegitの時のみサポート。
  • scm_purge: 更新時に未追跡ファイルを削除;scm_typehgの時のみサポート;デフォルトは未指定ですが、hgモジュールのデフォルトはfalse
  • scm_recursive: サブモジュールを含むリポジトリを再帰的にクローンするかどうかを示すブール値;scm_typegitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトはtrue
  • scm_remote: リモートの名前;scm_typegitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトは"origin"
  • scm_switch: 更新前にsvn switchを呼び出す;scm_typesvnの時のみサポート;デフォルトは未指定ですが、svnモジュールのデフォルトはtrue
  • scm_track_submodules: サブモジュールが最新のコミットを追跡するかどうかを示すブール値;scm_typegitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトはfalse
  • scm_update: オリジンリポジトリから新しいリビジョンを受け取るかどうかを示すブール値;デフォルトは未指定ですが、モジュールのデフォルトはtrue
  • scm_verify_commit: GPG署名されたコミットを検証するかどうかを示すブール値;scm_typegitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトはfalse
  • scm_packages: ansible_pkg_mgrscm_typeによるパッケージのマッピング。役割は必要なパッケージをインストールしようとし、適切な権限昇格が利用できない場合はエラーを無視します。yumaptpacmanまたはmacports以外のansible_pkg_mgrを使用するシステムを実行している場合を除いて、この変数を変更する必要は通常ありません。
  • scm_ssh_agent_forwarding: scm_target_useransible_userと異なる場合にSSHエージェントフォワーディングが機能するように修正を適用するかどうかを示すブール値;デフォルトはfalse
  • scm_ssh_auth_sock_sudoers_file: scm_ssh_agent_forwarding修正が有効な時にsudoers.dに追加されるファイルパス;デフォルトは"/etc/sudoers.d/ssh_auth_sock"

次の変数は、プレイまたは役割の呼び出しのために定義される場合があります(ただし、インベントリーグループやホスト変数として定義されている場合は機能しません):

  • scm_notify_on_updated: チェックアウトが変更されたときに通知するハンドラー名。デフォルトは"scm updated";カスタムハンドラーには通知名を変更するのではなく、"scm updated"をリッスンすることが一般的に推奨されます。

この役割は、更新タスクの結果を示すscm_update_resultファクトを各ホストに設定します。

依存関係

なし。

使用例のプレイブック

以下の使用例プレイブックは、公開のgitリポジトリをチェックアウトし、更新後にメッセージを表示します:

- hosts: all
  roles:
    - role: cchurch.scm
      vars:
        scm_type: git
        scm_url: https://github.com/cchurch/ansible-sign.git
        scm_target_path: ~/src/ansible-sign
        scm_version: master
  handlers:
    - name: ansible sign updated
      debug:
        msg: "{{ scm_target_path }}が{{ scm_url }}から{{ scm_update_result.after }}に更新されました。"
      listen: scm updated

ライセンス

BSD

著者情報

Chris Church (cchurch)

プロジェクトについて

Checkout code from SCM (git/hg/svn).

インストール
ansible-galaxy install cchurch.scm
ライセンス
other
ダウンロード
2.1k
所有者
Python/Django/Ansible, will code for sweet tea and beer.