Ansible을 활용한 자동화 구성 관리(22.04.13)

정적 인벤토리

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#intro-inventory

기본 인벤토리 파일: /etc/ansible/hosts

사용하지 X

기본 위치에 있는 인벤토리 파일 아니면: -i 옵션 사용

포멧: ini, yaml

ini 형식의 예

key=value

[Section]
key=value
key
mail.example.com

[webservers]
foo.example.com
bar.example.com
three.example.com

[dbservers]
one.example.com
two.example.com
three.example.com

[ ]: 인벤토리 그룹

하나의 노드는 하나의 그룹에만 속해야 한다: False

all:
  hosts:
    mail.example.com:
  children:
    webservers:
      hosts:
        foo.example.com:
        bar.example.com:
    dbservers:
      hosts:
        one.example.com:
        two.example.com:
        three.example.com:

기본 그룹

  • all
  • ungrouped

주의
인벤토리 생성 원칙
간결하게...

그룹에 호스트를 분류

  • what
  • where
  • when

호스의 범위

[webservers]
www[01:50].example.com
192.168.100.[10:19]

인벤토리 변수

[webservers]
www[01:50].example.com A=100 B=200
192.168.100.[10:19]

인벤토리 그룹 변수

[atlanta]
host1
host2

[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com

중첩 그룹

[atlanta]
host1
host2

[raleigh]
host2
host3

[southeast:children]
atlanta
raleigh

[usa:children]
southeast

인벤토리 파일 확인

생성한 인벤토리 파일 계층 구조 확인

ansible-inventory -i <INVENTORY_FILE> --graph

JSON 형식 및 호스트/그룹 변수

ansible-inventory -i <INVENTORY_FILE> --list

호스트에 설정된 변수 확인

ansible-inventory -i <INVENTORY_FILE> --host <HOST>

호스트 매칭 확인

ansible <HOST_PATTERN> -i <INVENTORY_FILE> --list-hosts

구성 파일

https://docs.ansible.com/ansible/latest/reference_appendices/config.html

설정파일 위치
1. ANSIBLE_CONFIG (environment variable if set)

touch /tmp/ans.cfg
export ANSIBLE_CONFIG=/tmp/ans.cfg
ansible --version

unset ANSIBLE_CONFIG
ansible --version
  1. ansible.cfg (현재 작업 디렉토리)
  2. ~/.ansible.cfg (홈디렉토리)
  3. /etc/ansible/ansible.cfg : 기본 설정 파일

관리 노드 접속

SSH 접속 방법

  • 패스워드 인증
  • 키 쌍 인증

권한 상승(Privilege Escalation)

  • su(X)
  • sudo

/etc/sudoers

%wheel  ALL=(ALL)       ALL
  • %wheel: wheel 그룹
  • ALL : 모든 시스템에서
  • (ALL) : 모든 사용자로
  • ALL : 모든 명령어

/etc/sudoers.d/vagrant

%vagrant ALL=(ALL) NOPASSWD: ALL
  • NOPASSWD: 패스워드 묻지 않음(passwordless sudo)

ansible* 옵션

SSH 접속 옵션

  • -u REMOTE_USER, --user REMOTE_USER : SSH 접속 계정(기본: 현재 사용자)
  • -k, --ask-pass : 옵션 사용 SSH 패스워드 인증
    - 옵션 사용하지 않으면 --> SSH 키 인증

ansible의 기본 인증 방법: SSH 키 인증

권한 상승 옵션

  • -b, --become : 권한 상승
    - 옵션 사용하지 않으면 --> 권한상승 하지 않음
  • --become-method <sudo|su>
    - sudo: 기본값
    - su
  • --become-user : 어떤 사용자?
    - root: 기본값
  • -K, --ask-become-pass : sudo 패스워드 묻기
    - 옵션 사용하지 않으면 --> Passwordless sudo

설정 파일

[defaults]
remote_user=<SSH_USER>
ask_pass=<True|False>
host_key_checking=<True|False>

[privilege_escalation]
become=<True|False>
become_ask_pass=<True|False>
become_method=<sudo|su>
become_user=<SUDO_USER>
  • ask_pass 기본값: false
  • host_key_checking 기본값: true
  • become 기본값: false
  • become_ask_pass 기본값: false
  • become_method 기본값: sudo

ansible-config 명령

  • ansible-config list : 설정 가능한 모든 항목 표시
  • ansible-config dump : 모든 설정의 기본 값 및 변경 값 표시
  • ansible-config view : 현재 적용되는 설정 파일의 내용 표시

좋은 웹페이지 즐겨찾기