我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔又来讲述运维部署的秘传绝技了。本文讲述的是:如何在运维代码层面上,免密码git pull代码。其实就是运维专属的git pull方案好了。好处就是:可以方便集成各种运维工具,做到代码自动化部署。

苏南大叔:如何设置 gitlab 的 deploykey,实现免密码 git pull 代码? - gitlab
如何设置 gitlab 的 deploykey,实现免密码 git pull 代码?(图4-1)

本文涉及的道具是:一个gitlab服务,一个代码分发服务器。在gitlab上的目标项目是project/demo。本文就不说gitlab的部署了,内容比较复杂,苏南大叔会在其它文章里面提及。

设置代码分发服务器

因为该服务器是用于代码分发的,那么在这个服务器上面,需要设置一个ssh的公钥私钥。那么,请查看这个系统目录,~/.ssh/。看看,该目录下面,是否有文件~/.ssh/id_rsa.pub存在。

如果这个目录下面没有配置好id_rsa.pub文件的话,在服务器上项目的根目录下面,使用git pull的时候,就会要求输入密码。而苏南大叔的目标是:设置无密码拉取git项目代码。

ls -al ~/.ssh/

如果没有看到id_rsa.pub文件,那么执行下面的命令。

ssh-keygen -t rsa -P ""

ssh-keygen这个命令,可以在任意地方执行。执行的结果就是在~/.ssh/目录下生成key信息。命令执行完毕后,苏南大叔需要查看~/.ssh/id_rsa.pub这个文件的内容。

cat ~/.ssh/id_rsa.pub 

设置gitlabdeploykey

deploy的英文意思就是:部署。本步骤的主要内容,就是设置gitlabdeploykey,就是部署的密钥

在上一步操作中,苏南大叔得到了id_rsa.pub这个文件的内容。接下来,苏南大叔要使得deploykeygitlab里面生效。
进入到gitlab找到对应的项目页,左侧菜单settings=>repository=>Deploy Keys

苏南大叔:如何设置 gitlab 的 deploykey,实现免密码 git pull 代码? - deploykey
如何设置 gitlab 的 deploykey,实现免密码 git pull 代码?(图4-2)

title可以随便写,内容Key填写~/.ssh/id_rsa.pub的正文。后面的Write access allowed的写权限,是否支持,请自行选择。常理来说,不应该设置写权限

苏南大叔:如何设置 gitlab 的 deploykey,实现免密码 git pull 代码? - deploykey_form
如何设置 gitlab 的 deploykey,实现免密码 git pull 代码?(图4-3)

当同一个测试服务器,要免密码拉取两个以上的项目的话,那么需要设置的Deploy Keys。需要到已有的Privately accessible deploy keys里面,选择已有的Deploy key,然后点击enable按钮,即可在第一个tabEnabled deploy keys里面,看到新生效的key了。

苏南大叔:如何设置 gitlab 的 deploykey,实现免密码 git pull 代码? - enable_key
如何设置 gitlab 的 deploykey,实现免密码 git pull 代码?(图4-4)

上述这个操作的意思就是说:Enabled deploy keys中的内容,是真正生效的key。而Privately accessible deploy keys里面,已经应用在其它项目上的key,这些key也是可以重复使用的。重复使用后,一个部署机的上的公钥,就可以拉取多个项目的内容了。

设置好deploykey之后,就可以在代码分发服务器上,免密码拉取git代码了。

设置代码分发服务器

这个代码分发服务器,就是第一步中,设置~/.ssh/目录内容的服务器。然后回到被更新的机器,首次设置的话,需要执行git clone,以后部署的时候,就单单git pull即可。下面的是条实例命令:

注意:苏南大叔在这里,并不建议您clone操作使用http的地址,应该使用git@类似的地址。下面的是命令行对比:

git clone http://gitlab/project/demo.git
git clone git@gitlab:project/demo.git

代码分发服务器的更新脚本

在代码分发服务器上,苏南大叔做了个.sh的更新脚本。以后更新的时候,就敲一下这个.sh命令的地址,就可以做到代码更新了。下面的脚本中,苏南大叔用到了一个rsync的命令,这里就做个预览吧。具体的更多详细内容,可以参见苏南大叔的后续文章。

cd /your_local_git_folder/
git pull
rsync -vzrltog --exclude-from=/data/shell/nocp/data-site /data/webhome/data-site1/ syncuser@192.168.1.9::data-site  --password-file=/root/rsync.password
rsync -vzrltog --exclude-from=/root/nocp.txt /root/data-site/ /website/data-site/

总结

本文的难点就在于获取和设置deploykey,做到免密拉取两个以上的项目代码,这可能是个小坑。本文就讲述这么多经验文章了。欢迎大家关注苏南大叔的博客。谢谢。

更多gitlab相关经验文章,请点击下面的链接查看。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   ssh    git