Fact (팩트 변수) 란? 관리하는 노드의 정보를 가지고 있는 변수이다. 이 정보에는 운영체제, 로컬 변수, IP 주소, NIC 등의 정보가 포함된다. fact 변수는 setup 모듈을 이용해서 정보를 확인할 수 있다. Adhoc 과 플레이북을 통해 setup 모듈을 실행할 수 있다. 모든 노드들에 대한 팩트변수 내용 확인하기 ansible all -m setup 팩트 변수 이름 참조하기 setup 모듈을 이용해서 ansible_ 접두사가 붙은 지정된 변수 이름으로 참조하면 원하는 팩트변수의 정보를 얻을 수 있다. Adhoc 명령어로 팩트 변수 참조하는 예시 $ ansible ansi-node1 -m setup -a "filter=ansible_distribution” -m 옵션으로 모듈을 지정하고, ..
전체 글
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.변수 정의하기 Ansible에서 변수를 정의할 수 있는 곳은 다음과 같다. 플레이북 외부 참조 파일 인벤토리 파일 명령의 -e 옵션 Ansible 에서는 변수를 key, value 형태로 정의한다. Playbook 에서 변수의 우선 순위 동일한 변수명을 가진 경우 플레이북에서 변수가 참조되는 우선순위는 다음과 같다. (우선 순위 높은 순으로 정렬되었다.) -e옵션으로 변수 지정 > 플레이북 vars_files 변수 > 플레이북에 정의된 변수 > host_vars 디렉토리의 호스트 변수 > Inventory 의 호스트 변수 > group_vars directory의 그룹 변수 > Inventory 의 그룹변수 1. 인벤토리 파일에 변수 정의하기 인벤토리 파일에서 host 변수 및 group 변수를 작성할 ..
https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 시간초과 풀이 단순하게 구현했더니 시간초과 난다 ㅎㅎ import sys input = sys.stdin.readline r, c = map(int, input().split()) board = [] for i in range(r): data = input() temp = [] for j in range(c): temp.append(data[j]) board.append(temp) dx =..
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..
Inventory 란 Ansible이 관리하는 호스트들의 목록에 대해 설정하는 파일이다. 호스트들을 그룹 및 중첩 그룹으로 묶어서 관리할 수 있다. 인벤토리 파일은 INI , YAML 형식으로 정의할 수 있다. Default 인벤토리 파일 위치 : /etc/ansible/hosts 인벤토리를 지정하지 않은 경우 Default 인벤토리에서 참조된다. Inventory 조회하기 new-inventory 파일 예시 ansi-master1 # control host [group1] # 그룹명 ansi-node1 # 해당 호스트 ansi-node2 [group2] ansi-node3 [total-group:children] group1 group2 중첩 그룹을 지정할 때는 [중첩그룹이름:children] 이라고 ..
Ansible 이란 Ansible은 IaC 도구의 한 종류이다. 즉, 말그대로 인프라를 자동화 할 수 있는 도구이다. Ansible로 호스트들을 관리 및 구성하고, 배포를 자동화 할 수 있다. Ansible은 openSSH를 기본 전송 방법으로 사용한다. 따라서 보안과 신뢰성을 가지고 통신한다. Ansible에서는 에이전트 없이 Ansible이 바로 호스트들을 관리한다. Ansible은 절차적으로 수행된다. 작업이 정해진 순서대로 실행되어서 원하는 상태에 도달한다. IaC (Infrastructure as Code) 전통적인 인프라 환경에서는 수동으로 각각의 인프라를 구성해주어야 했다. 수동으로 관리하게 되면, 작업 속도도 느리고 사람이 수동으로 구성하다보니 실수와 같은 문제가 일어날 수 있다. 또한 비..