我还是 DevOps 和系统管理员的新手,几天前我想完全重新安装服务器上的所有内容,并正确设置应用程序的服务和部署,现在我的问题是如何正确处理自动部署应用程序、构建应用程序、自动更新应用程序并在崩溃时重新启动应用程序。
之前我使用简单的 bash 脚本来完成此操作,该脚本会在后台运行并自动检查更新,如果远程存储库中有较新版本则部署它们。
我已经对该主题进行了一些研究,并发现了有关 docker 和 docker、kubernetes 和 docker compose 的信息。它们一开始看起来都很完美,但当我进一步研究该主题时,我并不完全明白它们的必要性,因为我的应用程序不需要与主操作系统隔离或在完全独立的实例上运行,这些应用程序可以在每个主要内核上运行。
现在我想知道的是,是否有任何工具或应用程序可以实现这一点,我特别需要
- 如果有任何更新,则从远程存储库中提取(也可以使用 Github Actions 实现,以触发服务器上的操作)
- 自动构建更新的源并重新启动应用程序
- 如果应用程序崩溃或系统因任何原因崩溃,请重新启动。
答案1
不使用容器来部署应用是完全可以接受的。我们一直在这么做,而且流程众所周知,并且有记录。
从你的描述来看,你似乎想要协调应用程序的部署,并且需要一个工具来执行此操作。我建议从 ansible 之类的工具开始。它非常简单易上手但其规模将达到您能想象到的程度。不过,我暂时不会涉及 RHEL 特定的组件,如 Tower 或 Automation Platform。在您对 Ansible 有很好的理解之前,请跳过所有这些内容。
为了演示简单性,下面是我编写的安装 Ansible 剧本全部各种 Linux 发行版上可用的更新。我敢肯定,您可能不会理解其中的一些内容,但您理解的部分将非常明显。
---
- hosts: all
strategy: free
tasks:
- block:
- name: Update all packages
dnf:
name: "*"
state: latest
update_cache: yes
- name: Autoremove old packages
dnf:
autoremove: yes
when: ansible_pkg_mgr == 'dnf'
- block:
- name: Update all packages
yum:
name: "*"
state: latest
update_cache: yes
- name: Autoremove old packages
yum:
autoremove: yes
when: ansible_pkg_mgr == 'yum'
- block:
- name: Update all packages
apt:
name: "*"
state: latest
update_cache: yes
- name: Autoremove old packages
apt:
autoremove: yes
when: ansible_pkg_mgr == 'apt'