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.