3장. Ansible 플레이북의 실용적인 예
Ansible은 클라우드 기반 REST API에서 Linux 및 Windows 시스템, 네트워킹 하드웨어 등에 이르기까지 다양한 장치 분류와 통신할 수 있습니다.
다음은 두 가지 유형의 서버를 자동으로 업데이트하는 두 가지 Ansible 모듈의 샘플입니다.
3.1. 플레이북 실행
플레이북은 맨 위에서 아래로 실행됩니다. 각 플레이 내에서 작업도 위에서 아래로 실행됩니다. 여러 '플레이'가 있는 플레이북은 다중 시스템 배포를 오케스트레이션하고, WebAssembly에서 하나의 플레이를 실행한 다음, 데이터베이스 서버에서 다른 플레이, 네트워크 인프라에서 세 번째 플레이 등을 오케스트레이션할 수 있습니다.
최소한 각 플레이는 다음 두 가지를 정의합니다.
- 패턴을 사용하여 대상으로 하는 관리형 노드
- 실행할 하나 이상의 작업
Ansible 2.10 이상에서는 플레이북에서 정규화된 컬렉션 이름을 사용하여 여러 컬렉션에 동일한 이름의 모듈을 포함할 수 있으므로(예: 사용자
) 올바른 모듈이 선택되었는지 확인합니다.
자세한 내용은 플레이북에서 컬렉션 사용을 참조하십시오.
이 예제에서 첫 번째 플레이는 웹 서버를 대상으로 합니다. 두 번째 플레이는 데이터베이스 서버를 대상으로 합니다.
--- - name: Update web servers hosts: webservers become: true tasks: - name: Ensure apache is at the latest version ansible.builtin.yum: name: httpd state: latest - name: Write the apache config file ansible.builtin.template: src: /srv/httpd.j2 dest: /etc/httpd.conf mode: "0644" - name: Update db servers hosts: databases become: true tasks: - name: Ensure postgresql is at the latest version ansible.builtin.yum: name: postgresql state: latest - name: Ensure that postgresql is started ansible.builtin.service: name: postgresql state: started
Playbook에는 두 개의 플레이가 포함되어 있습니다.
- 첫 번째는 웹 서버 소프트웨어가 최신 상태인지 확인하고 필요한 경우 업데이트를 실행합니다.
- 두 번째는 데이터베이스 서버 소프트웨어가 최신 상태인지 확인하고 필요한 경우 업데이트를 실행합니다.
플레이북은 단순한 호스트 행 및 작업 이상을 포함할 수 있습니다.
예를 들어 이 플레이북은 각 플레이에 대해 remote_user를 설정합니다. SSH 연결의 사용자 계정입니다. 플레이북, 플레이 또는 작업 수준에서 다른 플레이북 키워드를 추가하여 Ansible 작동 방식에 영향을 미칠 수 있습니다. 플레이북 키워드는 연결 플러그인, 권한 에스컬레이션 사용 여부, 오류 처리 방법 등을 제어할 수 있습니다.
Ansible을 사용하면 다양한 환경을 지원하기 위해 이러한 매개변수를 Ansible 구성 또는 인벤토리에서 명령줄 플래그로 설정할 수 있습니다. 이러한 데이터 소스에 대한 우선 순위 규칙을 학습하면 Ansible 에코시스템을 확장하는 데 도움이 될 수 있습니다.