Ansible을 활용한 자동화 구성 관리(22.04.13)
정적 인벤토리
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#intro-inventory
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
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
ansible.cfg
(현재 작업 디렉토리)~/.ansible.cfg
(홈디렉토리)/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 : 현재 적용되는 설정 파일의 내용 표시
Author And Source
이 문제에 관하여(Ansible을 활용한 자동화 구성 관리(22.04.13)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunny-10/22.04.13저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)