SlideShare a Scribd company logo
1 of 51
Ansible 소개
(IT Automation & Configuration Management)
IT Evolution
Increasing scale and complexity means
we need admin automation
Opscode gets more venture dough for its Chef
From - http://goo.gl/dLcjS
Global Google Trends : Ansible vs. Puppet vs. Chef
Push Based vs. Pull Based
Comparison : Ansible vs. Puppet vs. Chef
Ansible Core & Ansible Tower
Ansible works
What is Ansible?
Ansible Concept
Ansible 로 자동화할 수 있는 것
Ansible 도입 기대효과
Ansible 에 의한 오토메이션
• 멱등성 (Idempotency)
• 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
• 여러 번 적용해도 결과는 바뀌지 않는다.
• 바뀌는 것이 없으면 당연히 배포되어도 바뀌지 않는다.
• 바뀌는 부분이 있으면 그 부분만 반영된다.
• Ansible 멱등성
• 대부분이 멱등성을 제공한다.
• 멱등성을 제공하지 부분(모듈)
• shell, command, file module
Idempotency(멱등성)
Ansible Architecture
Inventory 파일
Playbook 예제
• playbook은 ansible의 환경 설정, 배포를 가능케 함
• YAML 문법을 사용하여 정의
• linux 기반 권한 관리 (user, group) 지원
• 하나의 playbook은 하나 또는 그 이상의 ‘play’를 정의하며, play의 목적은
여러 호스트들에 잘 정의된 ‘role’과 ‘task’를 매핑하는 역할을 맡음
• 그 외의 기능 들
• 반복 (with_item, with nested, until …)
• 조건 분기 (when, register, …)
• 다른 playbook 참조 (include, role, …)
• 외부 정보 참조
• 환경 변수, 파일 등 (environment, lookup, vars_prompt,…)
• 커스텀 모듈을 이용한 확장
playbook
YAML 형식이란
태스크(Task)란
• 정형화 된 작업의 열거
• 태스크는 관련 지을 수 있었던 모듈을 호출
• 모듈은 Python나 Bash로 기술되고 있다
tasks:
- name: check install httpd
yum: name=httpd state=latest
모듈(Module)이란
• 특정 목적을 위해 작성된 Ansible 백엔드
• 주로 Python 으로 구현
• 대표적인 모듈들
• 패키지 관리
• yum, apt
지정 패키지( 및 의존 패키지) 설치
• 서비스 제어
• service
서비스 시작/정지 등
• 파일 처리
• File, copy, fetch, template
파일 배포(copy, template), 파일 수집(fetch) 등
• 커맨드 실행
• command, shell
외부 커맨드 실행과 그 출력 결과 보고 등
• 소스 코드 관리: git, subversion
Ansible Module
• 태스크 섹션 전에 vars: 섹션으로 변수를 정의
변수 정의(vars)
vars:
hello: Hello
tasks:
- name: Hello World
debug: msg=”{{ hello }} Ansible”
• 태스크에서 모듈명 다음 줄에서“when:” 을 기술하여 모듈의 실행 조건을 정의
• 지역 변수나 vars 정의된 변수에 대해 등호와 부등호를 이용하여 조건식이 true의 경우
에 실행
조건 분기 실행(when)
tasks:
- name: install Apache Web server
yum: name=httpd state=latest
when: ansible_os_family == 'RedHat'
- name: install Apache Web server
apt: name=apache2 state=latest
when: ansible_os_family == 'Debian' or 
ansible_os_family == 'Ubuntu'
• 태스크에서 모듈명의 다음 줄에서 “with_000:”으로 기술하여 모듈에{{ item }} 변수를
전달
루프 실행(Loops)
 with_items
 with_nested
 with_dict
 with_lines
 with_indexed_items
 with_ini
 with_flattened
 with_file
 with_fileglob
 with_first_found
 with_together
 with_subelements
 with_random_choice
 with_sequence
• YAML 파일 뿐만 아니라 모든 파일에서 활용 가능
• 일반적으로 파일 확장자명을 .j2로 함
• Index.php.j2
• Mysql.출.j2
• Template task 일 때 jinja2가 적용 가능(copy task는 적용 안됨 )
템플릿
tasks:
- name: deploy my.cnf
template: src=my.cnf.j2 dest=/etc/my.cnf
filename: my.cnf.j2
[mysqld]
user = {{ mysql_user }}
port = {{ mysql_port }}
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
pid-file = /var/lib/mysqld/mysqld.pid
Provisioning 제품 비교
제품 정의 개발언어 Agent 여부 통신방법
Ansible YAML Python 필요없음(SSH) JSON
Chef DSL Ruby 필요 REST / STOMP
Puppet DSL Ruby 필요 HTTP SSL
• 설치
• OS 패키지 설치 : yum, apt-get, zypper 등
• Language 패키지 설치 : npm, bower, gem, pip 등
• 다운로드
• get_url, wget, git, subversion, fetch 등
• 환경설정 파일 배포
• copy, template
• 실행
• shell, command, task, script
• 기타
• Cloud, Clustering, Database, Crypto, Network, Remote Management,
Windows등 다양한 모듈을 제공
Ansible이 할 수 있는 일
Ansible Playbook을 이용한 Apache 설치
---
-name : install apache
hosts : apache
user: root
tasks :
- name : install httpd
yum: name=httpd state=latest
- name : start apache service
service: name=httpd state=running
apache_setup.yml
/etc/ansible/hosts
[apache]
web[01:03].opennaru.com
192.168.11.3
$ ansible-playbook apache_setup.yml
Playbook
Play
Tasks
Handler
Inventory
Install
Modules
Apache 설정 파일 변경
---
-name : install apache
hosts : apache
user: root
tasks :
- name : install httpd
yum: name=httpd state=latest
- name : copy httpd.conf file
template: src=httpd.conf
dest=/etc/httpd/conf/httpd.conf
- name : start apache service
service: name=httpd state=running
apache_setup.yml Playbook
Play
Template
Module
Apache 설정 파일 변경 – 환경변수
ServerRoot "{{ SVC_HTTPD_DIR }}"
#
# Listen: Allows you to bind Apache to
specific IP addresses and/or
# ports, instead of the default. See also
the <VirtualHost>
# directive.
#
Listen {{ HTTPD_PORT }}
httpd.conf Templates 환경변수
환경변수
Ansible 제어문
- name: add users
user: name={{ item }} state=present groups=user
with_items:
- open
- naru
- admin
Looping
- name: install apache
apt: name=httpd state=latest
when: ansible_distribution == ‘Ubuntu’
- name: install apache
yum: name=httpd state=latest
when: ansible_distribution == ‘RedHat’
Conditional
- include: test/main.yml
Include
Ansible Ad-hok Task 실행
$ ansible <host-pattern> [options]
$ ansible 192.168.11.3 -m ping -u root --ask-pass
SSH password:
192.168.23.14 | success >> {
"changed": false,
"ping": "pong"
}
특정 Host에 명령 실행
$ ansible web01.opennaru.com -m command -a ‘/sbin
/reboot’ --ask-pass
특정 Host에 명령 실행
실제 Web / WAS 구성 – 다양한 서비스
Machine #1
admin11
(+100)
front11
(+200)
test11
(+300)
Machine #2
admin21
(+100)
front21
(+200)
test21
(+300)
Machine #3
front31
(+100)
test31
(+200)
admin
230.10.1.1
front
230.10.2.1
test
230.10.3.1
Apache +
mod_jk / mod_cluster
admin
Virtual Host
front test
Apache +
mod_jk / mod_cluster
admin
Virtual Host
front test
JBoss EWS(Apache)
JBoss EAP 6.4.0/7.0.0
Domain Controller
Machine #3 Machine #4
실제 Web / WAS 구성 – 다양한 구성요소
OPENMARU APM
RHEL 7.3
JBoss Web
RHEL 7.3
JBoss EAP 7
RHEL 7.3
kisreal11
kisreal12
JBoss EAP 7
RHEL 7.3
kisreal21
kisreal22
JBoss DataGrid
RHEL 7.3
jdg11
jdg12
JBoss EAP - JMS
RHEL 7.3
jms11
jms12
Oracle(Real DB)
JBoss Web
RHEL 7.3
OPENMARU APM – Unix2Linux 전환지원
새로운 시작 – 산 너머 산
OPENMARU APM - 미들웨어 설치/구성/튜닝 자동화
운영환경표준화 - 개발팀 요구 사항
기존 기술지원과 OPENMARU APM 의 비교
고객 요구사항에 따른 웹 시스템 작업
제품이나 서비스에 관한 문의
콜 센터 :02-469-5426 ( 휴대폰 : 010-2243-3394 )
전자메일:sales@opennaru.com
03.Ansible 소개

More Related Content

What's hot

오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기영우 김
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansibleOmid Vahdaty
 
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용Jihyung Song
 
Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansibleKhizer Naeem
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)용호 최
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationJohn Lynch
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with AnsibleSwapnil Jain
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법Open Source Consulting
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.
쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.
쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.Open Source Consulting
 
Kubernetes fundamentals
Kubernetes fundamentalsKubernetes fundamentals
Kubernetes fundamentalsVictor Morales
 
WebAssembly Demystified
WebAssembly DemystifiedWebAssembly Demystified
WebAssembly DemystifiedJay Phelps
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationSuresh Kumar
 
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...OpenStack Korea Community
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기InfraEngineer
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubeletChanyeol yoon
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 

What's hot (20)

오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
 
Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
 
Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansible
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
 
ansible why ?
ansible why ?ansible why ?
ansible why ?
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.
쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.
쿠버네티스 기반 PaaS 솔루션 - Playce Kube를 소개합니다.
 
Ansible
AnsibleAnsible
Ansible
 
Kubernetes fundamentals
Kubernetes fundamentalsKubernetes fundamentals
Kubernetes fundamentals
 
WebAssembly Demystified
WebAssembly DemystifiedWebAssembly Demystified
WebAssembly Demystified
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubelet
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 

Similar to 03.Ansible 소개

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용SK Telecom
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정Seonghun Kang
 
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 CloudJude Kim
 
[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.pdfHeeJung Chae
 
Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축JoongSeob Kim
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석Amazon Web Services Korea
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화Opennaru, inc.
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
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
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경NAVER Engineering
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
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
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfSeung kyoo Park
 

Similar to 03.Ansible 소개 (20)

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정
 
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
 
[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
 
Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
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 설치
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Eclipse RCP 1/2
Eclipse RCP 1/2Eclipse RCP 1/2
Eclipse RCP 1/2
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
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)
 
테스트
테스트테스트
테스트
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdf
 

More from Opennaru, inc.

머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해Opennaru, inc.
 
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처Opennaru, inc.
 
컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계Opennaru, inc.
 
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?Opennaru, inc.
 
컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점Opennaru, inc.
 
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?Opennaru, inc.
 
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모Opennaru, inc.
 
가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모Opennaru, inc.
 
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모Opennaru, inc.
 
마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모Opennaru, inc.
 
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합Opennaru, inc.
 
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모Opennaru, inc.
 
자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모Opennaru, inc.
 
자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모Opennaru, inc.
 
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모Opennaru, inc.
 
PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모Opennaru, inc.
 
PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모Opennaru, inc.
 
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모Opennaru, inc.
 
16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pub16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pubOpennaru, inc.
 
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들Opennaru, inc.
 

More from Opennaru, inc. (20)

머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
 
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
 
컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계
 
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
 
컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점
 
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
 
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
 
가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모
 
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
 
마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모
 
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
 
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
 
자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모
 
자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모
 
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
 
PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모
 
PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모
 
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모
 
16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pub16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pub
 
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
 

03.Ansible 소개

  • 1. Ansible 소개 (IT Automation & Configuration Management)
  • 3. Increasing scale and complexity means we need admin automation Opscode gets more venture dough for its Chef From - http://goo.gl/dLcjS
  • 4. Global Google Trends : Ansible vs. Puppet vs. Chef
  • 5. Push Based vs. Pull Based
  • 6. Comparison : Ansible vs. Puppet vs. Chef
  • 7.
  • 8. Ansible Core & Ansible Tower
  • 9.
  • 10.
  • 14. Ansible 로 자동화할 수 있는 것
  • 16. Ansible 에 의한 오토메이션
  • 17. • 멱등성 (Idempotency) • 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 • 여러 번 적용해도 결과는 바뀌지 않는다. • 바뀌는 것이 없으면 당연히 배포되어도 바뀌지 않는다. • 바뀌는 부분이 있으면 그 부분만 반영된다. • Ansible 멱등성 • 대부분이 멱등성을 제공한다. • 멱등성을 제공하지 부분(모듈) • shell, command, file module Idempotency(멱등성)
  • 18.
  • 19.
  • 23. • playbook은 ansible의 환경 설정, 배포를 가능케 함 • YAML 문법을 사용하여 정의 • linux 기반 권한 관리 (user, group) 지원 • 하나의 playbook은 하나 또는 그 이상의 ‘play’를 정의하며, play의 목적은 여러 호스트들에 잘 정의된 ‘role’과 ‘task’를 매핑하는 역할을 맡음 • 그 외의 기능 들 • 반복 (with_item, with nested, until …) • 조건 분기 (when, register, …) • 다른 playbook 참조 (include, role, …) • 외부 정보 참조 • 환경 변수, 파일 등 (environment, lookup, vars_prompt,…) • 커스텀 모듈을 이용한 확장 playbook
  • 25. 태스크(Task)란 • 정형화 된 작업의 열거 • 태스크는 관련 지을 수 있었던 모듈을 호출 • 모듈은 Python나 Bash로 기술되고 있다 tasks: - name: check install httpd yum: name=httpd state=latest
  • 26. 모듈(Module)이란 • 특정 목적을 위해 작성된 Ansible 백엔드 • 주로 Python 으로 구현 • 대표적인 모듈들 • 패키지 관리 • yum, apt 지정 패키지( 및 의존 패키지) 설치 • 서비스 제어 • service 서비스 시작/정지 등 • 파일 처리 • File, copy, fetch, template 파일 배포(copy, template), 파일 수집(fetch) 등 • 커맨드 실행 • command, shell 외부 커맨드 실행과 그 출력 결과 보고 등 • 소스 코드 관리: git, subversion
  • 28. • 태스크 섹션 전에 vars: 섹션으로 변수를 정의 변수 정의(vars) vars: hello: Hello tasks: - name: Hello World debug: msg=”{{ hello }} Ansible”
  • 29. • 태스크에서 모듈명 다음 줄에서“when:” 을 기술하여 모듈의 실행 조건을 정의 • 지역 변수나 vars 정의된 변수에 대해 등호와 부등호를 이용하여 조건식이 true의 경우 에 실행 조건 분기 실행(when) tasks: - name: install Apache Web server yum: name=httpd state=latest when: ansible_os_family == 'RedHat' - name: install Apache Web server apt: name=apache2 state=latest when: ansible_os_family == 'Debian' or ansible_os_family == 'Ubuntu'
  • 30. • 태스크에서 모듈명의 다음 줄에서 “with_000:”으로 기술하여 모듈에{{ item }} 변수를 전달 루프 실행(Loops)  with_items  with_nested  with_dict  with_lines  with_indexed_items  with_ini  with_flattened  with_file  with_fileglob  with_first_found  with_together  with_subelements  with_random_choice  with_sequence
  • 31. • YAML 파일 뿐만 아니라 모든 파일에서 활용 가능 • 일반적으로 파일 확장자명을 .j2로 함 • Index.php.j2 • Mysql.출.j2 • Template task 일 때 jinja2가 적용 가능(copy task는 적용 안됨 ) 템플릿 tasks: - name: deploy my.cnf template: src=my.cnf.j2 dest=/etc/my.cnf filename: my.cnf.j2 [mysqld] user = {{ mysql_user }} port = {{ mysql_port }} datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock pid-file = /var/lib/mysqld/mysqld.pid
  • 32.
  • 33. Provisioning 제품 비교 제품 정의 개발언어 Agent 여부 통신방법 Ansible YAML Python 필요없음(SSH) JSON Chef DSL Ruby 필요 REST / STOMP Puppet DSL Ruby 필요 HTTP SSL
  • 34. • 설치 • OS 패키지 설치 : yum, apt-get, zypper 등 • Language 패키지 설치 : npm, bower, gem, pip 등 • 다운로드 • get_url, wget, git, subversion, fetch 등 • 환경설정 파일 배포 • copy, template • 실행 • shell, command, task, script • 기타 • Cloud, Clustering, Database, Crypto, Network, Remote Management, Windows등 다양한 모듈을 제공 Ansible이 할 수 있는 일
  • 35. Ansible Playbook을 이용한 Apache 설치 --- -name : install apache hosts : apache user: root tasks : - name : install httpd yum: name=httpd state=latest - name : start apache service service: name=httpd state=running apache_setup.yml /etc/ansible/hosts [apache] web[01:03].opennaru.com 192.168.11.3 $ ansible-playbook apache_setup.yml Playbook Play Tasks Handler Inventory Install Modules
  • 36. Apache 설정 파일 변경 --- -name : install apache hosts : apache user: root tasks : - name : install httpd yum: name=httpd state=latest - name : copy httpd.conf file template: src=httpd.conf dest=/etc/httpd/conf/httpd.conf - name : start apache service service: name=httpd state=running apache_setup.yml Playbook Play Template Module
  • 37. Apache 설정 파일 변경 – 환경변수 ServerRoot "{{ SVC_HTTPD_DIR }}" # # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # Listen {{ HTTPD_PORT }} httpd.conf Templates 환경변수 환경변수
  • 38. Ansible 제어문 - name: add users user: name={{ item }} state=present groups=user with_items: - open - naru - admin Looping - name: install apache apt: name=httpd state=latest when: ansible_distribution == ‘Ubuntu’ - name: install apache yum: name=httpd state=latest when: ansible_distribution == ‘RedHat’ Conditional - include: test/main.yml Include
  • 39. Ansible Ad-hok Task 실행 $ ansible <host-pattern> [options] $ ansible 192.168.11.3 -m ping -u root --ask-pass SSH password: 192.168.23.14 | success >> { "changed": false, "ping": "pong" } 특정 Host에 명령 실행 $ ansible web01.opennaru.com -m command -a ‘/sbin /reboot’ --ask-pass 특정 Host에 명령 실행
  • 40. 실제 Web / WAS 구성 – 다양한 서비스 Machine #1 admin11 (+100) front11 (+200) test11 (+300) Machine #2 admin21 (+100) front21 (+200) test21 (+300) Machine #3 front31 (+100) test31 (+200) admin 230.10.1.1 front 230.10.2.1 test 230.10.3.1 Apache + mod_jk / mod_cluster admin Virtual Host front test Apache + mod_jk / mod_cluster admin Virtual Host front test JBoss EWS(Apache) JBoss EAP 6.4.0/7.0.0 Domain Controller Machine #3 Machine #4
  • 41. 실제 Web / WAS 구성 – 다양한 구성요소 OPENMARU APM RHEL 7.3 JBoss Web RHEL 7.3 JBoss EAP 7 RHEL 7.3 kisreal11 kisreal12 JBoss EAP 7 RHEL 7.3 kisreal21 kisreal22 JBoss DataGrid RHEL 7.3 jdg11 jdg12 JBoss EAP - JMS RHEL 7.3 jms11 jms12 Oracle(Real DB) JBoss Web RHEL 7.3
  • 42.
  • 43. OPENMARU APM – Unix2Linux 전환지원
  • 44. 새로운 시작 – 산 너머 산
  • 45. OPENMARU APM - 미들웨어 설치/구성/튜닝 자동화
  • 48. 고객 요구사항에 따른 웹 시스템 작업
  • 49.
  • 50. 제품이나 서비스에 관한 문의 콜 센터 :02-469-5426 ( 휴대폰 : 010-2243-3394 ) 전자메일:sales@opennaru.com