Engineering/Ansible (10) 썸네일형 리스트형 [Ansible]10. Ansible Role 플레이북을 작성하다 보면 이전에 사용한 코드를 재활용할 여지가 많다. 하지만 플레이북 자체의 내용이 길고 복잡하다면 일일히 수정하기 어려워진다. 앤서블에서는 표준화된 디렉토리 구조로 컨텐츠들을 모듈화하여 코드 재사용 및 협업을 편리하게 할 수 있도록 Ansible role 이라는 기능을 제공한다. 또 Ansible galaxy를 통하여 작성한 롤을 공유할 수 있다. 앤서블 롤의 구조앤서블 롤은 아래와 같은 표준화된 디렉토리 구조를 가진다. 최상위 디렉토리인 'role'은 롤 자체의 이름을 의미하며, 하위 디렉토리들은 롤에서 목적에 따라 정의된 역할을 수행한다. 각 files와 templates을 제외한 각 하위토리 안에는 main.yml 파일이 존재한다. 최종적으로 롤이 실행될 때, main.yml 파일.. [Ansible] 9. 핸들러 및 작업 실패 처리 어떠한 작업이 이루어진 이후에 실행되어야만 하는 작업들이 있다. 예를 들어 서비스의 config를 변경 후에 변경사항을 적용하려면 서비스를 재시작 해야 하는데, 이때 핸들러를 사용하여 작업 할 수 있다. 핸들러는 대상 노드가 변경 될 때(play 결과가 changed일 때) 수행하게 된다. 앤서블 핸들러앤서블에서 핸들러를 사용하려면 notify 문을 이용하여 명시적으로 호출된 경우에 사용할 수 있다.[root@Ansible-Controller ch09_handler]# cat handler-ex.yml ---- hosts: node1 tasks: - name: restart rsyslog ansible.builtin.service: name: rsyslog state: rest.. [Ansible] 8. 반복문과 조건문을 이용한 제어문 구현 앤서블 플레이북에서도 loop 문과 when 문을 이용하여 반복문과 조건문을 구현할 수 있다.반복문앤서블에서는 loop 구문을 이용하여 작업을 반복하고, 반복 작업에서 추출한 변수를 item 변수에 담아 이용할 수 있다. 제어노드의 sshd와 rsyslog 서비스 상태를 체크하는 플레이북을 작성해보자. sshd와 rsyslog를 ansible.builtin.service 모듈을 이용해 각각 실행하는 플레이북 예제이다. [root@Ansible-Controller ch07]# cat check-services.yml ---- hosts: all tasks: - name: Check sshd state ansible.builtin.service: name: sshd stat.. [Ansible] 7. Ansible Facts 활용 Ansible Facts팩트는 Ansible이 관리 호스트의 자원 정보를 수집한 변수를 뜻한다. 팩트 변수에는 아래와 같은 정보들이 포함된다.호스트 이름커널 버전네트워크 인터페이스OS 버전CPU 정보메모리 정보HDD 정보이 처럼 활용성 높은 많은 정보를 수집하여 운용자는 제어 노드를 관리할 수 있다. 간단한 플레이북을 통해 팩트 변수를 살펴본다.[root@Ansible-Controller playbook]# cat print_facts.yml ---- name: ansible facts hosts: node1 gather_facts: True tasks: - name: Print Facts ansible.builtin.debug: var: ansible_facts 하지만 .. [Ansible] 6. Ansible Vault 인벤토리 파일이나 플레이북에 passwd, api 키 값, token 값 등 텍스트로 관리되서는 안되는 데이터들이 포함될 수 있다. 앤서블은 ansible vault 기능을 제공하여 암호화를 가능케한다.암호화된 파일 만들기파일 생성 단계부터 ansible-vault create 명령어를 이용하여 암호화된 파일을 생성할 수 있다.[root@Ansible-Controller ansible]# ansible-vault create vault_ex.ymlNew Vault password: Confirm New Vault password: [root@Ansible-Controller ansible]# cat vault_ex.yml $ANSIBLE_VAULT;1.1;AES256663565336630656435.. 이전 1 2 다음