동적 및 정적 호스트와 변수를 사용하여 Ansible Inventory 관리

동적 및 정적 호스트와 변수를 사용하여 Ansible Inventory 관리

동적 및 정적 호스트와 변수 및 그룹이 조합된 환경을 관리하는 데 좋은 솔루션이 무엇인지 궁금합니다.

특정 작업(물리적 데이터베이스 노드)과 일부 동적 VM을 관리하는 Proxmox 호스트의 조합으로 데이터 센터의 물리적 호스트와 물리적 성능이 충분하지 않습니다(아웃소싱 성능 엿보기).

이 경우 동적 인벤토리를 사용하는 것이 좋습니다. 물론 AWS, Hetzner 등을 위한 플러그인도 있습니다. 하지만 이를 정적 항목과 결합하는 것이 가능합니까?

데이터베이스의 요청당 클라우드 VM 목록을 업데이트하는 모든 항목과 스크립트로 데이터베이스를 구축합니다. 정적 호스트 및 일부 그룹 변수, 호스트 변수와 함께 모든 동적 호스트가 데이터베이스에 저장됩니다. 그리고 Python 스크립트가 로드하고 내 플레이북에서 동적 인벤토리로 사용되는 JSON 동적 인벤토리를 출력하는 웹 서비스가 있습니다.

내 질문은 - 이런 종류의 설정을 가진 유일한 사람입니까? 일부 VMWare 호스트와 해당 호스트의 동적 수의 VM 및 기타 물리적 시스템이 있는 회사를 생각하면 이 설정을 위한 일종의 "도구"나 도움이 있어야 한다는 것이 "분명"할 것입니다. 하지만 제가 보기에는 정적 인벤토리(YAML, INI) 또는 동적 인벤토리(JSON)가 있습니다. 하지만 모든 관리자가 자신만의 동적 인벤토리 데이터베이스를 개발합니까? 아니면 특정 소프트웨어 "제품"이나 "프로젝트"가 있습니까? 아니면 "정적" 환경과 "동적" 환경에 대해 서로 다른 인벤토리를 보유하는 것이 "더 나은" 방법입니까?

답변1

Ansible은 여러 버전을 출시했습니다.인벤토리 플러그인. 예, 여러 옵션으로 결합하거나 -i여러 인벤토리가 포함된 디렉터리를 지정할 수 있습니다.

예를 들어 다음이 모두 inventory/stage/inventory/prod/디렉터리에 있을 수 있습니다.

  • 헤츠너를 위한 hcloud
  • AWS용 aws_ec2
  • 정적 호스트 목록이 있는 YAML
  • 맞춤 인벤토리 스크립트
  • 표현식에서 그룹 및 변수를 생성하도록 구성됨

그룹 이름은 특정 항목에 대해 일관되어야 하므로 연극에서는 정적 패턴을 사용할 수 있습니다.

구성된꽤 깔끔해요. 인벤토리 또는 호스트의 사실에 대한 Jinja 표현식을 사용하여 그룹 및 변수를 생성합니다. 예를 들어 일부 ec2 태그와 일부 호스트 이름 정규식이 그룹의 구성원이 되도록 할 수 있습니다.

이것이 충분하지 않다면, 자신만의 인벤토리 플러그인을 작성할 수도 있습니다. 일반적으로 이는 Proxmox 인벤토리 플러그인을 해킹하는 경우와 같이 하나의 API와 통신합니다. 또는 Ansible 측의 다중 인벤토리를 버리고 자신에게 적합한 다중 클라우드 도구를 찾아 인벤토리용 JSON을 내보내도록 하세요.

관련 정보