Documentation

30. 모범 사례

30.1. 소스 제어 사용

|at|에서는 서버에 직접 저장되는 플레이북을 지원하지만, 플레이북, 역할 및 관련 세부 정보를 소스 제어에 저장하는 것이 좋습니다. 이렇게 하면 인프라 자동화 규칙을 변경한 시기와 이유를 설명하는 감사 추적이 가능합니다. 또한 인프라나 팀의 다른 부분과 플레이북을 쉽게 공유할 수 있습니다.

30.2. Ansible 파일 및 디렉터리 구조

Ansible 문서에서 Ansible Tips and Tricks <https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html>`_을 검토하십시오. 프로젝트에서 사용할 공통 역할 세트를 생성하는 경우 소스 제어 하위 모듈 또는 공통 위치(예: `/opt``)를 통해 액세스해야 합니다. 프로젝트에서 다른 프로젝트의 역할 또는 콘텐츠를 가져올 것으로 예상해서는 안 됩니다.

참고

|at|에서는 vars_prompt 질문을 대화식으로 허용하지 않으므로 플레이북에서 vars_prompt 기능을 사용해서는 안 됩니다. ``vars_prompt``를 사용해야 하는 경우 설문 조사 기능을 참조하고 사용하십시오.

참고

``pause``에서는 대화식으로 일시 중지를 취소할 수 없으므로 플레이북에서 시간 제한 없이 Ansible의 automation controller 기능을 사용해서는 안 됩니다. ``pause``를 사용해야 하는 경우 시간 초과를 설정해야 합니다.

작업 실행에서는 플레이북 디렉터리를 현재 작업 디렉터리로 사용하지만 작업은 이 디렉터리를 사용하는 대신 playbook_dir 변수를 사용하도록 코딩해야 합니다.

30.3. 동적 인벤토리 소스 사용

인프라에 클라우드 공급자이든 로컬 CMDB이든 진실의 외부 소스가 있는 경우, 인벤토리 동기화 프로세스를 정의하고 동적 인벤토리(클라우드 인벤토리 소스 포함)에 대한 지원을 사용하는 것이 가장 좋습니다. 이렇게 하면 인벤토리가 항상 최신 상태로 유지됩니다.

참고

``–overwrite_vars``를 설정하지 **않는**한, 편집 및 추가한 인벤토리 호스트 변수는 인벤토리를 동기화한 후에도 유지됩니다.

30.4. 인벤토리 변수 관리

group_vars/``host_vars/``를 사용하는 대신 변수 데이터를 호스트 및 그룹 정의(인벤토리 편집기 참조)와 함께 유지하는 것이 좋습니다. 동적 인벤토리 소스를 사용하는 경우 변수 덮어쓰기 옵션이 설정되어 있지 않으면 컨트롤러에서 이러한 변수를 데이터베이스와 동기화할 수 있습니다.

30.5. 자동 확장

“콜백” 기능을 사용하여 새 부팅 인스턴스에서 구성을 요청할 수 있도록 허용하면 자동 확장 시나리오 또는 프로비저닝 통합에 매우 유용합니다.

30.6. 더 큰 호스트 수

더 많은 실행이 병렬 처리되도록 하려면 작업 템플릿의 “포크”를 더 큰 값으로 설정하는 것이 좋습니다. Ansible 조정에 대한 자세한 내용은 `the Ansible blog <http://www.ansible.com/blog/ansible-performance-tuning>`__를 참조하십시오.

30.7. 지속적인 통합/지속적인 배포

Jenkins와 같은 지속적 통합 시스템의 경우 작업을 생성하려면 작업 템플릿에 대해 curl 요청을 수행해야 합니다. 작업 템플릿에 대한 인증 정보에는 특정 암호를 입력하라는 메시지가 표시되지 않아야 합니다. 구성 및 사용 지침은 `CLI documentation`_를 참조하십시오.