cchurch.scm
SCM
从版本控制系统(git/hg/svn)检出代码。
要求
如果使用SSH检出,则必须为scm_target_user
提供一个部署密钥,或者需要启用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
:布尔值,指示是否应用修复以允许SSH代理转发在scm_target_user
与ansible_user
不同时工作;角色默认值为false
。scm_ssh_auth_sock_sudoers_file
:当启用scm_ssh_agent_forwarding
修复时要添加到sudoers.d
的文件路径;角色默认值为"/etc/sudoers.d/ssh_auth_sock"
。
以下变量可以在play或角色调用中定义(但如果作为清单组或主机变量定义则无效):
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.