cchurch.scm
SCM
SCMからコードをチェックアウトします(git/hg/svn)。
要件
SSHを使用してチェックアウトする場合、scm_target_userが使用するためのデプロイメントキーが必要です。または、Ansible SSH接続のためにSSHエージェントフォワーディングを有効にする必要があります。
SCMパッケージをインストールする、他のユーザー(例:scm_target_user != ansible_user)としてチェックアウトする、またはscm_target_userアカウントを作成するには、sudoや類似の権限昇格が必要です。
役割の変数
git、hgまたは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_typeがsvnの時のみサポート。scm_password:scm_urlにアクセスするためのパスワード、scm_typeがsvnの時のみサポート。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_typeがgitの時のみサポート、デフォルトはtrue。scm_depth: 浅いクローンを作成、最小値は1;scm_typeがgitの時のみサポート;デフォルトは未指定。scm_executable:git、hgまたはsvnバイナリのパス;デフォルトは未指定で、システムのバイナリパスを検索します。scm_export: チェックアウト/更新の代わりにエクスポート;scm_typeがsvnの時のみサポート;デフォルトは未指定ですが、svnモジュールのデフォルトはfalse。scm_key_file: チェックアウトに使用するターゲットのプライベートキー ファイルのパス;デフォルトは未指定;scm_typeがgitの時のみサポート。scm_purge: 更新時に未追跡ファイルを削除;scm_typeがhgの時のみサポート;デフォルトは未指定ですが、hgモジュールのデフォルトはfalse。scm_recursive: サブモジュールを含むリポジトリを再帰的にクローンするかどうかを示すブール値;scm_typeがgitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトはtrue。scm_remote: リモートの名前;scm_typeがgitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトは"origin"。scm_switch: 更新前にsvn switchを呼び出す;scm_typeがsvnの時のみサポート;デフォルトは未指定ですが、svnモジュールのデフォルトはtrue。scm_track_submodules: サブモジュールが最新のコミットを追跡するかどうかを示すブール値;scm_typeがgitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトはfalse。scm_update: オリジンリポジトリから新しいリビジョンを受け取るかどうかを示すブール値;デフォルトは未指定ですが、モジュールのデフォルトはtrue。scm_verify_commit: GPG署名されたコミットを検証するかどうかを示すブール値;scm_typeがgitの時のみサポート;デフォルトは未指定ですが、gitモジュールのデフォルトはfalse。scm_packages:ansible_pkg_mgrとscm_typeによるパッケージのマッピング。役割は必要なパッケージをインストールしようとし、適切な権限昇格が利用できない場合はエラーを無視します。yum、apt、pacmanまたはmacports以外のansible_pkg_mgrを使用するシステムを実行している場合を除いて、この変数を変更する必要は通常ありません。scm_ssh_agent_forwarding:scm_target_userがansible_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)
インストール
ansible-galaxy install cchurch.scmライセンス
other
ダウンロード
2.1k
所有者
Python/Django/Ansible, will code for sweet tea and beer.
