분류 전체보기(62)
-
( 메모 ) Ansible role base 구조 및 inventory 그룹핑 방법
Intro 이번 게시글은 ansible playbook 구조에 대해 러프하게 보려고 한다. 목적은 세부적으로 모든 것을 테스트 하는 것은 아니고, 기존에 playbook을 유지보수 하면서 어렴풋이 알았던 것을 "아~ 이게 이런 용도 였구나!" 라고 한번 짚어보기 위함이다. ( 체계적이지 못한 내용이라 다른 분들께 도움이 못 될 것 같습니다.. ) Sample Directory Layout 아래는 ansible 공식문서에서 찾을 수 있는 Directory Layout 이다. 이중에서 오늘 새롭게 알게 된 것은 handler 이다. task에 쓰인 모듈의 changed 값에 따라 trigger 되는 함수 개념이라고 한다. 예를 들어서 특정 서비스의 status 확인을 했는데 active 상태가 아니면 not..
2022.09.05 -
Ansible Vault로 민감한 데이터 암호화하기
Intro Ansible Playbook에 비밀번호나 api key 같은 보안상 민감한 내용이 사용되어야 할 때가 있다. 평문으로 넘길 경우 보안상 취약하기 때문에 암호화하는 것이 필요하다. 이때 Ansible Vault로 변수의 암호화를 수행하고, playbook 에서 이를 참조하여 보안을 강화할 수 있다. 배경 다음과 같이 dbadm 계정을 생성하고 패스워드를 지정하려고 한다. 이때 계정에 대한 패스워드를 아래와 같이 평문으로 넘기는 것은 보안상 취약하다. [root@wglee-deploy training-wglee-playbook]# cat roles/deploy-db/tasks/main.yml --- - name: Create user user: name: dbadm password: "dbate..
2022.09.05 -
Ansible 서버 reboot 후 정상적으로 올라왔는지 확인하기
Intro Ansible Playbook에서 target 서버를 reboot했을 때, 해당 서버가 정상적으로 올라온 상태에서 나머지 task를 실행해야 할 것이다. 올라온 것을 검증하지 않고 나머지 task를 수행하면 에러가 발생할 수 있다. 본 게시글에서는 target서버 reboot 후 정상적으로 올라왔는지 확인하는 방법 2가지를 설명한다. 첫번째는 wait_for 모듈을 사용하는 것이고, 두번째는 reboot 모듈의 test_command 파라미터를 사용하는 것이다. 직접 사용해보니 reboot 모듈의 test_command 로 확인하는 것이 task를 줄일 수 있고 훨씬 간편하다. 1. wait_for / connection wailt_for 모듈을 사용하면 특정 포트 상태를 확인하여 어플리케이션..
2022.09.05 -
Ansible Semaphore 설치 (CentOS 7)
Intro 오늘은 Ansible Semaphore 에 대해 알아보도록 한다. Ansible Semaphore 는 Ansible Playbook을 UI 적으로 관리할 수 있는 인터페이스이다. Web UI로 쉽게 다룰 수 있어 cli 사용이 어려운 비엔지니어도 사용이 편리하다. 또한 역할 기반으로 엑세스를 제어하여 보안을 높이고, 각 task별로 cron을 등록해 스케줄링이 가능하다. Semaphore Home : https://ansible-semaphore.com/ Semaphore Docs : https://docs.ansible-semaphore.com/ 설치 환경 Centos 7.6 Ansible Semaphore 최신 버전 ( v2.8.49 ) Ansible 2.9.27 설치 과정 Ansible ..
2022.09.05 -
Ansible Semaphore 기본 동작 테스트 - task 등록 및 cron 스케줄링
Intro 지난 게시글에서 Ansible Semaphore 설치한 것에 이어, task 를 등록해 보도록 한다. Semaphore를 통해 task에 cron 을 걸어서 스케줄링을 할 수도 있다. 프로젝트 생성 프로젝트 생성 후에 대시보드를 확인 할 수 있다. Environment 생성 나는 따로 외부에서 변수 지정할 것은 없어서 빈 파일을 생성했다. SSH Key 생성 target에 task를 돌릴 때 사용할 ssh key 등록 semaphore가 동작하는 master 서버에서 target 서버에 접속하여 플레이북을 실행할 때 사용할 ssh 개인키를 등록한다. Repository 생성 github 주소를 url 칸에 입력한다. 나는 SSH 타입으로 git clone을 할 것이다. git clone을 할 ..
2022.09.05 -
fallocate 명령어로 만든 파일의 mkswap 불가 현상 (sparse file)
Intro fallocate 명령어로 생성한 파일을 swap 영역으로 사용하려 했는데 swapon을 할 때 다음과 같은 에러가 발생했다. swapon: /root/swapfile: swapon failed: Invalid argument [root@server-1-lab ~]# fallocate -l 200MiB /root/swapfile [root@server-1-lab ~]# ls -lh | grep swap -rw-r--r--. 1 root root 200M Aug 28 19:04 swapfile [root@server-1-lab ~]# chmod 600 swapfile [root@server-1-lab ~]# mkswap /root/swapfile Setting up swapspace versio..
2022.08.28 -
[LVM] lvextend 로 logical volume 확장하기
Intro LVM의 LV(logical volume)을 이용할 때의 장점 중 하나로, 시스템 중단 없이 파일 시스템을 확장할 수 있다. VG(Volume Group)의 리소스로 LV를 유연하게 확장 시킨 다음에 LV에 마운트 된 파일 시스템에 바로 확장된 용량을 적용할 수 있다. lvextend examples 1vextend -1 50 : lv의 크기를 정확히 50개 의 LE로 조정. lvextend -l +50 : 현 lv에 50개의 LE를 추가 lvextend -L 100M : 현 lv의 총 용량을 딱 100M로 resize. lvextend -L +100M : lv에 100MiB 를 추가 lvextend -l +50%FREE : vg에 FREE로 남아있는 영역의 50% 만큼 확장한다. FileSy..
2022.08.28 -
로컬 yum 레포지터리 만들기! (reposync, yumdownloader, createrepo)
Intro 오늘은 createrepo 명령어로 local yum repo를 한번 생성해 보겠다. 원격 서버에서도 로컬 yum 레포지터리에 http url로 접근할 수 있도록 설정해 본다. 로컬 repository 생성 repo로 사용할 디렉터리를 생성한다. [root@server-1-lab ~]# mkdir /wgleeyumrepo repo 디렉터리에 레포지터리에서 관리할 rpm 파일들을 위치 시킨다. 나는 두가지 방법으로 rpm 파일을 다운 받았다. 1번은 개인 학습용으로 해 본 것으로, 만약 실제로 특정 mirror에서 다수의 패키지를 다운받아서 로컬에서 관리하고자 함이라면 2번에 해당하는 reposync 방법이 제일 활용도 높을 것이다. (1) 14-.2.0 버전의 ceph 패키지를 mirror에서..
2022.08.28 -
lvm 구축한 것 삭제하기 (lvremove, vgremove, pvremove)
Intro disk 파티셔닝을 해서 lvm 으로 사용하고 있는데, 모든 설정을 원복하고 처음부터 다시 해보려고 한다. 이전에는 lvm 구축(pv, lv, vg 생성) 위주로 해봤다면 이번에는 삭제하는 과정을 테스트 해 본다. 이전 게시글 : 2021.09.01 - [✨ Linux] - LVM(Logical Volume Manager) 의 개념과 설정 방법 AS-IS 지금은 다음과 같이 설정되어 있다. /dev/sda 디바이스는 /dev/sda1 ~ /dev/sda3 으로 파티셔닝 되어있고, /dev/sda2, /dev/sda3이 test_lv라는 logical volume 으로 사용되고 있다. [root@server-1-lab ~]# fdisk -l /dev/sda Disk /dev/sda: 2147 M..
2022.08.27