代码之家  ›  专栏  ›  技术社区  ›  vivek

在生产服务器上使用Jenkins进行部署的最佳方法

  •  0
  • vivek  · 技术社区  · 4 年前

    我想使用Jenkins进行生产部署,并寻找一种安全且合规的可接受方法。

    一点背景

    • 我想使用shell可执行文件创建一个简单的Jenkins作业,该作业将获取最新代码,替换一些文件,然后重新启动服务。
    • 我的生产服务器只能通过Jump服务器访问。

    当前方法

    • 我想在我的Jenkins中添加生产服务器作为代理,以避免登录到Jump服务器然后ssh到生产服务器的复杂性

    • 我们有三个这样的生产服务器需要进行部署,在上述情况下,我们必须将所有三个服务器添加到Jenkins中。

    这是正确的选择,还是我们应该使用Jump服务器作为代理,然后通过ssh连接到不同的机器??

    如果我们采用另一种方法,即Jump-server作为代理,那么运行git pull/refetch、service start-stop等命令作为ssh命令的参数是否可行? 我目前为这种方法编写的脚本看起来像这样-

    ssh username@production-server bash -c "'
    
    sudo systemctl stop nginx
    cd /home/username/code
    git fetch --all
    git checkout "$branch_name"
    sudo cp /home/username/code/index.html /usr/share/doc/HTML/index.html
    sudo systemctl start nginx
    
    '"
    

    此外,本脚本后面还会有一些if-else语句。

    所以总结一下我的问题-

    在Jenkins中直接添加生产服务器作为代理(Jenkins只能由特权人员访问)并运行这种命令/脚本,或者添加Jump服务器作为代理,然后在ssh上运行命令/脚本作为参数,可以吗?

    我们非常欢迎其他最佳方法/建议!

    0 回复  |  直到 4 年前
        1
  •  1
  •   VonC    4 年前

    在我的Jenkins中添加生产服务器作为代理,以避免登录到Jump服务器然后ssh到生产服务器的复杂性

    在我工作的机构中,这永远不会飞:SSH是 总是 被阻止,除非通过跳转服务器。

    任何部署实际上都是由以下人员完成的 Ansible ,它确实具有SSH连接授权来访问服务器。詹金斯在那里触发 tower-cli ,启动Ansible作业。