CLOUD/IaC

[Ansible] Control node & Managed node

alsruds 2023. 3. 28. 17:51

[ Ansible 이란? ]

스토리지, 서버, 네트워킹을 자동화하는 구성 관리 플랫폼

* 연산을 여러 번 적용하더라도 결과가 달라지지 않음 (멱등성)

 

[ Ansible 구성요소 ]

● Control Node

》 Ansible 실행

 

Managed Node

Ansible로 관리되는 서버

Ansible이 설치되지 않음

 

Inventory

Managed Node 목록

 

Module

Anisible 코드 단위

리눅스 명령어 하나가 모듈 하나

 

Playbook

반복 작업 실행 가능

Module을 모아놓은 것

Control Node에서 어떤 inventory에게 어떤 playbook을 실행할 것인지

 

 

[ Ansible 실습 ]

◎ 가상머신 3대 준비 CentOS 8

Control Node : 200.200.200.157

Managed Node : 200.200.200.158 / 200.200.200.159

 

 

● 설치

# repository 설치
yum install -y epel-release

# 홈페이지에서 맞는 버전 다운로드
wget [다운로드 링크]

# ansible 설치 (2.8버전 사용)
yum install -y ansible-2.8.8-1.el8.noarch.rpm

 

● 키 생성

》 Control Node에서 Manage Node에 접속할 수 있게

키는 한 번만 생성

# 키 생성
ssh-keygen

# 키 복사
ssh-copy-id root@[managed node ip]

# 접속해보기 (패스워드 없이 가능)
ssh root@[managed node ip]

 

● /etc/ansible/hosts  파일 설정 (inventory)

inventory에 host 추가

managed node 지정

server:
  200.200.200.158		# managed node ip 작성
  200.200.200.159

 

custom inventory 생성

원하는 곳에 inventory 생성

yml 형

# vi hosts

all:
  children:
  # 이름 마음대로 설정 가능
    server:
      hosts:
        200.200.200.158

 

확인

ansible server -i hosts -m ping

 

● host 한 대 더 추가 후 playbook 작성

1. 키 복사

2. 인벤토리에 호스트 추가

3. 커스텀 인벤토리 작성

4. playbook 작성

# 키 복사
ssh-copy-id root@[managed node ip]

# inventory에 host 추가 : /etc/ansible/hosts
all:
  children:
    server:
      hosts:
        200.200.200.158:
        200.200.200.159:

# custom inventory : /root/test/hosts
all:
  children:
    server:
      hosts:
        200.200.200.158:
    db:
      hosts:
        200.200.200.159:
        
# playbook 작성 : /root/test/playbook
- hosts: ["server", "db"]
  tasks:
  - name: Linux Command		# 화면에 출력하고 싶은 아무 이름
    shell: \
      touch /root/ansible_test	# managed node 에 파일 생성
    become: yes			# 관리자 권한으로 실행
  
  - name: Linux Command2
    shell: \
      touch /root/ansible_test2
    become: yes

 

 확인

ansible-playbook -i hosts playbook