본문 바로가기

DevOps/IaC 자동화8

[Ansible] 패키지 정보 이용하기 Package_facts 사용 Package Facts Ansible에서는 노드의 정보를 수집하는 Fact가 있습니다. gather_facts 필드의 값을 no로 설정해서 해당 정보가 필요없을 때, 성능을 높이기 위해 사용되고 있죠. package의 정보를 제공해주는 fact도 ansible에서 사용할 수 있습니다. Ansible은 여러 용도로 사용이되는데... 가장 많이 사용하는 용도는 패치를 자동화하기 위해 사용될 겁니다. 그래서 package에 대한 정보를 담고 있는 package fact를 패치하는데 유용하게 사용할 수 있습니다. 이번 글에서는 Package Facts를 이용해서 패키지들의 정보를 수집해서 사용하는 방법에 대해서 알아보겠습니다. 서비스의 애플리케이션들이 모두 패키지형태로 관리되고 애플리케이션들을 띄우는 서버가 .. 2021. 5. 25.
[Ansible] Serial 병렬실행 지정하기 Ansible Serial 옵션 Ansible의 task 실행은 기본적으로 병렬로 처리가 됩니다. 즉, 실행이 필요한 호스트에 동시 실행이 되는 것 입니다. task를 병렬로 실행되었을 때... 대표적으로 발생할 수 있는 문제는 실시간으로 서비스가 안될 수 있다는 점 입니다. 예를 들어 3개의 노드에서 HA 구성되어 실행되고 있는 웹서버가 있습니다. 새로운 feature가 추가되어 패치를 하려고하는데 ansible로 진행하면 병렬로 패치되어 어느 한 순간에 서비스가 동작하지 않는 문제가 발생할 수 있습니다. 이를 해결하기 위해 ansible에서는 serial 필드로 한번에 task가 실행되는 노드의 수를 지정할 수 있어 rolling update가 가능해집니다. --- - hosts: all gather.. 2021. 5. 23.
[Ansible] gather_facts 성능향상 방법 Ansible gather_facts 성능 향상 Ansible에서 default로 Node의 Fact 정보를 수집합니다. Fact는 Anisible Node의 OS, Resource, IP 등 호스트의 다양한 정보를 변수로 저장합니다. 이런한 Fact의 정보를 Provisioning하는 과정에서 사용하지 않는다면... 노드의 수에 비례해서 성능이 저하 될 수 있습니다. 예를 들어.... 단순하게 모든 노드에 파일을 하나 생성하는데 굳이 Node의 정보들을 수집할 필요가 없습니다. 3대의 노드에만 Provisioning한다면 크게 문제가 없겠지만... 100대, 1000대가 넘어가는 노드들을 관리하다면 성능에 대한 차이를 확연하게 느낄 수 있을 것 입니다. --- - hosts: all # facts를 수.. 2021. 5. 23.
[Puppet] 퍼펫 실행 Resource, Class, Manifest, Node 사용법 Puppet 실행 Puppet은 자체적으로 제공되는 언어를 사용하여 스크립트를 작성한다. 작성한 스크립트를 기반으로 관리되고 있는 Host에 명령을 내리고 인프라를 코드화하여 관리할 수 있다. Puppet 스크립트는 .pp 확장자를 갖고 Manifest 파일이라고도 한다. 이번 글에서는 Puppet Script에서 사용되는 Resource, Class, Manifest 그리고 Node에 대한 개념을 알아보고 Nginx를 설치하고 Nginx 홈페이지의 html파일을 받아와서 index로 정의하는 예제를 진행해보겠습니다. Puppet에 대한 기본 개념이 필요하거나 Puppet설치가 안되어있으면 실습환경을 위해 아래 글을 통해 설치가능합니다. [Puppet] 퍼펫 소개 및 설치 Puppet이란? Puppet은.. 2021. 1. 11.
[Puppet] 퍼펫 소개 및 설치 Puppet이란? Puppet은 ruby로 만들어진 시스템 관리 자동화 툴이다. 주로 설정, 관리, 배포, orchestrate와 같은 일을 하기 위해 사용된다. puppet을 사용하는 이유는 반복되는 업무를 자동화하기 위함이다. 예를 들어 패키지를 5개의 서버에 설치해야한다고 가정하면... 오랜 시간이 걸리지 않아 반복되는 작업을 직접 붙어서 할 수 있다. 하지만, 만약 100개, 1000개 이상의 서버에 같은 작업을 해야한다면? 직접 하기에는 소요되는 비용이 너무 큽니다. 이러한 이유로 인프라, 데브옵스 엔지니어가 조직의 업무를 자동화하기 위해 많이 사용한다. puppet 주요 특징 Master Agent Pull 기반 시스템 관리 툴은 Pull기반과 Push기반으로 나뉜다. Puppet은 Pull기.. 2021. 1. 10.
[Vagrant] SSH 공개키 자동 등록 환경 설정, Ansible 사용 이번 글에서는 Vagrant를 이용해서 ansible을 사용할 때 인증 작업을 생략하기 위해 SSH 공개키를 자동으로 등록하는 실습니다. Vagrant를 이용해서 provisioning할 때 Ansible을 많이 사용하게 됩니다. 그런데 ansible은 ssh를 통해 통신하기 때문에 ansible hosts에 직접 계정정보를 등록해주지 않는 이상 -k 옵션을 이용해야하지만... vagrant에서 환경 세팅을 위해 -k 옵션을 사용할 수 없다. 이런 불편함을 해소하기 위해 공개키를 vagrant에서 직접 등록하여 provisioning을 편하게 진행할 수 있습니다. Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant_API_Version = "2" .. 2020. 12. 20.
[Vagrant] 사용법 및 CentOS Provisioning 기본 구축, Vagrant란? Vagrant? Provisioning? Vagrant는 Provisioning을 위한 툴입니다. 그럼 Provisioning이 뭘까요? 제가 정의하는 Provisioning은 시스템을 미리 코드화하여 언제든지 즉시 시스템을 구성할 수 있도록 하는 것 입니다. 예를 들어 Virtual box를 사용해서 가상머신을 생성하는데 필요한 메모리, cpu, 네트워크를 정의하고 시스템에 필요한 패키지를 설치 혹은 환경설정을 미리 코드화하여 서버를 생성할 준비할 수 있습니다. Vagrant를 사용하면 주기적으로 서버를 배포하고 새롭게 환경은 적용할 필요가 있을 때 유용하게 사용될 수 있습니다. 각각 다른 서비스의 테스트환경을 구축하거나, 학습이나 단기적으로 사용에 필요할 수 있습니다. Vagrant 설치 Vagran.. 2020. 12. 19.
[Ansible] 설치 및 실습 환경 구축, Ansible이란? 왜 사용하는 것인가? Ansible은 무엇이고 왜 사용하는 것인가? Ansible에 대한 검색을 하셨다는 것은 자동화나 DevOps를 이미 Researching 했을 것이라고 생각됩니다. 주변에서 Ansible, Puppet, Chef 혹은 Salt와 같은 배포 자동화 관리 툴을 들어보셨을텐데 도대체 어떤 기능을 할 수 있고 왜 사용하는지에 대해서 알아보도록 합시다. 시스템을 이루기 위해 여러 서비스가 모여 하나의 시스템으로 운영이 됩니다. 예를 들어 배달앱 시스템을 구성하는데 필요한 서비스들을 나열해보면... 고객 및 배달원들이 앱을 사용하기 위한 로그인 서비스, 고객들의 주문 서비스, 배달원들이 배달하기 위해 사용되는 서비스, 주문 결제 서비스, DB 서비스 등... 여러개의 서비스가 운영됩니다. 그런데 각각 서비스들은 .. 2020. 12. 6.