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
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 & #-------------------------------------------------------# # 이후 서버에 접속 할때마다 연결 주소 확인

Hero Image
Django 따라해보기!!

Django(Framework) Django(/dʒæŋɡoʊ/ jang-goh/쟁고/장고)는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)입니다. 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크랍니다. Installation $ pip3 install Django $ python3 >>import django >>django.VERSION >>(2.0.1) 가상환경을 프로젝트 폴더에 적용 pyenv 를 이용하여 가상환경을 적용해 줄겁니다. pyenv-installer 를 이용해서 설치하면 다른 플러그인도 같이 설치 됩니다. $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash $ pyenv update # 현재 사용하고 있는 버전들 $ pyenv versions * system (set by /Users/Edwardson/.pyenv/version) 3.6.5 $ pyenv virtualenv 3.6.5 myenv $ pyenv versions * system (set by /Users/Edwardson/.pyenv/version) 3.6.5 3.6.5/envs/myenv myenv $ mkdir project # project 폴더로 이동후 $ pyenv local project (myenv)$ python3 --version Python 3.6.5 (myenv)$ pip --version pip 9.0.3 from /Users/Edwardson/.pyenv/versions/3.6.5/envs/myenv/lib/python3.6/site-packages (python 3.6) # 버전이 너무 낮아서 업글 해줘야댐 (myenv)$ pip install --upgrade pip (myenv)$ pip install Django django project 생성 (myenv)$ django-admin startproject project . └── project ├── project │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── settings.cpython-36.pyc │ │ ├── urls.cpython-36.pyc │ │ └── wsgi.cpython-36.pyc │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── db.sqlite3 └── manage.py # 프로젝트 폴더 명도 project 이고 그안에 시작 폴더 이름도 project가 되버린다. # 때문에 프로젝트 폴더 안의 project를 config로 바꿀것이다. # 하지만 폴더 명을 바꿔 버리면 영향을 미치는 파일들이 있는데 # manage.py wsgi.py settings.py 이 세개의 파일이다. # 들어가서 project로 되어있는 부분들을 전부 config로 바꾸자 . └── project ├── config │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── settings.cpython-36.pyc │ │ ├── urls.cpython-36.pyc │ │ └── wsgi.cpython-36.pyc │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── db.sqlite3 └── manage.py # 아마 이렇게 되어있을것이다. 실습-1 django 시작부터 글 모델 데이터 베이스 생성