IaC [infrastructure as Code](ansible ,terraform 등)
인터페이스의 구성 정보를 코드(스크립트)를 통해 관리하는 방법, 코드로 원하는 환경을 구축 하는 것입니다.
- 콘솔로 설정하는 부분들을 실행 단계에 따라 코드로 관리하면 자동화 할 수 있다.
- 기타 물리 장비와 가상머신 관련 구성 리소스를 관리하기 편하다.
- 스크립트 형태이기 때문에 버전 관리가 용이하다
Ansible : 구성 관리 도구, 구축 된 인프라의 구성 정보를 관리 [장점: agent가 필요하지 않다. python 이 깔려있다면]
Terraform : 인프라 구축 단계에서 구축 정보 관리 할 수 있고 DSL을 따로 알아야 합니다.
그 외 Puppet, Chef, Salt 등이 있습니다.
Ansible
대상 서버에 원하는 프로그램을 다운받고 설치, 파일 복사, 시스템 제어가 가능합니다.
aws 호환, window 호환 / 관리 대상 서버 node 1.2.3...의 운영체제가 각기 다른 os 여도 제약이 없습니다(파이썬과 ssh 만 있다면).
response 결과 값은 ok/failed/changed/unreachable 4가지로 받게 됩니다.
서버에 Ansible 설치하기
ansible 설치를 하고 나면 ansible 명령어를 사용할 수 있게 됩니다.
기본 설치
# sudo apt -y update
# sudo apt -y upgrade
# sudo apt -y install ansible sshpass
설정 파일 경로 /etc/ansible/ansible.cfg
접속 호스트 목록에 그룹이름과 ip 지정은 /etc/ansible/hosts
host 서버 등록
/etc/ansible/hosts 에 ansible이 관리할 host 서버 정보를 등록합니다.
playbook 실행으로 host서버에 요청을 날릴 때 마다 ssh 접속 비밀번호를 작성할 수는 없으니까요, ssh 설정을 해줘서, 그 과정을 생략합니다.
SSH
아래 과정을 등록한 모든 ip에 해줍니다.
- SSH 키 생성 ( public 과 private key들 생성)
- $ssh-keygen
- $ssh-copy-id {계정명}@[접속할 서버 IP]
- public key 를 원격 호스트에 ssh-copy-id 사용하여 복사
다음으로 다 연결이 되었는지 테스트 합니다.
$ ansible {모듈(그룹)명} -m ping
잘 연결 됐습니다.