之前的方法是 mv nginx.conf nginx.conf.bak20210803 但是这样的话不易于追溯、回滚,也容易丢失。 现在的想法是,每个 ip 创建一个文件夹,文件夹下的路径跟服务器的路径一致,然后统一收集放到 git 下。 如 gitfolder/10.10.10.100/etc/nginx/nginx.conf gitfolder/10.10.10.100/etc/xxx.conf gitfolder/10.10.10.101/etc/nginx/nginx.conf gitfolder/10.10.10.101/etc/xxx.conf ... 更新再通过脚本更新。
你们的服务器是怎么管理的,有没有更好的方案?比如利用某软件现有功能管理( ansible ?)?
1
IgniteWhite 2021-08-03 18:39:40 +08:00
在用一个简单却强大的工具 dotbot https://github.com/anishathalye/dotbot
能使用各种按条件的 hook,实现不同机子的 dotfile 管理。dotbot 作为 submodule,整个 dotfiles 用 git 维护。点进我 github 的 dotfiles 是个例子,虽然是个人配置文件但是也针对不同机子和服务器的。 |
2
huangzxx 2021-08-03 23:50:14 +08:00
我们用 ansible-playbook
|
3
asdasdqqq OP @IgniteWhite get 新名词 dotfiles👍
|
5
sadfQED2 2021-08-04 09:22:17 +08:00 via Android
我们是把配置文件以及 dockerfile 都直接放到项目路径下面
|
6
huangmingyou 2021-08-04 11:12:28 +08:00
ansible playbook , 并且通过 git 进行版本管理。
|
7
libook 2021-08-04 11:30:33 +08:00
可以考虑用“配置中心”,有一些专门的软件和方案可以做这个。
如果跑在 VPS 里,并经常弹性增加和释放服务器的话,很多云厂商都有 VPC 的镜像功能,改配置可以打新镜像,然后用新镜像增加新的服务器,并释放旧的服务器,就完成了配置的更新,当然这个要求配置的修改可以无缝迁移。 如果你用 k8s 的话,可以用 k8s 的 secrets 方案 https://kubernetes.io/docs/concepts/configuration/secret/ |
8
asdasdqqq OP |
9
huangmingyou 2021-08-05 16:24:16 +08:00
---
- name: backup config shell: tar czpf /etc/nginx$(date +%Y%m%d%H%M).tgz /etc/nginx - name: sync nginx config synchronize: src: "./roles/nginx-orig-gallery/files/{{ ansible_ssh_host }}/" dest: /etc/nginx/ archive: yes delete: false recursive: yes owner: no group: no 就是简单的做一个目录 rsync 拷贝。目录按 ip 地址或者域名作为目录名,放到 files 目录下。 |
10
qinsi 2022-11-03 09:46:12 +08:00
@IgniteWhite 在用,确实不错。不过时常新机子 github 访问不了导致无法部署到新机器。感觉实现有点复杂,不太优雅。ansible 应该是个有前途的方式。
|