이것은 환경 변수 / 구조에 관한 방법과 조언에 대한 매우 광범위한 질문입니다. 그러나 궁극적으로 '환경 변수를 어떻게 저장해야합니까?'라는 매우 구체적인 질문에 대한 답을 찾고 있습니다.
먼저 몇 가지 설명이 있습니다.
- 제 환경은 서버가 3 대에서 10 대 사이 일 수 있으며 특정 고객의 인프라를 포함하는 방법입니다.
- 각 환경에는 몇 가지 주요 입력 (이름, 크기 등)에서 자동으로 생성되는 몇 가지 변수가 있습니다.
지금 우리는 모든 환경 변수를 다음과 같은 구조로 저장합니다.
<playbook>.yml # Various playbooks for deployment
roles/windows # Ansible role for Ubuntu
roles/ubuntu # Ansible role for Ubuntu
config/hosts/<name>.yml # Ansible inventory
config/hosts/vars/<name>.json # Environment specific variables
현재 설정은 위의 git 저장소에서 하위 모듈로 초기화되었습니다. 변수 파일이 다소 자주 변경되면 커밋 사이에서 데이터 변경 문제가 발생하여 변경 사항을 추적하기가 점점 더 어려워집니다.
개인적으로 살펴보면 모든 고객 변수를 중앙 집중식 / 확장 가능한 방식으로 저장 한 다음 동적 인벤토리를 사용하여 연결 해야 합니다.
Consul과 같이 필요한 것의 일부를 수행하는 것처럼 보이는 몇 가지 기술이 있다는 것을 알고 있지만 약간 다른 작은 응용 프로그램이 아닌 하나의 큰 응용 프로그램을 제공하는 환경에서 가장 잘 작동하는 것으로 보입니다.
본질적으로 인벤토리 스크립트를 작성하고 모든 데이터를 의도하지 않은 내장 데이터베이스에 넣은 다음 아무것도 바뀌지 않는 것처럼 계속 진행해야합니다. 나는 이것이 현재 저장하고있는 많은 데이터를 잠재적으로 정리하고 데이터를 다시 제공하는 것을 확장하는 대신 데이터를 저장하는 다른 방법을 조사 할 수있는 방법으로 생각합니다.
하나, 둘 또는 세 개의 거대한 환경이 아닌 많은 소규모 환경을 처리해야 할 때 누군가가 코드로 인프라를 구현 한 경험이 있기를 바랍니다.
어떤 제안?