IaC/Ansible_앤서블

IaC/Ansible_앤서블

[Ansible] 출력 결과 관리 (결과값 파일로 저장, 리턴)

예전 사내에서 ansible을 처음 사용했던 때가 기억이 난다. 모든 RHEL OS 서비스(서버) 호스트들의 패스워드 만료일을 파악해달라는 요청이였는데, 서버 수가 상당했고 수작업으로 하나하나 진행하고 있었다..만, 5분의 1도 못해서 포기하고 ansible로 일괄 작업 및 자동화를 시키기로 결심했다. chage명령어를 사용해 나타나는 계정의 정보들중에서 패스워드 만기일을 나타내는 password expires 부분의 데이터만 grep 해와서 보면될듯싶은데.. ansible이 playbook 형식으로도 사용할 수 있지만, 이미 기능들이 생성되어있는 모듈들로도 충분히 진행가능한 기능인듯 싶어 모듈로 진행하였다. Inventory를 작성하여 host ec2를 명시하였다. 기능 테스트만 진행할하므로 간단히 1..

IaC/Ansible_앤서블

[Ansible] wait_for, wait_for_connection 모듈 (동작 대기, 확인)

wait_for 모듈 ansible의 wait_for 모듈은 특정 동작을 대기, 확인할 때 쓰이는 모듈이다. Application의 상태를 확인하거나, 파일의 존재여부를 확인, 파일의 특정 내용의 유무 등을 확인하여 다음 동작의 여부를 판단하는데 주로 사용한다. wait_for 모듈 가이드 문서 = docs.ansible.com/ansible/2.3/wait_for_module.html ansible.builtin.wait_for module – Waits for a condition before continuing — Ansible Documentation Note This module is part of ansible-core and included in all Ansible installations..

IaC/Ansible_앤서블

[Ansible] lineinfile 모듈 (파일 수정)

lineinfile 모듈 ansible의 lineinfie 모듈은 regular expression을 사용하여 파일의 내용 변경 작업을 하는 모듈이다. Ansible 가이드 페이지 docs.ansible.com/ansible/2.5/modules/lineinfile_module.html ansible.builtin.lineinfile module – Manage lines in text files — Ansible Documentation ansible.builtin.lineinfile module – Manage lines in text files Note This module is part of ansible-core and included in all Ansible installations. In ..

IaC/Ansible_앤서블

[Ansible] fetch, copy 모듈(파일 복사)

fetch, Copy 모듈 사용ansible의 Fetch, Copy 모듈은 linux의 scp 명령어 동작방식과 유사하다.기본적인 모듈 사용에 관한 설명은 ansible 가이드 페이지에서 확인할 수 있다.  ansible.builtin.fetch module – Fetch files from remote nodes — Ansible DocumentationNote This module is part of ansible-core and included in all Ansible installations. In most cases, you can use the short module name fetch even without specifying the collections: keyword. However, ..

IaC/Ansible_앤서블

[Ansible] Sysnchronize 모듈(Remote to Remote 파일전송)

Synchronize 모듈ansible의 Synchrinize 모듈은 linux의 rysnc 명령어를 사용할 수 있도록 만들어 놓은 모듈이다.  Remote to Remote로 데이터 전송ansible에서 파일을 옮기는 방법은 copy, fetch 등의 방법도 있지만,synchronize(rsync)를 사용하여 두 host 간에 데이터를 전송하는 방법에 대해 설명하겠다. 단일 데이터(혹은 2,3개 등 적은 데이터)- 주로 copy, fetch 모듈을 사용한다.대용량의 파일(혹은 디렉터리)- synchronie 모듈을 사용한다.  1. Sysnchrinize default 모드 (push) sysnchrionize default 동작 Sysnchronize는 default로 push mode로 동작한다.S..

IaC/Ansible_앤서블

[Ansible] 반복문 (loop, with_item)

Ansible 반복문ansible에서 반복문이란, task를 반복하는 것이다. 예를 들어 사용자 10 명을 만들어야 한다고 가정한다면, user 모듈로 진행할 때 task를 10개를 생성해야 하는데해당 작업을 반복문을 이용해 효율적으로 줄일 수 있는 것이다. ansible에서 반복문을 사용할 수 있는 방법으로 loop와 with_item 두 가지가 있다.ansible 2.4 까지는 with_* 키워드를 사용하여 작업을 진행하였으나,ansible 2.5 부터는 좀 더 명확한 loop 키워드를 사용한다.(패키지 관련된 모듈은 반복문을 쓰지 않을것을 권장한다고 한다.)  with_item 반복문추가예정  loop 반복문반복문을 사용하여 host 서버의 user를 삭제하는 실습을 진행해보겠다.(user 모듈로 ..

IaC/Ansible_앤서블

[Ansible] cfg 파일 설정(앤서블 명령 설정, 세팅)

ansible.cfg 파일이란?ansible.cfg 엔진은 ansible 명령을 실행할 때 모든 환경설정 및 세팅이 들어있는 ansible.cfg를 참고하여 명령을 실행한다.  ansible.cfg 파일 사용ansible.cfg 파일은 여러 위치에 있을 수 있고, ansible 엔진은 정해진 순서대로 구성파일을 확인한다. ansible 명령이 실행되는 디렉터리에 있는 ansible.cfg 파일홈 디렉터리에서 ansible.cfg를 찾는다. 이게 없으면 default 구성파일을 사용한다.default 구성파일인 /etc/ansible/ansible.cfg 이를 통해 관리자는 다양한 관경이나 프로젝트가 별도의 디렉토리에 저장되는 구조를 생성할 수 있고,각 디렉터리에는 고유 설정 집합으로 맞춤화된 구성파일을 ..

IaC/Ansible_앤서블

[Ansible] Inventory 작성방법

Inventory 작성 방법Invnetory는 확장자명이 따로 존재하지 않는다.따라서 파일 이름은 본인 마음대로 정해도 된다.(inventory 파일은 기본적인 host 주소들의 묶음이라고 생각하면 된다.) 추가로 .yml 파일로도 inventory 작성이 가능하다.mail.example.com //이렇게 하면 Ad-hoc이나 Playbook에서 해당 호스트 네임으로 명령어 실행가능//호스트 네임과 IP주소로 설정 가능[webservers]192.168.0.5192.168.0.6[dbservers]one.example.comtwo.example.comthree.example.com[nossh]nossh.example.com:5050 //기본 ssh포트를 사용하지 않는다면 이런식으로도 설정 가능..

IaC/Ansible_앤서블

[Ansible] 자주 사용하는 간단한 모듈 활용

모듈이란?CLI나 playbook 작업에서 사용할 수 있는 별도의 코드 단위이다.하나의 작은 프로그램이라고 생각하면 된다. 모듈의 특징멱등성을 보장해준다.중복 실행될 여지가 차단된다.가독성이 좋다.배포전에 테스트가 가능하다.이제 서버와 인벤토리가 준비되었다고 가정 하에 모듈 실습을 진행하겠다.(본인은 EC2 2대 사용하여 진행하였다. 시작 전 꼭 ping으로 테스트 진행할 것.)   1. Shell 모듈쉘을 이용한 작업에 사용되는 모듈이다.-a로 쉘에서 동작시킬 명령어를 입력시킬 수 있다. 본인은 inventory를 새로 작성하여 진행했기 때문에 inventory를 -i 옵션으로 지정해주었다.  2. User 모듈지정한 서버에 user를 생성하는 모듈이다.ansible all -m user -a 'nam..

IaC/Ansible_앤서블

[Ansible] When 조건문 트리구조 생성(includ_tasks)

저번 글에서 조건문(when)을 활용해서 조건에 만족하는 경우에만 파일에 내용을 추가하는 기능을 테스트하였다.https://cwpack0730.tistory.com/12 [Ansible] When 조건문Ansible When 조건문 및 파일 내용 추가 Ansible when 조건문을 활용하여 해당 파일이 있는 서버에만(*조건) 파일에 내용을 추가하는 기능을 실습해보려 한다. EC2 3개 (ansible1, hosts2) 로 테스트를 진행해cwpack0730.tistory.com 하지만 단순히 yes or no 말고도 (조건에 만족하면 start, 아니면 stop) a조건이면 a실행, b조건이면 b실행 등 조건을 나눠서 사용해보고 싶어졌다. 여러 when을 사용할 수 있는 방법을 조사해봤으나,단순한 Whe..

IaC/Ansible_앤서블

[Ansible] When 조건문

Ansible When 조건문 및 파일 내용 추가Ansible when 조건문을 활용하여 해당 파일이 있는 서버에만(*조건) 파일에 내용을 추가하는 기능을 실습해보려 한다.EC2 3개 (ansible1, hosts2) 로 테스트를 진행해보겠다.  Ansible 파일 내용 추가일단 이미 존재하는 파일에서 내용을 추가하는 기능을 실습하겠다.ansible의 lineinfile 모듈은 regular expression을 사용하여 파일의 내용을 변경하는 작업을 하는 모듈이다.( regular expression/정규 표현식 은 문자열에서 특정 문자 조합을 찾기 위한 패턴이다.)--- - hosts: all name: rc-local service status check gather_facts: fal..

IaC/Ansible_앤서블

[Ansible] 작업 제어 구현 - 오류처리

ansible playbook에서의 오류처리ansible에서는 각 task의 return code를 평가하여 task의 성공 여부를 판단한다.(Ansible 은 0이 아닌 return code 를 수신하거나 모듈에서 오류를 수신하면해당 호스트에서 실행을 중지하고 다른 호스트로 넘어가게 된다.) 일반적으로 task에서 하나가 실패하는 즉시 ansible은 해당 호스트의 play를 중단하고 종료된다.하지만 작업이 실패한다 하더라도 play를 계속할 수 있어야 한다.(예로 특정 작업이 실패할 것으로 예상하고 몇가지 다른 작업을 조건부로 실행하여 복구하는 등)Ansible 은 이러한 상황을 처리하고 원하는 동작, 출력 및 보고를 얻는 데 도움이 되는 설정을 제공한다. 작업 실패 무시하기 : ignore_erro..

cwpack0730
'IaC/Ansible_앤서블' 카테고리의 글 목록