Cloud Engineering/Ansible

Handler (핸들러) 작업을 실행 후 작업에 대한 변경이 있으며, notify 를 설정한 경우에만 핸들러가 실행된다. 핸들러는 notify: 로 설정한다. Ansible 공식 문서의 예제는 다음과 같다. --- - name: Verify apache installation hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root 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: /..
Ansbile 의 플레이북 파일을 작성할 때 조건문으로 작업을 제어할 수 있다. Ansbile에서는 when 이라는 키워드를 사용하여 조건을 걸 수 있다. 또한 비교연산자 및 키워드를 이용하여 값을 비교할 수 있다. 해당 조건문이 참이면 작업을 실행하고, 거짓이면 실행하지 않는다. 키워드 부호 의미 lt = greater or equal e =, == equal ne != not equal 1. 문자열 검사하기 해당 문자열과 일치하는지 / 포함되어 있는지 확인한다. match("PATTERN") : 패턴과 전체 문자열이 일치하는지 확인한다. Bool 값을 리턴한다. search("PATTERN") : 패턴이 문자열에 있는지 확인한다. Bool 값을 리턴한다. - hosts: ansi-node1 vars:..
반복문 (loop) Playbook 에서 반복되는 작업을 수행하기 위해서 반복문을 사용할 수 있다. 반복문은 loop 로 표기한다. 주의할 점은 반복문은 작업의 하위 옵션이 아니라, 작업을 어떻게 제어할지에 대한 설정이므로 실행할 모듈과 같은 라인에 써주어야 한다 ! 또한 다른 프로그래밍 언어와 다르게, Playbook 에서 loop 문을 사용할 때 list 를 참조하는 변수 명은 항상 item 으로 고정해서 사용한다. 반복문을 이용하여 간단하게 리스트를 출력해보는 플레이북 정의 파일이다. - hosts: ansi-node1 tasks: - debug: msg: "{{ item }}" loop: ["linux", "ubuntu", "window", "mac"] 다음과 같이 반복문에 사용할 리스트를 변수명..
Fact (팩트 변수) 란? 관리하는 노드의 정보를 가지고 있는 변수이다. 이 정보에는 운영체제, 로컬 변수, IP 주소, NIC 등의 정보가 포함된다. fact 변수는 setup 모듈을 이용해서 정보를 확인할 수 있다. Adhoc 과 플레이북을 통해 setup 모듈을 실행할 수 있다. 모든 노드들에 대한 팩트변수 내용 확인하기 ansible all -m setup 팩트 변수 이름 참조하기 setup 모듈을 이용해서 ansible_ 접두사가 붙은 지정된 변수 이름으로 참조하면 원하는 팩트변수의 정보를 얻을 수 있다. Adhoc 명령어로 팩트 변수 참조하는 예시 $ ansible ansi-node1 -m setup -a "filter=ansible_distribution” -m 옵션으로 모듈을 지정하고, ..
변수 정의하기 Ansible에서 변수를 정의할 수 있는 곳은 다음과 같다. 플레이북 외부 참조 파일 인벤토리 파일 명령의 -e 옵션 Ansible 에서는 변수를 key, value 형태로 정의한다. Playbook 에서 변수의 우선 순위 동일한 변수명을 가진 경우 플레이북에서 변수가 참조되는 우선순위는 다음과 같다. (우선 순위 높은 순으로 정렬되었다.) -e옵션으로 변수 지정 > 플레이북 vars_files 변수 > 플레이북에 정의된 변수 > host_vars 디렉토리의 호스트 변수 > Inventory 의 호스트 변수 > group_vars directory의 그룹 변수 > Inventory 의 그룹변수 1. 인벤토리 파일에 변수 정의하기 인벤토리 파일에서 host 변수 및 group 변수를 작성할 ..
Playbook 이란 여러 호스트들을 대상으로 반복해야 하는 작업, 재사용이 필요한 작업, 구성 관리 등이 필요할 때 Playbook을 정의해서 사용할 수 있다. Playbook 은 멱등성이라는 특징을 가진다. 멱등성이란 Ansible이 작업을 할 때 작업 상태가 원하는 최종 상태로 만들어진 경우 작업을 더 이상 반복하지 않는 특성이다. 그러나 멱등성이 적용되지 않는 몇몇 모듈들이 존재한다. 멱등성 예외 모듈 : command, shell, raw 같은 명령 모듈 또는 service 재시작 모듈은 해당하지 않는다. Playbook 의 구성 Playbook : 하나 이상의 Play를 가진다. Play: 하나 이상의 Task로 이루어져있다. Task : 하나의 Module과 Module의 옵션 및 arugm..
Ansible의 설정파일 Ansible의 설정파일은 ansible.cfg 에 적을 수 있다. 작동되는 방식에 대해 설정할 수 있다. 그런데 Ansible은 설정파일의 우선순위에 따라서 적용되는 설정이 다르다. 즉, 우선순위가 높은 설정을 기준으로 설정된다. Ansible 설정파일의 우선순위 1. ANSIBLE_CONFIG 환경 변수 2. 현재 디렉토리의 ansible.cfg 3. 홈 디렉토리의 ansible.cfg 4. /etc/ansible/ansible.cfg 예를 들어서 환경변수가 없으면 현재 디렉토리의 ansible.cfg가 실행될것이며, 현재 디렉토리에도 설정파일이 없으면 홈 디렉토리에 있는 설정 파일이 실행될 것이다. 아무것도 설정파일을 따로 만들지 않는 경우에는 /etc/ansible/ans..
Ad-Hoc 명령 관리하는 노드에 단일 작업을 수행할 때 사용한다. 반복적이거나 2개 이상의 작업을 하는 경우에는 Playbook 으로 수행한다. ansible [PATTERN] -m [MODULE] -a "[MODULE OPTIONS/ARGUMENT]" 예시 다음은 관리 노드 중 하나인 ansi-node2 라는 호스트를 재부팅시키는 Ad-Hoc 명령이다. $ ansible ansi-node2 -m reboot 현재 Ansible에서 사용할 수 있는 모든 모듈에 대한 정보 확인 $ ansible-doc -t module -l 특정 모듈에 대한 정보 확인하기 $ ansible-doc [MODULE_NAME] Ad Hoc 명령 vs Ansible Playbook 다음 그림은 동일한 작업을 수행하는 Ad Ho..
minjiwoo
'Cloud Engineering/Ansible' 카테고리의 글 목록