在我的项目中,我将有很多微服务,对于本地/开发环境,我希望能够选择所需的微服务并自动获取/配置/泊坞化它们(可以选择设置{{1} }标志以获取所有服务)。
要实现我想使用主仓库的功能,我们将其命名为all
,此存储库中将包含backend-entry
文件,其中包含在所有/大多数服务(如revers-proxy)之间共享的图像DB(对于dev env,可以使用单个DB服务),依此类推。另外,我想将Ansible用作任务运行程序,以获取每个子存储库具有主剧本和子剧本的所有服务。我想在其中存储所有服务的服务文件夹(git克隆存储库)。
目录结构:
docker-compose
主要剧本- backend-entry
./devops
./docker # all docker related data
docker-compose.yml
# other docker related data like docker files, configs and so on
./ansible
./development
run.yml # main playbook
./services # folder to which holds sub playbooks
service_one.yml
service_two.yml
./services
./service_one/
./service_two/
可能仅包括所有子剧本,并且可能运行所有常规任务。每个子剧本都喜欢
run.yml
的任务是克隆/获取自己的存储库并运行所有与服务任务相关的任务。
我提出了获取子存储库的逻辑,这是一个问题:我应该将service_one.yml
文件夹添加到gitignore还是将它们作为git子模块?
我不熟悉git子模块,但对我而言,使用它的好处是可以采用集中的方式一次跟踪/更改所有存储库。但据我所知,它也有一个缺点,那就是每个开发人员都应始终将所有服务保留在他的计算机上,这可能是一笔巨大的开销。也许有人已经使用类似的设置工作并且可以分享他的想法和最佳实践?谢谢!