ݺߣ

ݺߣShare a Scribd company logo
[오픈소스컨설팅]Ansible overview
염진영, IT Specialist / 오픈소스컨설팅
Ansible
- Internal Use Only -
Configuration Management System
• Provision
• Orchestration
• System 설정을 code로 관리
• 멱등성(indempotency) - 여러 번 적용해도 결과는 항상 동일
• chef, puppet, salt, ansible
- Internal Use Only -
Ansible 개요
• Configuration management tool
• Open Source
• Python 기반
• Michael DeHaan 개발(Cobbler 개발자)
• Ansible. Inc는 Redhat에 인수됨
• ssh 연결
• 순차 적용
• 수백개의 모듈 제공
• Template - jinja2
• Playbook은 yaml 사용하여, syntax 이해가 쉬움
• Agentlee 방식으로 관리 호스트에 별도 작업이
필요하지 않음
• Pull-based 방식도 지원(ansible-pull - 상용)
• Twitter가 ansible로 전환
• Web 관리 UI인 ansible-tower(상용)
- Internal Use Only -
Not support
• 최초 OS 설치에 관여할 수 없음.
• 구성 변화는 멱동으로 관리할 수 있으나, 모니터링은 할 수 없음.
• 파일 변경 추적 X
Pull-based(chef, puppet) Push-based(ansible)
Agent Agentless
1. Admin : Configuration management script 변경
2. Admin : 변경 파일을 서버로 업로드
3. Agent : 일정 시간마다 서버로 접속하여 변경이력 확인
4. Agent : 새롭게 변경된 파일 다운로드
5. Agent : 변경된 파일 실행
1. Admin : playbook(Configuration Management script) 변경
2. Admin : 새로운 playbook 실행
3. Ansible on Control : 서버로 접속하여 변경된 playbook 실행
Pull-based & Push-based
Pull-based 방식이 큰 규모의 서버 관리 및 신규 서버 추가에 더 적합하다고
하지만, ansible을 이용하여 수천대 서버를 관리하고 있으며, 서버 추가 및 삭제도 용의
- Internal Use Only -
Ansible Architecture
- Internal Use Only -
구성요소
• Inventory : 관리 대상 서버 리스트
• Modules : host에 특정 action을 수행하는 패키지화된 sctips
• play-book : 변수 및 task를 관리 호스트에 수행하기 위해 yaml 문법으로 정의된 파일
• plug-in : 확장 기능(email, logging etc)
• Custom module : 사용자가 직접 작성한 모듈
- Internal Use Only -
Modules
• Package mgmt : apt-get, yum, package
• Commands : shell, command
• File 관련 : file, copy
• Template 관련 : template
• Download : get_url, git, subversion
• Server info : setup
• Service 관리 : service
• Cloud 관리 : aws, openstack
- Internal Use Only -
연결 플러그인
• ssh, paramiko – ssh 연결
• local – localhost 연결
• winrm – windows 연결
• docker – docker에 연결
- Internal Use Only -
설치
[설치방법 1 - 패키지]
# yum install epel-release
# yum install ansible
[설치방법 2 – pip]
# yum install autoconf gcc python-devel libffi-devel openssl-devel
# pip install ansible
[update]
# yum update ansible
# pip install ansible --upgrade
관리 호스트 : python 2.6 or 2.7 이상
* 관리 대상 호스트 : python 2.4은 python-simplejson python 2.5 이상은 필요 없음
- Internal Use Only -
디렉토리 구성
/usr/lib/python2.7/site-packages/ansible/modules
Core Modules 위치
/usr/lib/python2.7/site-packages/ansible
설치 디렉토리 PATH – CentOS7 기준
/usr/lib/python2.7/site-packages/ansible/modules/system/ping.py
Ping Module 위치
/usr/lib/python2.7/site-packages/ansible/modules/commands/shell.py
Shell Module 위치
- Internal Use Only -
설정 – ansible.cfg
# vi ansible.cfg
[defaults]
inventory = hosts
host_key_checking = False
remote_user = ansible
log_path=~/ansible.log
no_log=False
no_target_syslog=False
forks = 20
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
• inventory : inveroty 파일 or 디렉토리 경로
• host_key_checking : Host_key(~/.ssh/known_host) 체크
• remote_user : ssh 접속 시 사용할 user
• log_path : ansible 실행 로그 파일 경로
• no_log :
• no_target_syslog : 관리 host의 syslog에 ansible 로그 여부
• forks : 동시 접속 노드 수(default : 5)
• privilege_escalation : sudo 관련 설정
- Internal Use Only -
ansible.cfg 순서
ANSIBLE_CONFIG=<ansible.cfg PATH>
기본 경로
홈 디렉토리
현재 디렉토리
환경 변수
- Internal Use Only -
설정 - Inventory file
• Ansible에서 관리하는 호스트 정의
• 호스트 인벤토리 기본 위치 : /etc/ansible/hosts
• --inventory PATH
위 옵션으로 임의 경로의 파일을 지정
호스트 그룹 이름
연결 방법, ssh 접속 유저, ssh 패스워드 설정
특정 호스트 그룹의 변수 설정
호스트 그룹을 서브그룹으로 다시 그룹핑
Inventory file 예제
testserver ansible_ssh_host=192.168.0.100 ansible_ssh_port=2222 ansible_ssh_user=user ansible_ssh_private_key_file=./ssh/private_key
Inventory의 Host 확인
Ad-hoc commands
# ansible <host> [options]
예제)
# ansible controllers –m shell –a “date”
# ansible controllers -m shell -a "ls -al /tmp//slideshow/ansible-overview/77780030/ansible_test.tmp”
# ansible controllers -m copy -a "src=/slideshow/ansible-overview/77780030/ansible_test.tmp
dest=/tmp//slideshow/ansible-overview/77780030/ansible_test.tmp"
- Internal Use Only -
ansible 실행
Ansible 수행 시, 실행 프로세스
/usr/bin/ssh
-o ForwardX11 no
-o ForwardAgent no
-o PermitLocalCommand no
-o ClearAllForwardings yes
-o batchmode yes -C
-o ControlMaster=auto
-o ControlPersist=60s
-o StrictHostKeyChecking=no
-o KbdInteractiveAuthentication=no
-o PreferredAuthentications=gssapi-with-
mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no
-o User=centos
-o ConnectTimeout=10
-o ControlPath=/root/.ansible/cp/d8ac695b15
-o Protocol 2
-s -- 192.168.2.131 sftp
ansible_ssh_user
ansible_connection
ansible.cfg 및 inventory 설정에 따라 ‘–o ‘에 설정되는
ssh-client 옵션들이 변경됨.
- ansible_connection : ssh 세션 재활용
- ansible_python_interpreter : host의 python path가
/usr/bin/python이 아닌 경우 설정 필요
- Internal Use Only -
YAML
Json과 비슷한 포맷
--- : dash 3개는 document의 시작을 알림
# : 주석
String : 따음표를 사용하지 않아도 됨.
단, 변수를 표현할 때 사용
ex) {{ 변수 }}
YAML JSON
List - Value1
- Value2
[
“Value1”,
“Value2”
]
Dictionary key1: value1
key2: value2
{
“key1”: “value1”,
“key2”: “value2”
}
Line Folding key1: >
long values1 go on,
long values2 go on
Key2: short value
{
“key1: “long values1 go on,
long value2 go on”,
“key2”: “short value”
}
- Internal Use Only -
Playbook in YAML & JSON
YAML JSON
- Internal Use Only -
Playbook
• ansible 배포에 내용(plays)을 정의한 파일
• yaml 문법
* Play : host에 접속하여 action을 수행하는 것
---: yaml 문법 처음
name: 해당 play에 대한 설명(주석), optional
become: sudo 사용 지정
hosts: Inventory의 ‘loadbalancer’ group을 대상으로 지정
tasks: host에 접속하여 해당 module 및 arg에 맞게 실제 action 수행하는
play를 list로 정의
- yum을 사용하여 패키지 설정, yum cache 업데이트
- service: systemd로 서비스 시작, enabled
- copy: 설정 파일 복사, permission 644
- template: jinja2 작성된 tempate 파일 복사, permission 644
- file: file 삭제
handlers: tasks에 정의된 play 중, notify에 의해 호출될 service 모듈로 정의된
handler, 서비스 재시작 등
service : nginx 재시작 handler
ansible 동작 순서
1. Playbook에 정의된 task를 수행하기 위한 python script 생성
2. 해당 script를 대상서버로 복사
3. 해당 script 실행
4. 모든 host에서 script 실행이 완료될 때까지 기다림
- Internal Use Only -
Playbook & Shell
playbook
- name: Ensure NTP is installed.
yum: name=ntp state=present
Shell script
if ! rpm -qa | grep -qw ntp; then
yum install ntp
fi
playbook Shell script
- name: Ensure NTP is running
service: name=ntpd state=started enabled=yes
if ps aux | grep -v grep | grep "[n]tpd" > /dev/null
then
echo "ntpd is running." > /dev/null
else systemctl start ntpd.service > /dev/null
echo "Started ntpd.”
fi
systemctl enable ntpd.service
출처 : “ansible for devops” by Jeff Geerling, 2015
- Internal Use Only -
Jinja2
Jinja2
- Python Template 언어
- 템플릿 적용을 위해 사용
- 참고 : http://jinja.pocoo.org/docs/dev/templates/
- loop statement
- If statement(조건이 만족할 때만 내부 로직 수행)
- Internal Use Only -
명령어
# ansible-playbook
Ex) # ansible-playbook <play-book file>
[Task 리스팅]
# ansible-playbook --list-tasks <play-book file>
- Internal Use Only -
실행
ansible-playbook Options :
-i --invertory=host-file
-v --verbose
-e --extra-vars=VARS
-f --forks=NUM
-c --connection=TYPE
--check : run in Check Mode
[Syntax check]
# ansible-playbook –syntax-check <playbook.yml>
[dry run]
# ansible-playbook –C <playbook.yml>
- Internal Use Only -
ansible-facts
• Tasks 수행 전, 서버의 정보
수집(hostname, IP, Mac etc)
• 변수로 사용 가능
• gather_facts 사용 X
# vi playbook.yml
자주 사용되는 facts
ansible_os_family
ansible_hostname
ansible_memtotal_mb
- hosts: test
gather_facts: no
- Internal Use Only -
setup
• Cache enable
[defaults]
gathering = smart
fact_caching_timeout = 86400
fact_caching = jsonfile
fact_caching_connection = /tmp/ansible_fact_cache
# redis 사용 설정
#fact_caching = redis
# memcached 사용 설정
#fact_caching = memcached
- Internal Use Only -
file
• 파일, 디렉토리, 링크 파일 생성
• path: 파일 및 디렉토리 PATH
• state: 대상 PATH의 타입
- link : 링크 파일
- directory : 디렉토리
- absent : 삭제
• mode: 파일 퍼미션(8진수 표현을 위하 ‘0’을 앞에 붙여야 함
- Internal Use Only -
copy
• remote 서버로 복사를 위한 파일
• src: 소스 파일 위치
• dest: 대상 서버의 복사될 위치
• mode: 파일 퍼미션(8진수 표현을 위하 ‘0’을 앞에 붙여야 함
- Internal Use Only -
templates
• Jinja2 작성
• File Contents 변경이 내부 로직에 따라 자동으로 이루어지는 파일
- Internal Use Only -
with_items
• Iteration
• 2개 이상의 변수를 리스트로 선언, 반복문으로 사용 가능
- Internal Use Only -
when
• 조건이 true일 때 해당 play 실행
- Internal Use Only -
handlers
• notify 지시자를 사용하는 task에서 해당 module을 실행을 완료한 후,
notification 발생(notify에 지정된 handler 호출)
• notify에 지정된 ‘handler 이름’으로 handlers에 정의된 handler를 찾아
task(restarting services) 수행
- Internal Use Only -
vars
• playbook or template에서 사용한 변수 정의
vars 지시자
Playbook 내부의 vars 지시자에 설정
ex)
vars_files 변수가 설정된 개별 파일을 include하는 설정
roles의 defaults
Role별 변수 설정
- 설정 위치 :
roles/<role name>/defaults/main.yml
- roles/<role name>/vars/main.yml
inventory에 설정
Host 및 host group별 변수 설정
- 설정 위치 :
Inventory 파일
group_vars
Host group별 변수 설정
- 설정 위치 :
file - group_vars/<group name>
directory - group_vars/<group name>/xxx
host_vars
Host 별 변수 설정
- 설정 위치 :
file - host_vars/<host name>
directory - host_vars/<host name>/yyy
- Internal Use Only -
debugging
변수 디버깅 실행 결과 디버깅
- Internal Use Only -
wait_for
• 특정 서비스 데몬의 실행 후에 해당 play을 진행하기 위한 지시자
• host: 서비스 확인할 host 정보
• port: open 상태를 확인할 Port
• search_regex : 파일이나 soket의 문자 매칭에 사용
- Internal Use Only -
local_action
• control host 자신에서 모듈 실행하기 위함
• delegate_to : play를 다른 host에서 실행
- Internal Use Only -
기타
• ignore_errors : error로 playbook 중단 회피
• serial: 동시에 접속 및 play 수행할 host 수 지정 설정
• max_fail_percentage: 최대 실패 비율 초과일 경우, playbook 실행 중단
• run_once: 1회만 실행
• changed_when, failed_when: 특정 조건일 때 상태
• set_facts : playbook 내에 새로운 변수 설정(register로 받은 결과를 변수 저장)
• hostvars: 특정 호스트만 사용할 변수 선언
{{ hostvars['db.osci.kr'].ansible_eth1.ipv4.address }}
- Internal Use Only -
roles
• playbook을 여러개의 작은 단위로 분리
• Directory 별로 구분
• playbook 재사용 가능
• playbook 중복 사용 제거
• 특정 기능 구현을 위한 playbook의 묶음
[Create roles]
# mkdir -p nodejs-app/roles/nodejs/{meta,tasks,defaults,vars}
# vi nodejs-app/roles/nodejs/meta/main.yml
--------------------
---
dependencies: []
--------------------
• role skeleton directory 생성
- Internal Use Only -
Single playbook to role
playbook Role 변경
Playbook – role 사용
- Internal Use Only -
기타
• pre-tasks: role 실행 시작 전 수행할 play 정의
• post-tasks: role 실행 완료 후 수행할 play 정의
• dependencies: 해당 role이 함께 실행될 role 정의
Thank you.

More Related Content

What's hot (20)

DevOps Meetup ansible
DevOps Meetup   ansibleDevOps Meetup   ansible
DevOps Meetup ansible
sriram_rajan
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
Robert Reiz
Ansible
AnsibleAnsible
Ansible
Kamil Lelonek
Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
Mehmet Ali Aydın
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
Terry Cho
Best practices for ansible
Best practices for ansibleBest practices for ansible
Best practices for ansible
George Shuklin
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
CoreStack
Automating with Ansible
Automating with AnsibleAutomating with Ansible
Automating with Ansible
Ricardo Schmidt
Awx
AwxAwx
Awx
Scott van Kalken
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
Rayed Alrashed
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
Suresh Kumar
Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansible
Khizer Naeem
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
Open Source Consulting
Ansible
AnsibleAnsible
Ansible
Vishal Yadav
ansible why ?
ansible why ?ansible why ?
ansible why ?
Yashar Esmaildokht
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
YoungSu Son
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
Ji-Woong Choi
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
Kumar Y
Ansible
AnsibleAnsible
Ansible
Rahul Bajaj
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
OpenStack Korea Community
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
Terry Cho
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
CoreStack
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
Open Source Consulting
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
YoungSu Son
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
Ji-Woong Choi
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
Kumar Y
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
OpenStack Korea Community

Similar to [오픈소스컨설팅]Ansible overview (20)

[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf
HeeJung Chae
둡괶리
둡괶리둡괶리
둡괶리
Choonghyun Yang
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
Han Jung Hyun
Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)
Leo Song
Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정
HyeonSeok Choi
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
kidoki
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
wonyong hwang
Ansible overview
Ansible overviewAnsible overview
Ansible overview
Sunchan Lee
하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정
NoahKIM36
리눅스서ѫ팅-깶태호
리눅스서ѫ팅-깶태호리눅스서ѫ팅-깶태호
리눅스서ѫ팅-깶태호
ETRIBE_STG
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
John Kim
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
Jude Kim
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
Aiden Seonghak Hong
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XpressEngine
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptx
wonyong hwang
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and API
Hongmin Park
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
Han Sung Kim
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
ymtech
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
Ted Won
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf
HeeJung Chae
Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)
Leo Song
Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정
HyeonSeok Choi
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
kidoki
하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정
NoahKIM36
리눅스서ѫ팅-깶태호
리눅스서ѫ팅-깶태호리눅스서ѫ팅-깶태호
리눅스서ѫ팅-깶태호
ETRIBE_STG
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
John Kim
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
Jude Kim
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
Aiden Seonghak Hong
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XpressEngine
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptx
wonyong hwang
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and API
Hongmin Park
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
Han Sung Kim
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
ymtech
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
Ted Won

More from Open Source Consulting (20)

[오픈소스컨설팅] 먼데이닷컴 소개서
[오픈소스컨설팅] 먼데이닷컴 소개서[오픈소스컨설팅] 먼데이닷컴 소개서
[오픈소스컨설팅] 먼데이닷컴 소개서
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf
Open Source Consulting
[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf
[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf
[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf
Open Source Consulting
[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문
[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문
[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문
Open Source Consulting
[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장
[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장
[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장
Open Source Consulting
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
Open Source Consulting
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)
Open Source Consulting
[202412 SAFe Meetup] SAFe Transfomration Journey
[202412 SAFe Meetup] SAFe Transfomration Journey[202412 SAFe Meetup] SAFe Transfomration Journey
[202412 SAFe Meetup] SAFe Transfomration Journey
Open Source Consulting
[워크숍] Get to know AI, Meet your new teammate!
[워크숍] Get to know AI, Meet your new teammate![워크숍] Get to know AI, Meet your new teammate!
[워크숍] Get to know AI, Meet your new teammate!
Open Source Consulting
[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?
[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?
[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?
Open Source Consulting
[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution
[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution
[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution
Open Source Consulting
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
Open Source Consulting
[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션
[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션
[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션
Open Source Consulting
[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청
[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청
[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청
Open Source Consulting
[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud
[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud
[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud
Open Source Consulting
[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드
[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드
[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드
Open Source Consulting
[The future of Teamwork] Atlassian Intelligence가 적용된 ITSM 시스템 데모
[The future of Teamwork]  Atlassian Intelligence가 적용된 ITSM 시스템 데모[The future of Teamwork]  Atlassian Intelligence가 적용된 ITSM 시스템 데모
[The future of Teamwork] Atlassian Intelligence가 적용된 ITSM 시스템 데모
Open Source Consulting
[오픈소스컨설팅] 먼데이닷컴 소개서
[오픈소스컨설팅] 먼데이닷컴 소개서[오픈소스컨설팅] 먼데이닷컴 소개서
[오픈소스컨설팅] 먼데이닷컴 소개서
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 04. Rovo가 적용된 ITSM 시스템 ᄃ...
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 03. ITSM 구현과 고객 사례_신철ᄆ...
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 02. 클라우드 기반 ITSM 최적화를...
Open Source Consulting
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf
[Next-Gen ITSM | Atlassian이 제시하는 ITSM 혁신] 01. Gen Next ITSM_김윤희.pdf
Open Source Consulting
[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf
[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf
[발표 자료] 시각화로 전략을 실현하는 스마트 워크플로우 with 먼데이닷컴.pdf
Open Source Consulting
[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문
[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문
[The Future of IT] 1. AI 시대의 일하는 방법_김대일 고문
Open Source Consulting
[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장
[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장
[The Future of IT] 2. 조직 목표 Align 및 전사 협업 확장_한진규 부사장
Open Source Consulting
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
Open Source Consulting
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)
Open Source Consulting
[202412 SAFe Meetup] SAFe Transfomration Journey
[202412 SAFe Meetup] SAFe Transfomration Journey[202412 SAFe Meetup] SAFe Transfomration Journey
[202412 SAFe Meetup] SAFe Transfomration Journey
Open Source Consulting
[워크숍] Get to know AI, Meet your new teammate!
[워크숍] Get to know AI, Meet your new teammate![워크숍] Get to know AI, Meet your new teammate!
[워크숍] Get to know AI, Meet your new teammate!
Open Source Consulting
[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?
[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?
[웨비나 발표자료] VMware 정책 변화 대응 - 왜 오픈소스 기반 클라우드 네이티브 인프라로 가야하는가?
Open Source Consulting
[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution
[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution
[오픈소스컨설팅] 기업 맞춤형 On-Premise LLM Solution
Open Source Consulting
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
Open Source Consulting
[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션
[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션
[오픈소스컨설팅] 기업 맞춤형 온프레미스 LLM 솔루션
Open Source Consulting
[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청
[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청
[오픈소스컨설팅] OpenInfra Asia 2024_OpenStack & K8S로 혁신하는 기상청
Open Source Consulting
[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud
[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud
[오픈소스컨설팅] 글로벌 표준 클라우드 IaaS/PaaS 플랫폼 Playce Cloud
Open Source Consulting
[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드
[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드
[오픈소스컨설팅] Cloud Big Tech 2024_오픈소스로 맞이하는 클라우드
Open Source Consulting
[The future of Teamwork] Atlassian Intelligence가 적용된 ITSM 시스템 데모
[The future of Teamwork]  Atlassian Intelligence가 적용된 ITSM 시스템 데모[The future of Teamwork]  Atlassian Intelligence가 적용된 ITSM 시스템 데모
[The future of Teamwork] Atlassian Intelligence가 적용된 ITSM 시스템 데모
Open Source Consulting

[오픈소스컨설팅]Ansible overview

  • 2. 염진영, IT Specialist / 오픈소스컨설팅 Ansible
  • 3. - Internal Use Only - Configuration Management System • Provision • Orchestration • System 설정을 code로 관리 • 멱등성(indempotency) - 여러 번 적용해도 결과는 항상 동일 • chef, puppet, salt, ansible
  • 4. - Internal Use Only - Ansible 개요 • Configuration management tool • Open Source • Python 기반 • Michael DeHaan 개발(Cobbler 개발자) • Ansible. Inc는 Redhat에 인수됨 • ssh 연결 • 순차 적용 • 수백개의 모듈 제공 • Template - jinja2 • Playbook은 yaml 사용하여, syntax 이해가 쉬움 • Agentlee 방식으로 관리 호스트에 별도 작업이 필요하지 않음 • Pull-based 방식도 지원(ansible-pull - 상용) • Twitter가 ansible로 전환 • Web 관리 UI인 ansible-tower(상용)
  • 5. - Internal Use Only - Not support • 최초 OS 설치에 관여할 수 없음. • 구성 변화는 멱동으로 관리할 수 있으나, 모니터링은 할 수 없음. • 파일 변경 추적 X
  • 6. Pull-based(chef, puppet) Push-based(ansible) Agent Agentless 1. Admin : Configuration management script 변경 2. Admin : 변경 파일을 서버로 업로드 3. Agent : 일정 시간마다 서버로 접속하여 변경이력 확인 4. Agent : 새롭게 변경된 파일 다운로드 5. Agent : 변경된 파일 실행 1. Admin : playbook(Configuration Management script) 변경 2. Admin : 새로운 playbook 실행 3. Ansible on Control : 서버로 접속하여 변경된 playbook 실행 Pull-based & Push-based Pull-based 방식이 큰 규모의 서버 관리 및 신규 서버 추가에 더 적합하다고 하지만, ansible을 이용하여 수천대 서버를 관리하고 있으며, 서버 추가 및 삭제도 용의
  • 7. - Internal Use Only - Ansible Architecture
  • 8. - Internal Use Only - 구성요소 • Inventory : 관리 대상 서버 리스트 • Modules : host에 특정 action을 수행하는 패키지화된 sctips • play-book : 변수 및 task를 관리 호스트에 수행하기 위해 yaml 문법으로 정의된 파일 • plug-in : 확장 기능(email, logging etc) • Custom module : 사용자가 직접 작성한 모듈
  • 9. - Internal Use Only - Modules • Package mgmt : apt-get, yum, package • Commands : shell, command • File 관련 : file, copy • Template 관련 : template • Download : get_url, git, subversion • Server info : setup • Service 관리 : service • Cloud 관리 : aws, openstack
  • 10. - Internal Use Only - 연결 플러그인 • ssh, paramiko – ssh 연결 • local – localhost 연결 • winrm – windows 연결 • docker – docker에 연결
  • 11. - Internal Use Only - 설치 [설치방법 1 - 패키지] # yum install epel-release # yum install ansible [설치방법 2 – pip] # yum install autoconf gcc python-devel libffi-devel openssl-devel # pip install ansible [update] # yum update ansible # pip install ansible --upgrade 관리 호스트 : python 2.6 or 2.7 이상 * 관리 대상 호스트 : python 2.4은 python-simplejson python 2.5 이상은 필요 없음
  • 12. - Internal Use Only - 디렉토리 구성 /usr/lib/python2.7/site-packages/ansible/modules Core Modules 위치 /usr/lib/python2.7/site-packages/ansible 설치 디렉토리 PATH – CentOS7 기준 /usr/lib/python2.7/site-packages/ansible/modules/system/ping.py Ping Module 위치 /usr/lib/python2.7/site-packages/ansible/modules/commands/shell.py Shell Module 위치
  • 13. - Internal Use Only - 설정 – ansible.cfg # vi ansible.cfg [defaults] inventory = hosts host_key_checking = False remote_user = ansible log_path=~/ansible.log no_log=False no_target_syslog=False forks = 20 [privilege_escalation] become=True become_method=sudo become_user=root become_ask_pass=False • inventory : inveroty 파일 or 디렉토리 경로 • host_key_checking : Host_key(~/.ssh/known_host) 체크 • remote_user : ssh 접속 시 사용할 user • log_path : ansible 실행 로그 파일 경로 • no_log : • no_target_syslog : 관리 host의 syslog에 ansible 로그 여부 • forks : 동시 접속 노드 수(default : 5) • privilege_escalation : sudo 관련 설정
  • 14. - Internal Use Only - ansible.cfg 순서 ANSIBLE_CONFIG=<ansible.cfg PATH> 기본 경로 홈 디렉토리 현재 디렉토리 환경 변수
  • 15. - Internal Use Only - 설정 - Inventory file • Ansible에서 관리하는 호스트 정의 • 호스트 인벤토리 기본 위치 : /etc/ansible/hosts • --inventory PATH 위 옵션으로 임의 경로의 파일을 지정 호스트 그룹 이름 연결 방법, ssh 접속 유저, ssh 패스워드 설정 특정 호스트 그룹의 변수 설정 호스트 그룹을 서브그룹으로 다시 그룹핑
  • 16. Inventory file 예제 testserver ansible_ssh_host=192.168.0.100 ansible_ssh_port=2222 ansible_ssh_user=user ansible_ssh_private_key_file=./ssh/private_key
  • 18. Ad-hoc commands # ansible <host> [options] 예제) # ansible controllers –m shell –a “date” # ansible controllers -m shell -a "ls -al /tmp//slideshow/ansible-overview/77780030/ansible_test.tmp” # ansible controllers -m copy -a "src=/slideshow/ansible-overview/77780030/ansible_test.tmp dest=/tmp//slideshow/ansible-overview/77780030/ansible_test.tmp"
  • 19. - Internal Use Only - ansible 실행 Ansible 수행 시, 실행 프로세스 /usr/bin/ssh -o ForwardX11 no -o ForwardAgent no -o PermitLocalCommand no -o ClearAllForwardings yes -o batchmode yes -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with- mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=centos -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/d8ac695b15 -o Protocol 2 -s -- 192.168.2.131 sftp ansible_ssh_user ansible_connection ansible.cfg 및 inventory 설정에 따라 ‘–o ‘에 설정되는 ssh-client 옵션들이 변경됨. - ansible_connection : ssh 세션 재활용 - ansible_python_interpreter : host의 python path가 /usr/bin/python이 아닌 경우 설정 필요
  • 20. - Internal Use Only - YAML Json과 비슷한 포맷 --- : dash 3개는 document의 시작을 알림 # : 주석 String : 따음표를 사용하지 않아도 됨. 단, 변수를 표현할 때 사용 ex) {{ 변수 }} YAML JSON List - Value1 - Value2 [ “Value1”, “Value2” ] Dictionary key1: value1 key2: value2 { “key1”: “value1”, “key2”: “value2” } Line Folding key1: > long values1 go on, long values2 go on Key2: short value { “key1: “long values1 go on, long value2 go on”, “key2”: “short value” }
  • 21. - Internal Use Only - Playbook in YAML & JSON YAML JSON
  • 22. - Internal Use Only - Playbook • ansible 배포에 내용(plays)을 정의한 파일 • yaml 문법 * Play : host에 접속하여 action을 수행하는 것 ---: yaml 문법 처음 name: 해당 play에 대한 설명(주석), optional become: sudo 사용 지정 hosts: Inventory의 ‘loadbalancer’ group을 대상으로 지정 tasks: host에 접속하여 해당 module 및 arg에 맞게 실제 action 수행하는 play를 list로 정의 - yum을 사용하여 패키지 설정, yum cache 업데이트 - service: systemd로 서비스 시작, enabled - copy: 설정 파일 복사, permission 644 - template: jinja2 작성된 tempate 파일 복사, permission 644 - file: file 삭제 handlers: tasks에 정의된 play 중, notify에 의해 호출될 service 모듈로 정의된 handler, 서비스 재시작 등 service : nginx 재시작 handler
  • 23. ansible 동작 순서 1. Playbook에 정의된 task를 수행하기 위한 python script 생성 2. 해당 script를 대상서버로 복사 3. 해당 script 실행 4. 모든 host에서 script 실행이 완료될 때까지 기다림
  • 24. - Internal Use Only - Playbook & Shell playbook - name: Ensure NTP is installed. yum: name=ntp state=present Shell script if ! rpm -qa | grep -qw ntp; then yum install ntp fi playbook Shell script - name: Ensure NTP is running service: name=ntpd state=started enabled=yes if ps aux | grep -v grep | grep "[n]tpd" > /dev/null then echo "ntpd is running." > /dev/null else systemctl start ntpd.service > /dev/null echo "Started ntpd.” fi systemctl enable ntpd.service 출처 : “ansible for devops” by Jeff Geerling, 2015
  • 25. - Internal Use Only - Jinja2 Jinja2 - Python Template 언어 - 템플릿 적용을 위해 사용 - 참고 : http://jinja.pocoo.org/docs/dev/templates/ - loop statement - If statement(조건이 만족할 때만 내부 로직 수행)
  • 26. - Internal Use Only - 명령어 # ansible-playbook Ex) # ansible-playbook <play-book file> [Task 리스팅] # ansible-playbook --list-tasks <play-book file>
  • 27. - Internal Use Only - 실행 ansible-playbook Options : -i --invertory=host-file -v --verbose -e --extra-vars=VARS -f --forks=NUM -c --connection=TYPE --check : run in Check Mode [Syntax check] # ansible-playbook –syntax-check <playbook.yml> [dry run] # ansible-playbook –C <playbook.yml>
  • 28. - Internal Use Only - ansible-facts • Tasks 수행 전, 서버의 정보 수집(hostname, IP, Mac etc) • 변수로 사용 가능 • gather_facts 사용 X # vi playbook.yml 자주 사용되는 facts ansible_os_family ansible_hostname ansible_memtotal_mb - hosts: test gather_facts: no
  • 29. - Internal Use Only - setup • Cache enable [defaults] gathering = smart fact_caching_timeout = 86400 fact_caching = jsonfile fact_caching_connection = /tmp/ansible_fact_cache # redis 사용 설정 #fact_caching = redis # memcached 사용 설정 #fact_caching = memcached
  • 30. - Internal Use Only - file • 파일, 디렉토리, 링크 파일 생성 • path: 파일 및 디렉토리 PATH • state: 대상 PATH의 타입 - link : 링크 파일 - directory : 디렉토리 - absent : 삭제 • mode: 파일 퍼미션(8진수 표현을 위하 ‘0’을 앞에 붙여야 함
  • 31. - Internal Use Only - copy • remote 서버로 복사를 위한 파일 • src: 소스 파일 위치 • dest: 대상 서버의 복사될 위치 • mode: 파일 퍼미션(8진수 표현을 위하 ‘0’을 앞에 붙여야 함
  • 32. - Internal Use Only - templates • Jinja2 작성 • File Contents 변경이 내부 로직에 따라 자동으로 이루어지는 파일
  • 33. - Internal Use Only - with_items • Iteration • 2개 이상의 변수를 리스트로 선언, 반복문으로 사용 가능
  • 34. - Internal Use Only - when • 조건이 true일 때 해당 play 실행
  • 35. - Internal Use Only - handlers • notify 지시자를 사용하는 task에서 해당 module을 실행을 완료한 후, notification 발생(notify에 지정된 handler 호출) • notify에 지정된 ‘handler 이름’으로 handlers에 정의된 handler를 찾아 task(restarting services) 수행
  • 36. - Internal Use Only - vars • playbook or template에서 사용한 변수 정의 vars 지시자 Playbook 내부의 vars 지시자에 설정 ex) vars_files 변수가 설정된 개별 파일을 include하는 설정 roles의 defaults Role별 변수 설정 - 설정 위치 : roles/<role name>/defaults/main.yml - roles/<role name>/vars/main.yml inventory에 설정 Host 및 host group별 변수 설정 - 설정 위치 : Inventory 파일 group_vars Host group별 변수 설정 - 설정 위치 : file - group_vars/<group name> directory - group_vars/<group name>/xxx host_vars Host 별 변수 설정 - 설정 위치 : file - host_vars/<host name> directory - host_vars/<host name>/yyy
  • 37. - Internal Use Only - debugging 변수 디버깅 실행 결과 디버깅
  • 38. - Internal Use Only - wait_for • 특정 서비스 데몬의 실행 후에 해당 play을 진행하기 위한 지시자 • host: 서비스 확인할 host 정보 • port: open 상태를 확인할 Port • search_regex : 파일이나 soket의 문자 매칭에 사용
  • 39. - Internal Use Only - local_action • control host 자신에서 모듈 실행하기 위함 • delegate_to : play를 다른 host에서 실행
  • 40. - Internal Use Only - 기타 • ignore_errors : error로 playbook 중단 회피 • serial: 동시에 접속 및 play 수행할 host 수 지정 설정 • max_fail_percentage: 최대 실패 비율 초과일 경우, playbook 실행 중단 • run_once: 1회만 실행 • changed_when, failed_when: 특정 조건일 때 상태 • set_facts : playbook 내에 새로운 변수 설정(register로 받은 결과를 변수 저장) • hostvars: 특정 호스트만 사용할 변수 선언 {{ hostvars['db.osci.kr'].ansible_eth1.ipv4.address }}
  • 41. - Internal Use Only - roles • playbook을 여러개의 작은 단위로 분리 • Directory 별로 구분 • playbook 재사용 가능 • playbook 중복 사용 제거 • 특정 기능 구현을 위한 playbook의 묶음 [Create roles] # mkdir -p nodejs-app/roles/nodejs/{meta,tasks,defaults,vars} # vi nodejs-app/roles/nodejs/meta/main.yml -------------------- --- dependencies: [] -------------------- • role skeleton directory 생성
  • 42. - Internal Use Only - Single playbook to role playbook Role 변경 Playbook – role 사용
  • 43. - Internal Use Only - 기타 • pre-tasks: role 실행 시작 전 수행할 play 정의 • post-tasks: role 실행 완료 후 수행할 play 정의 • dependencies: 해당 role이 함께 실행될 role 정의