SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Ansible 운영 자동화
운영자 교육
2019.02.21
Contents 1. Ansible소개
2. Ansible 설치/설정
3. Ansible 을 이용한 password 일괄 변경
1. Ansible소개
Ansible 소개
v Configuration Management System
• Provision
• Orchestration
• System 설정을 code로 관리 합니다.
• 멱등성(indempotency) - 여러 번 적용해도 결과는 항상 동일합니다.
• chef, puppet, salt, ansible
Ansible 소개
v Pull-based & Push-based
Pull-based 방식이 큰 규모의 서버 관리 및 신규 서버 추가에 더 적합하다고 하지만,
ansible을 이용하여 수 천대 서버를 관리하고 있으며, 서버 추가 및 삭제도 용의 합니다.
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
실행
Ansible 소개
v Ansible 구성요소
• Inventory : 관리 대상 서버 리스트 입니다.
• Modules : host에 특정 action을 수행하는 패키지화된 sctips 입니다.
• play-book : 변수 및 task를 관리 호스트에 수행하기 위해 yaml 문법으로 정의된 파일 입니다
• plug-in : 확장 기능(email, logging ,etc) 을 제공 하고 있습니다,
• Custom module : 사용자가 직접 작성한 모듈을 사용 할 수 있습니다.
v Ansible 구성요소
• 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
v Ansible 연결 플러그인
• ssh, paramiko – ssh 연결
• local – localhost 연결
• winrm – windows 연결
• docker – docker에 연결
Ansible 소개
v Ansible 개요
• Configuration management tool
• Open Source
• Python 기반
• Michael DeHaan 개발(Cobbler 개발자)
• Ansible. Inc는 Redhat에 인수됨
• ssh 연결
• 순차 적용
• 수백개의 모듈 제공
• Template - jinja2
• Playbook은 yaml 사용하여, syntax 이해가 쉬움
• Agentlee 방식으로 관리 호스트에 별도 작업이 필요하지 않음
• Twitter가 ansible로 전환
• Web 관리 UI인 ansible-tower(상용)
2. Ansible 설치 / 설정
Ansible 을 이용한 password 일괄 변경
v 데모 환경
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hostname 내부아이피 접속정보 역할
ansible_test_0 192.168.10.245 root/passowrd Ansible 실행 서버
ansible_test_1 192.168.10.230 root/passowrd 대상 서버
ansible_test_2 192.168.10.252 root/password 대상 서버
ansible_test_3 192.168.10.202 root/password 대상 서버
Ansible 설치/설정
v Ansible install
# yum install epel-release
# yum install ansible
Epel저장소를 이용하여 yum으로 설치 할 수 있습니다.
Yum 을 이용한 설치
# yum install autoconf gcc python-devel libffi-devel openssl-devel
# pip install ansible
Python기반으로 개발 되었기 때문에 pip으로 설치 가능 합니다.
pip 을 이용한 설치
# ansible --version
2019년 1월 기준 ansible 2.7 버전이 안정화 버전 입니다.
Ansible 확인
Ansible 설치/설정
v Ansible 디렉토리 구조
# ls /usr/lib/python2.7/site-packages/ansible
설치 디렉토리 PATH – CentOS7 기준
# ls /usr/lib/python2.7/site-packages/ansible/modules
Core Modules 위치
Ansible 설치/설정
v Ansible 디렉토리 구조
# ls /usr/lib/python2.7/site-packages/ansible/modules/system/ping.py
Ping Module 위치
# ls /usr/lib/python2.7/site-packages/ansible/modules/commands/shell.py
Shell Module 위치
Ansible 설치/설정
v Ansible hosts 설정
# cat /etc/hosts
Ansible에서 관리하는 호스트 정의하기 전 편의를 위하여 /etc/hosts 파일에 대상 서버 정보를 정의
합니다.
호스트를 그룹에 대한 특정 변수, 설정을 할 수 있습니다.
Ansible 설치/설정
v Ansible Inventory 설정
# cat /etc/ansible/hosts
Ansible에서 관리하는 호스트 정의하기 위해서 Inventory를 설정 합니다.
기본적인 설정은 “/etc/ansible/hosts” 에서 설정 하며, “/etc/ansible/ansible.cfg” 파일을 수정해서 별도의
파일로 설정 할 수도 있습니다.
호스트를 그룹화 하여 host를 관리 합니다.
호스트를 그룹에 대한 특정 변수, 설정을 할 수 있습니다.
Ansible 설치/설정
v Ansible Inventory 확인
# ansible --list-hosts webservers
# ansible --list-hosts all
설정된 inventory 에 대하여 “ --list-hosts "옵션을 사용 하여 확인 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
Ansible 설치/설정
v Ansible Ad-hoc
# ansible webservers -m shell -a "hostname"
Ansible ad-hoc 커맨드를 이용하여 해당 host에 접속 하여 명령어를 보내서 실행/응답 받을 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
# ansible webservers -m shell -a “whoami"
Ansible 설치/설정
v Ansible playbook
# cat /opt/ansible/rdate.yml
Playbook 은 배포에 내용(plays)을 정의한 파일로, 여러 작업(task)에 대하여 미리 정의된 yaml 형태의
문서 입니다. Playbook을 이용하여 복잡한 설정을 미리 정의 하여 반복적으로 사용 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
---: yaml 문법 처음을 정의 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
become: sudo 사용 지정 합니다.
tasks: host에 접속하여 해당 module 및 arg에 맞게 실제 action 수행하는 play를 list로 정의합니다.
yum: yum모듈을 사용하여 rdate 패키지를 설치 합니다.
shell : shell모듈을 사용하여 rdate 명령어를 실행합니다.
”webservers” 그룹에 rdate를 yum을 이용하여 설치 하고 , 설치된 rdate명령어를 이용하여 시간 동기화 하는 playbook
Ansible 설치/설정
v Ansible playbook
# ansible-playbook /opt/ansible/rdate.yml
Ansible-playbook 명령어를 이용 하여 정의된 playbook을 실행 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
3. Ansible 을 이용한 password 일괄 변경
Ansible 을 이용한 password 일괄 변경
v Ansible user module
Ansible에서 user 에 대한 설정은 미리 지정된 user 모듈을 이용하여 설정 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible 을 이용한 password 일괄 변경
v Host password 확인
”password” 문자로 호스트에 접속 시도 하여, 정상적으로 접속 되는지 확인 합니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
# sshpass -p 'password' ssh -o StrictHostKeyChecking=no ansible_test_1 hostname
Ansible 을 이용한 password 일괄 변경
v Ansible host 수정
각각의 호스트 마다 다른 패스워드를 설정 하기 위하여, host별로 new_password라는 변수로 지정하여
변경 할 패스워드를 미리 설정 합니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
# vi /etc/ansible/hosts
Ansible 을 이용한 password 일괄 변경
v Ansible password playbook
Ansible에서 user 에 대한 설정은 미리 지정된 user 모듈을 이용하여 설정 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
---
- name: Change password
become: true
hosts: webservers
tasks:
- name: Change password of existing user
user: name=root update_password=always password={{ new_password|password_hash('sha512') }}
# vi /opt/ansible/password.yml
new_password 변수를 sha512 해쉬로 설정하여 변경 합니다.
암호가 다를 경우 password를 업데이트 합니다.
변경할 user이름을 지정 합니다.
Ansible 을 이용한 password 일괄 변경
v Ansible password playbook
ansible playbook을 실행 하여 패스워드를 일괄적으로 변경 합니다.
Webservers 그룹에 대하여 확인을 합니다.
모든 그룹에 대하여 확인 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
# ansible-playbook /opt/ansible/password.yml
Ansible 을 이용한 password 일괄 변경
v Host password 확인
”password” 문자로 호스트에 접속 시도 하여, password가 변경되어 접속이 안되는 것을 확인 합니다.
변경된 “ new_password”로 접속 시도 하면 정상 적으로 접속이 가능 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
# sshpass -p 'password' ssh -o StrictHostKeyChecking=no ansible_test_1 hostname
# sshpass -p 'new_password' ssh -o StrictHostKeyChecking=no ansible_test_1 hostname
Ansible 을 이용한 password 일괄 변경
v Ansible host 변경
Password가 변경 되었기 때문에 “ansible_ssh_pass” 변수에 설정된 비밀번호를 변경 해야 정상적으로
실행 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
4. Ansible 을 이용한 패키지 일괄 설치
Ansible 을 이용한 패키지 일괄 설치
v Ansible playbook
# cat /opt/ansible/httpd_install.yml
Ansible playbook을 이용하여 동일한 서비스를 하는 host에 대하여 동일한 패키지 설정 및 설정을 변경 할
수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
httpd 이름의 패키지를 yum모듈을 이용 하여 설치 합니다.
service 모듈을 이용 하여 httpd 서비스를 등록 하고 실행 합니다.
copy 모듈을 이용 하여 ansible을 실행 하는 host파일을
대상 서버로 복사 합니다. mode를 이용 하면 권한을 설정 할 수 있습니다.
restart httpd라는 핸들러를 호출시 service모듈로 httpd데몬을 재실행 합니다.
해당 이름으로 지정된 핸들러를 호출 합니다.
Ansible 을 이용한 패키지 일괄 설치
v Ansible playbook
# ansible-playbook /opt/ansible/httpd_install.yml
Ansible playbook을 실행하여 httpd데몬을 일괄적으로 설치 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible 을 이용한 패키지 일괄 설치
v Ansible playbook
# ansible webservers -m shell -a "netstat -nltp | grep httpd"
copy로 복사된 설정에는 httpd데몬의 포트를 8998 로 변경 되는 설정이 있었습니다.
ad-hoc을 이용 하여 8998포트로 변경 되어 리스닝 되는지 확인 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible 을 이용한 패키지 일괄 설치
v Ansible playbook
# cat /opt/ansible/httpd.conf | grep Listen
설정을 일괄 적으로 변경 하기 위하여 ansible 서버에 있는 httd.conf파일을 수정 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible 을 이용한 패키지 일괄 설치
v Ansible playbook
# ansible-playbook /opt/ansible/httpd_install.yml
Ansible playbook을 다시 실행 하여 httpd데몬을 일괄적으로 설정을 덮어 쓰고 서비스를 재시작 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
Ansible 을 이용한 패키지 일괄 설치
v Ansible playbook
# ansible webservers -m shell -a "netstat -nltp | grep httpd"
다시 httpd의 리스닝 되어 있는 포트를 확인 하면 1000번 포트로 변경 된 것을 확인 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
5. Ansible을 이용한 파일 전송
Ansible을 이용한 파일 전송
v Ansible copy 모듈
# cat /opt/ansible/copy.yml
Ansible copy모듈을 사용 하면 Ansible서버에 있는 파일을 원격지 대상 서버로 일괄 전송 할 수 있습니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible server에서 전송 할 파일을 지정 합니다.
대상 서버에 저장 될 경로를 지정 합니다.
Ansible을 이용한 파일 전송
v Ansible copy 모듈
# ansible-playbook /opt/ansible/copy.yml
Playbook을 실행 하여 파일을 전송 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible을 이용한 파일 전송
v Ansible copy 모듈
# ansible -m shell -a 'ls -al /tmp/test.war' webservers
Shell 모듈을 사용 하여 대상 서버에 정상적으로 저장 된 것을 확인 합니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Ansible을 이용한 파일 전송
v Ansible copy 모듈
# ansible-playbook /opt/ansible/copy.yml
만약 동일한 파일을 동일한 playbook으로 실행 할 경우 파일이 동일 하기 때문에 변경 하지 않습니다.
Webservers 그룹에 대하여 확인을 합니다.
name: 해당 play에 대한 설명(주석), optional설정입니다.
hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
Thank you.

Contenu connexe

Tendances

IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with AnsibleRayed Alrashed
 
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...Simplilearn
 
Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansibleKhizer Naeem
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례Opennaru, inc.
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction Robert Reiz
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with AnsibleIvan Serdyuk
 
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
Hands On Introduction To Ansible Configuration Management With Ansible Comple...Hands On Introduction To Ansible Configuration Management With Ansible Comple...
Hands On Introduction To Ansible Configuration Management With Ansible Comple...SlideTeam
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansibleOmid Vahdaty
 
Best practices for ansible
Best practices for ansibleBest practices for ansible
Best practices for ansibleGeorge Shuklin
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationSuresh Kumar
 

Tendances (20)

IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
Ansible
AnsibleAnsible
Ansible
 
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
 
Ansible 101
Ansible 101Ansible 101
Ansible 101
 
Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansible
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 
ansible why ?
ansible why ?ansible why ?
ansible why ?
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
Ansible
AnsibleAnsible
Ansible
 
Ansible intro
Ansible introAnsible intro
Ansible intro
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례
 
Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with Ansible
 
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
Hands On Introduction To Ansible Configuration Management With Ansible Comple...Hands On Introduction To Ansible Configuration Management With Ansible Comple...
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
Best practices for ansible
Best practices for ansibleBest practices for ansible
Best practices for ansible
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Ansible get started
Ansible get startedAnsible get started
Ansible get started
 

Similaire à [오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육

Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APIHongmin Park
 
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
 
Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화Opennaru, inc.
 
Ch9,10. Deployments and Statefulsets
Ch9,10. Deployments and StatefulsetsCh9,10. Deployments and Statefulsets
Ch9,10. Deployments and StatefulsetsHongmin Park
 
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
 
하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정NoahKIM36
 
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox떠리 이
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정Seonghun Kang
 
[ 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
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용SK Telecom
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
[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
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱Jong Wook Kim
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migrationymtech
 

Similaire à [오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육 (20)

Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and API
 
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)
 
Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화Ansible를 통한 컨테이너 환경 자동화
Ansible를 통한 컨테이너 환경 자동화
 
Ch9,10. Deployments and Statefulsets
Ch9,10. Deployments and StatefulsetsCh9,10. Deployments and Statefulsets
Ch9,10. Deployments and Statefulsets
 
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 설치
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정하둡 고가용성(HA) 설정
하둡 고가용성(HA) 설정
 
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정
 
[ 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 활용
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Ansible과 CloudFormation을 이용한 배포 자동화
Ansible과 CloudFormation을 이용한 배포 자동화Ansible과 CloudFormation을 이용한 배포 자동화
Ansible과 CloudFormation을 이용한 배포 자동화
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
1.intro to k8s
1.intro to k8s1.intro to k8s
1.intro to k8s
 
[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
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
 

Plus de Ji-Woong Choi

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략Ji-Woong Choi
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기Ji-Woong Choi
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12Ji-Woong Choi
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기Ji-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocationJi-Woong Choi
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 

Plus de Ji-Woong Choi (20)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 

[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육

  • 1.
  • 3. Contents 1. Ansible소개 2. Ansible 설치/설정 3. Ansible 을 이용한 password 일괄 변경
  • 5. Ansible 소개 v Configuration Management System • Provision • Orchestration • System 설정을 code로 관리 합니다. • 멱등성(indempotency) - 여러 번 적용해도 결과는 항상 동일합니다. • chef, puppet, salt, ansible
  • 6. Ansible 소개 v Pull-based & Push-based Pull-based 방식이 큰 규모의 서버 관리 및 신규 서버 추가에 더 적합하다고 하지만, ansible을 이용하여 수 천대 서버를 관리하고 있으며, 서버 추가 및 삭제도 용의 합니다. 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 실행
  • 7. Ansible 소개 v Ansible 구성요소 • Inventory : 관리 대상 서버 리스트 입니다. • Modules : host에 특정 action을 수행하는 패키지화된 sctips 입니다. • play-book : 변수 및 task를 관리 호스트에 수행하기 위해 yaml 문법으로 정의된 파일 입니다 • plug-in : 확장 기능(email, logging ,etc) 을 제공 하고 있습니다, • Custom module : 사용자가 직접 작성한 모듈을 사용 할 수 있습니다. v Ansible 구성요소 • 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 v Ansible 연결 플러그인 • ssh, paramiko – ssh 연결 • local – localhost 연결 • winrm – windows 연결 • docker – docker에 연결
  • 8. Ansible 소개 v Ansible 개요 • Configuration management tool • Open Source • Python 기반 • Michael DeHaan 개발(Cobbler 개발자) • Ansible. Inc는 Redhat에 인수됨 • ssh 연결 • 순차 적용 • 수백개의 모듈 제공 • Template - jinja2 • Playbook은 yaml 사용하여, syntax 이해가 쉬움 • Agentlee 방식으로 관리 호스트에 별도 작업이 필요하지 않음 • Twitter가 ansible로 전환 • Web 관리 UI인 ansible-tower(상용)
  • 9. 2. Ansible 설치 / 설정
  • 10. Ansible 을 이용한 password 일괄 변경 v 데모 환경 Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hostname 내부아이피 접속정보 역할 ansible_test_0 192.168.10.245 root/passowrd Ansible 실행 서버 ansible_test_1 192.168.10.230 root/passowrd 대상 서버 ansible_test_2 192.168.10.252 root/password 대상 서버 ansible_test_3 192.168.10.202 root/password 대상 서버
  • 11. Ansible 설치/설정 v Ansible install # yum install epel-release # yum install ansible Epel저장소를 이용하여 yum으로 설치 할 수 있습니다. Yum 을 이용한 설치 # yum install autoconf gcc python-devel libffi-devel openssl-devel # pip install ansible Python기반으로 개발 되었기 때문에 pip으로 설치 가능 합니다. pip 을 이용한 설치 # ansible --version 2019년 1월 기준 ansible 2.7 버전이 안정화 버전 입니다. Ansible 확인
  • 12. Ansible 설치/설정 v Ansible 디렉토리 구조 # ls /usr/lib/python2.7/site-packages/ansible 설치 디렉토리 PATH – CentOS7 기준 # ls /usr/lib/python2.7/site-packages/ansible/modules Core Modules 위치
  • 13. Ansible 설치/설정 v Ansible 디렉토리 구조 # ls /usr/lib/python2.7/site-packages/ansible/modules/system/ping.py Ping Module 위치 # ls /usr/lib/python2.7/site-packages/ansible/modules/commands/shell.py Shell Module 위치
  • 14. Ansible 설치/설정 v Ansible hosts 설정 # cat /etc/hosts Ansible에서 관리하는 호스트 정의하기 전 편의를 위하여 /etc/hosts 파일에 대상 서버 정보를 정의 합니다. 호스트를 그룹에 대한 특정 변수, 설정을 할 수 있습니다.
  • 15. Ansible 설치/설정 v Ansible Inventory 설정 # cat /etc/ansible/hosts Ansible에서 관리하는 호스트 정의하기 위해서 Inventory를 설정 합니다. 기본적인 설정은 “/etc/ansible/hosts” 에서 설정 하며, “/etc/ansible/ansible.cfg” 파일을 수정해서 별도의 파일로 설정 할 수도 있습니다. 호스트를 그룹화 하여 host를 관리 합니다. 호스트를 그룹에 대한 특정 변수, 설정을 할 수 있습니다.
  • 16. Ansible 설치/설정 v Ansible Inventory 확인 # ansible --list-hosts webservers # ansible --list-hosts all 설정된 inventory 에 대하여 “ --list-hosts "옵션을 사용 하여 확인 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다.
  • 17. Ansible 설치/설정 v Ansible Ad-hoc # ansible webservers -m shell -a "hostname" Ansible ad-hoc 커맨드를 이용하여 해당 host에 접속 하여 명령어를 보내서 실행/응답 받을 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다. # ansible webservers -m shell -a “whoami"
  • 18. Ansible 설치/설정 v Ansible playbook # cat /opt/ansible/rdate.yml Playbook 은 배포에 내용(plays)을 정의한 파일로, 여러 작업(task)에 대하여 미리 정의된 yaml 형태의 문서 입니다. Playbook을 이용하여 복잡한 설정을 미리 정의 하여 반복적으로 사용 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. ---: yaml 문법 처음을 정의 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. become: sudo 사용 지정 합니다. tasks: host에 접속하여 해당 module 및 arg에 맞게 실제 action 수행하는 play를 list로 정의합니다. yum: yum모듈을 사용하여 rdate 패키지를 설치 합니다. shell : shell모듈을 사용하여 rdate 명령어를 실행합니다. ”webservers” 그룹에 rdate를 yum을 이용하여 설치 하고 , 설치된 rdate명령어를 이용하여 시간 동기화 하는 playbook
  • 19. Ansible 설치/설정 v Ansible playbook # ansible-playbook /opt/ansible/rdate.yml Ansible-playbook 명령어를 이용 하여 정의된 playbook을 실행 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 20. 3. Ansible 을 이용한 password 일괄 변경
  • 21. Ansible 을 이용한 password 일괄 변경 v Ansible user module Ansible에서 user 에 대한 설정은 미리 지정된 user 모듈을 이용하여 설정 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 22. Ansible 을 이용한 password 일괄 변경 v Host password 확인 ”password” 문자로 호스트에 접속 시도 하여, 정상적으로 접속 되는지 확인 합니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. # sshpass -p 'password' ssh -o StrictHostKeyChecking=no ansible_test_1 hostname
  • 23. Ansible 을 이용한 password 일괄 변경 v Ansible host 수정 각각의 호스트 마다 다른 패스워드를 설정 하기 위하여, host별로 new_password라는 변수로 지정하여 변경 할 패스워드를 미리 설정 합니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. # vi /etc/ansible/hosts
  • 24. Ansible 을 이용한 password 일괄 변경 v Ansible password playbook Ansible에서 user 에 대한 설정은 미리 지정된 user 모듈을 이용하여 설정 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. --- - name: Change password become: true hosts: webservers tasks: - name: Change password of existing user user: name=root update_password=always password={{ new_password|password_hash('sha512') }} # vi /opt/ansible/password.yml new_password 변수를 sha512 해쉬로 설정하여 변경 합니다. 암호가 다를 경우 password를 업데이트 합니다. 변경할 user이름을 지정 합니다.
  • 25. Ansible 을 이용한 password 일괄 변경 v Ansible password playbook ansible playbook을 실행 하여 패스워드를 일괄적으로 변경 합니다. Webservers 그룹에 대하여 확인을 합니다. 모든 그룹에 대하여 확인 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. # ansible-playbook /opt/ansible/password.yml
  • 26. Ansible 을 이용한 password 일괄 변경 v Host password 확인 ”password” 문자로 호스트에 접속 시도 하여, password가 변경되어 접속이 안되는 것을 확인 합니다. 변경된 “ new_password”로 접속 시도 하면 정상 적으로 접속이 가능 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. # sshpass -p 'password' ssh -o StrictHostKeyChecking=no ansible_test_1 hostname # sshpass -p 'new_password' ssh -o StrictHostKeyChecking=no ansible_test_1 hostname
  • 27. Ansible 을 이용한 password 일괄 변경 v Ansible host 변경 Password가 변경 되었기 때문에 “ansible_ssh_pass” 변수에 설정된 비밀번호를 변경 해야 정상적으로 실행 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 28. 4. Ansible 을 이용한 패키지 일괄 설치
  • 29. Ansible 을 이용한 패키지 일괄 설치 v Ansible playbook # cat /opt/ansible/httpd_install.yml Ansible playbook을 이용하여 동일한 서비스를 하는 host에 대하여 동일한 패키지 설정 및 설정을 변경 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. httpd 이름의 패키지를 yum모듈을 이용 하여 설치 합니다. service 모듈을 이용 하여 httpd 서비스를 등록 하고 실행 합니다. copy 모듈을 이용 하여 ansible을 실행 하는 host파일을 대상 서버로 복사 합니다. mode를 이용 하면 권한을 설정 할 수 있습니다. restart httpd라는 핸들러를 호출시 service모듈로 httpd데몬을 재실행 합니다. 해당 이름으로 지정된 핸들러를 호출 합니다.
  • 30. Ansible 을 이용한 패키지 일괄 설치 v Ansible playbook # ansible-playbook /opt/ansible/httpd_install.yml Ansible playbook을 실행하여 httpd데몬을 일괄적으로 설치 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 31. Ansible 을 이용한 패키지 일괄 설치 v Ansible playbook # ansible webservers -m shell -a "netstat -nltp | grep httpd" copy로 복사된 설정에는 httpd데몬의 포트를 8998 로 변경 되는 설정이 있었습니다. ad-hoc을 이용 하여 8998포트로 변경 되어 리스닝 되는지 확인 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 32. Ansible 을 이용한 패키지 일괄 설치 v Ansible playbook # cat /opt/ansible/httpd.conf | grep Listen 설정을 일괄 적으로 변경 하기 위하여 ansible 서버에 있는 httd.conf파일을 수정 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 33. Ansible 을 이용한 패키지 일괄 설치 v Ansible playbook # ansible-playbook /opt/ansible/httpd_install.yml Ansible playbook을 다시 실행 하여 httpd데몬을 일괄적으로 설정을 덮어 쓰고 서비스를 재시작 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다.
  • 34. Ansible 을 이용한 패키지 일괄 설치 v Ansible playbook # ansible webservers -m shell -a "netstat -nltp | grep httpd" 다시 httpd의 리스닝 되어 있는 포트를 확인 하면 1000번 포트로 변경 된 것을 확인 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 35. 5. Ansible을 이용한 파일 전송
  • 36. Ansible을 이용한 파일 전송 v Ansible copy 모듈 # cat /opt/ansible/copy.yml Ansible copy모듈을 사용 하면 Ansible서버에 있는 파일을 원격지 대상 서버로 일괄 전송 할 수 있습니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다. Ansible server에서 전송 할 파일을 지정 합니다. 대상 서버에 저장 될 경로를 지정 합니다.
  • 37. Ansible을 이용한 파일 전송 v Ansible copy 모듈 # ansible-playbook /opt/ansible/copy.yml Playbook을 실행 하여 파일을 전송 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 38. Ansible을 이용한 파일 전송 v Ansible copy 모듈 # ansible -m shell -a 'ls -al /tmp/test.war' webservers Shell 모듈을 사용 하여 대상 서버에 정상적으로 저장 된 것을 확인 합니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.
  • 39. Ansible을 이용한 파일 전송 v Ansible copy 모듈 # ansible-playbook /opt/ansible/copy.yml 만약 동일한 파일을 동일한 playbook으로 실행 할 경우 파일이 동일 하기 때문에 변경 하지 않습니다. Webservers 그룹에 대하여 확인을 합니다. name: 해당 play에 대한 설명(주석), optional설정입니다. hosts: Inventory의 ‘webservers’ group을 대상으로 지정 하여 실행 합니다.