Hero Image
[DevOps] Terraform vs Ansible 뭐가 다르죠?

Terraform vs Ansible: 기술적으로 완벽 정리한 차이점 비교 분석 클라우드와 DevOps 분야에서 인프라 자동화는 필수입니다. 대표적인 IaC(Infrastructure as Code) 도구로 Terraform과 Ansible이 있는데요, 두 도구는 비슷해 보이지만 명확한 차이점이 있습니다. 이번 포스팅에서는 두 도구를 기술적인 관점에서 상세히 비교하고, 명확한 예시를 통해 각각 언제 사용하는 것이 효과적인지 설명하겠습니다. Terraform과 Ansible의 개념적 차이 항목 Terraform Ansible 목적 인프라 리소스 프로비저닝 및 상태 관리 서버 구성 관리, 애플리케이션 배포 및 자동화 지향 방식 선언적(Declarative) 절차적(Procedural), 일부 선언적 방식 상태 관리 상태 파일(.tfstate) 유지 상태 파일 없이 실행마다 실시간 체크 멱등성(Idempotency) 기본적으로 제공 모듈 수준에서 제공, 상황에 따라 달라짐 Terraform은 주로 클라우드 기반 인프라의 전체 생명주기를 관리하는 데 효과적입니다. Ansible은 서버의 세부 구성 및 애플리케이션의 배포, 관리 자동화에 더 적합합니다. 기술적 실행 방식 비교 항목 Terraform Ansible 사용 언어 HCL(HashiCorp Configuration Language) YAML + Jinja2 실행 방식 Provider 기반 API 호출 SSH/WinRM 원격 명령 실행 에이전트(Agent) 여부 불필요 불필요(Agentless) Terraform은 클라우드 제공자의 API와 직접 상호작용하며, Ansible은 SSH 또는 WinRM을 통해 서버에 직접 접속하여 구성 작업을 수행합니다. 하지만 Terraform은 On-Prem 환경에서 클라우드 서버를 다루는건 적절한 Provider가 있다면 문제없지만, 어플리케이션을 베포하기 위한 설정 부터 패키지 설치를 수행해야 한다면 Ansible 처럼 SSH로 접속 해야 합니다.

Hero Image
큰수 작은수로 정렬후 덧셈

입력 받은 수를 큰수와 작은수로 정렬후 덧셈 모든 내용은 Git hub 에도 있습니다. 문제 임의의 수를 입력 받아 큰수와 작은수로 정렬한후 덧셈을 함. 필요 자료구조 및 알고리즘 ASCII Code를 통한 계신(키보드 입력및 파일 입출력) Bubble Sorting Binary Addition Algotirthm 설계 KeyBoard Input or File Input Processing Dynamic Allocation for Big&Small Integer Bubble sort for Big&small integer Binary Addition Algorithm 구현 Input Any Number : 원하는 아무 숫자를 Space로 구분지어 입력합니다. Result : Space로 입력된 숫자들을 오름차순 내림차순으로 정렬되어 Binary Addition이 됩니다. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <sys/time.h> #define MAX_STR_SIZE 100 void bubble(char a[], int n); void rebubble(char b[], int n); void swap(char *, char *); void showstream(char a[]); void sum(char big[],char small[]); void reverse(char a[]); void ncarry(int n,int end); void whatbubblein(char a[],char b[]); void input_string(); char result[MAX_STR_SIZE]; char str_before[MAX_STR_SIZE]; int main() { char str_after[MAX_STR_SIZE]; printf("Input Any Number : "); input_string(); strcpy(str_after,str_before); bubble(str_before,(int)strlen(str_before)); rebubble(str_after,(int)strlen(str_before)); sum(str_before,str_after); reverse(result); printf("result : "); showstream(result); return 0; } void input_string(){ char str_after[MAX_STR_SIZE]; char str_read[MAX_STR_SIZE]; int i,j,k=0; fgets(str_read , MAX_STR_SIZE,stdin); for (int i = 0; i < strlen(str_read); ++i) { if(str_read[i]==10){ str_before[k] ='\0'; } if(str_read[i]!=32 && str_read[i]!=10){ //32 space bar str_before[k]=str_read[i]; k++; } } } void bubble(char a[], int n) { /* n is the size of a[] */ int i, j,k; for (i = 0; i < n - 1; ++i){ for (j = n - 1; j > i; --j){ if (a[j-1] > a[j]){ swap(&a[j-1], &a[j]); } } } } void rebubble(char b[], int n){ int i,j,k=0; for (i = 0; i < n - 1; ++i){ for (j = n - 1; j > i; --j){ if (b[j-1] < b[j] ){ swap(&b[j-1], &b[j]); } } } } void swap(char *p,char *q){ static char cnt=1; char temp=*p; *p=*q; *q=temp; cnt++; } void showstream(char a[]){ puts(a); } void sum(char big[],char small[]){ char temp[MAX_STR_SIZE]; int i,j,k; static int count=0; int leng,carry=0; leng = (int)(strlen(big)); for (int i = 0; i < leng; ++i) { temp[i]=(big[leng-1-i]+small[leng-1-i])-48; if(carry==1){ result[i]=1+temp[i]; carry = 0; if(result[i]>=58){ result[i]=result[i]-10; result[i+1]=result[i+1]+49; ncarry(count,i); carry=1; } } else{ if(temp[i]>=58){ result[i]=temp[i]-10; carry=1; ncarry(count,i); } else{ result[i]+= temp[i]; } } count++; } } void reverse(char a[]) { char temp[MAX_STR_SIZE]; int x; x=strlen(a); for(int n=x-1;n>=0;n--) { temp[x-n-1]=a[n]; } temp[x]='\0'; strcpy(result,temp); } void ncarry(int n,int end){ if(n==end){ result[n+1]='1'; } else{ result[n+1]=result[n+1]+1; } } void whatbubblein(char a[],char b[]) { int i,leng; leng = (int)(strlen(a)); printf("bubble :\t"); for (int i = 0; i <leng; ++i) { printf("[%d]:%d(%c) ",i, a[i],a[i]); } printf("\nrebubble :\t"); for(i= 0; i <leng;i++) { printf("[%d]:%d(%c) ",i, b[i],b[i]); } printf("\n"); } Refference 숫자 알고리즘

Hero Image
AWS project 진행 과정

gui 변경 사전에 맥에 vncviewer를 설치해 줬다. 아마 대부분 유저들이 사용하는 팀뷰어 같은 앱이라고 생각하면 편하다. 설치하면서 stackoverflow를 참고 하였다. # aws 우분투 서버 접속후 $ sudo apt-get update $ sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal $ sudo apt-get install ubuntu-desktop $ sudo apt-get install vnc4server ubuntu@ip-172-31-19-48:~$ vncserver You will require a password to access your desktops. Password: Password must be at least 6 characters - try again Password: Password must be at least 6 characters - try again Password: Verify: xauth: file /home/ubuntu/.Xauthority does not exist New 'ip-172-31-19-48:1 (ubuntu)' desktop is ip-172-31-19-48:1 Creating default startup script /home/ubuntu/.vnc/xstartup Starting applications specified in /home/ubuntu/.vnc/xstartup Log file is /home/ubuntu/.vnc/ip-172-31-19-48:1.log $ vncserver -kill :1 $ exit # 우분투 서버 재접속 cd /vnc sudo vi xstartup #insert this script-------------------------------------# export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & gnome-panel & gnome-settings-daemon & metacity & nautilus & gnome-terminal & #-------------------------------------------------------# # 이후 서버에 접속 할때마다 연결 주소 확인