목록자동화 (11)
맘가는 대로
앤서블의 변수 많은 프로그래밍 언어에서 데이터를 저장하고 사용하기 위해 변수를 사용한다. 이러한 원리는 앤서블에서도 마찬가지로 사용된다. 코딩을 한다면, 프로그램의 목적마다 다르겠지만, 전역 변수를 상수로 설정하고 주요한 데이터를 프로그램 전체에서 사용할 수 있게 하거나, 지역 변수를 사용해 특정 함수 혹은 메소드에 대해서만 사용할 수 있게 할 수 있을 것이다. 혹은 객체 지향 프로그래밍을 한다면 클래스 변수를 도입해 객체들마다 공유하는 변수를 사용할 수도 있을 것이다. 앤서블에서 사용하는 변수들도 개략적으로 보자면 비슷하지만, 큰 차이점은 각각의 변수가 앤서블의 모듈보다는 호스트마다 다를 수 있다는 것이다. 예를 들어, 앤서블은 호스트의 IP 주소를 수집할 수 있는데, 같은 네트워크 대역에서 호스트들은..
Ansible, 그리고 파일 Ansible 을 통해 파일을 작성하는 여러 방법을 알아볼 것이다. 우선, 간단하게 파일을 쓰는 방법을 생각해보자. 크게 고민할 것이 윈도우의 메모장이나 리눅스의 Vim 처럼 간단하거나 복잡한 편집기를 통해 직접 글을 쓰는 방법이 있다. 혹은 원래 있던 파일을 복사해서 사용하거나 조금 변형할 수도 있을 것이다. 또는 구글링을 통해 다른 사람이 작성한 글을 간단하게 ctrl + C, V 하여 붙여쓸 수도 있다. 이외에도 많겠지만 앤서블에서는 다양한 파일 쓰기 모듈들을 지원하고 있다. 자신이 갖고 있는 파일을 복사하는 것 뿐만 아니라, 네트워크를 통해 파일을 복사하거나, 템플릿을 이용해 비슷하지만 조건에 따라 내용이 달라지는 파일도 만들 수 있다. 이번 글에서는 앤서블에서 지원되..
LAMP, 그리고 자동화 LAMP 는 Linux, Apache Web server, MySQL, PHP 를 모아서 쓴 약자로, 오랫동안 사용되어 대표적인 리눅스 웹 서버 구성이라고 할 수 있다. 그렇기에 많이 사용될 것이고, 많이 사용되면 편의성은 물론, 절차중의 실수를 줄이기 위해 자동화를 도입하는 것이 좋다고 할 수 있다. 이 글에서는 Ansible 을 통해 1 대의 서버에 LAMP 구성을 자동적으로 할 수 있도록 할 예정이다. LAMP 를 Ansible 로 구성해보기 LAMP 는 그 이름에서 바로 구성요소들을 알 수 있다. 1 대의 서버에 4 가지 구성요소를 구현하려면 서버 스펙도 충분히 필요할 것이기 때문에 4 core / 4 GB 로 대상 서버를 구성할 것이다. 다만, Ansible 마스터 서버..
앤서블 실습 환경 구성을 마쳤으니 실제로 앤서블을 사용해볼 차례다. 앤서블을 사용하기 위해서는 앤서블을 통해 조작할 서버들에 대한 정보가 필요하다. 그러기 위해 서버들에 대한 접속 정보를 모은 인벤토리(inventory) 파일이 필요하다. 인벤토리 파일은 두 가지의 설정 방법이 있으며 정적 파일과 동적 파일로 나뉜다. 정적 파일은 다시 ini 와 yaml 양식으로 나뉘어지며, 동적 파일은 거의 모든 종류의 실행 파일이 대상이며 단지 출력 결과가 JSON 형태이면 된다. 정적 파일의 경우 앤서블 사용자가 직접 서버의 정보를 파일에 기재하는 방법이며, 소수의 서버들을 대상으로 할 때 유용하다. 동적 파일의 경우 클라우드를 사용할 때 접속 정보를 이용해 사용하고 있는 서버의 정보를 가져오는 경우등에 해당하며,..
앤서블 실습에 앞서 실습 환경을 구성하려고 한다. 주로 사용하는 OS 가 윈도우이며, 매번 힘들게 서버를 재구축할 수 없기 때문에 Vagrant 를 통해 실습 환경을 구성할 것이다. 또한, 앤서블과 같은 설정 관리 도구는 쉽게 수많은 서버를 구성하는 것이기 때문에 여러대의 노드를 빨리 구성하는 것도 필요하다. 코드 위와 같은 목적으로 구성한 코드는 아래와 같다. $NODE_COUNT=1 Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.provider "virtualbox" do |v| v.cpus = 1 v.memory = 256 end config.vm.provision "shell", inline: " sudo timed..
앞서 앤서블을 사용하기 전, 앤서블이 어떠한 구성이며 어떠한 방식으로 작동하는지 알아볼 것이다. 대략적으로 알아본 뒤에 세세한 것은 이후의 글들에서 차근차근 알아볼 것이다. 구조 앤서블은 플레이북, 모듈, 모듈 유틸리티, 플러그인, 인벤토리로 구성되어 있다. 각 구성 요소가 무엇인지 알아보자. - 모듈 앤서블에서 사용하는 스크립트이며, SSH 를 통해 원격 서버에 전달된 뒤 작업을 실행하는 역할을 한다. 일반적인 모듈의 의미와 크게 다르지 않으며, 명령줄 혹은 플레이북에서 사용되어 적절하게 지정되면 지정된 방식으로 작업을 진행한다. 앤서블에서 자주 접하게 될 구성 요소이며, 이미 많은 모듈들이 구현되어 있어 필요하다고 느껴지는 기능이 있다면 우선 모듈 목록을 보는 것을 권할 수준으로 다양한 모듈들이 기본..
앤서블이란? 앤서블을 간단하게 설명하자면 SSH 와 파이썬을 이용하여 서버 혹은 컴퓨팅 장비를 설정할 수 있게 하는 자동화 도구이다. 언뜻 보기에 단순해 보이는 두 구성요소로 인해 다른 자동화 도구들과 다르게 특별하게 하는 점들이 많다. 차근차근 알아보도록 하자. - 없다, 에이전트 다른 자동화 도구들과 다르게 가장 큰 앤서블만의 특징을 말해보라고 하면 에이전트가 없다는 것이다(agentless). 앤서블의 편한 점은 원격 호스트에 대해 관리자 권한을 가진 계정에 대해서 키 파일이 있으면 바로 접속을 할 수 있다는 점이다. 이는 바로 호스트 접속을 SSH 를 통해서 하기 때문이다. 이를 통해 별도로 원격 호스트에 에이전트를 별도로 설치가 없어지며, 정말 적은 컴퓨트 자원을 사용한다고 하더라도 에이전트로 ..
앞서 베이그런트를 통해 서버를 생성하다 보면 한 대가 아닌 여러대의 서버를 생성해야 할 때가 분명 있을 것이다. 단일 서버가 아닌 여러대의 서버를 생성하고, 이중화, 부하 분산, 클러스터링 등 다양한 목적으로 여러대의 서버를 사용해야할 때가 있을 것이다. 물론, 여러개의 Vagrantfile 을 작성하고 네트워크 대역을 동일하게 하는 식으로 할 수도 있지만, 베이그런트는 멀티 노드 구성을 지원하고 있다. 따라서 어렵지 않게 코딩을 하듯 자연스럽게 멀티 노드를 구성할 수 있다. 간단한 구성부터 시작해보자 가볍게 2 대 부터 한 Vagrantfile 에서 여러대의 가상 머신을 만들기 위해 사용되는 베이그런트의 문법은 define 이다. LAMP 시스템 구성을 위해 1 대의 웹 서버와 1 대의 DB 서버를 구..