본문 바로가기

DevOps/Ansible

[A101] 1.Ansible 설치

cloudNet@ 팀의 가시다 님이 진행하는 앤서블 스터디 1주차 정리입니다.

 

  환경 구성

  • cloudformation을 통해 앤서블 서버와 test 서버 3대를 배포하여 실습 예정
  • 사전 준비 : AWS 계정, SSH 키 페어, VSCODE
  • 구성정보 확인 

  • 그림과 실제 배포 리소스의 IP 및 정보들은 관련 없습니다. 이해를 돕기 위한 그림일 뿐입니다.

https://world-hee.tistory.com/13 퍼왔습니다. 감사합니다.

  1. Cloud Formation 배포

  • Cloud Formation은 AWS의 리소스를 자동으로 배포해주는 툴
  • Ansible을 테스트 하기 위해서 기본적으로 ansible-server와 타겟 서버가 필요함. 물론 localhost에서 기본적인 앤서블 사용법은 숙지 할수 있음. 이번 스터디에선  AWS 환경에서 타겟서버를 3대 배포하여 테스트 합니다.
# AWS 콘솔 로그인 후 
# 다음 url에 접속하세요.
https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/new?stackName=mylab&templateURL=https:%2F%2Fs3.ap-northeast-2.amazonaws.com%2Fcloudformation.cloudneta.net%2FAnsible%2Fa101-1w.yaml
 

region : ap-northeast-1

az : ap-northeast-1a

az : ap-northeast-1c

Cloudformation URL을 브라우저 창에 입력하여 접속하면 다음과 같은 화면이 나옴
첫번째 페이지에서는 변경할것 없음, 다음을 클릭
1. 키페어 미리 생성 해둘것 2. 자기 공인 IP는 구글에 공인IP 출력 사이트 검색 3. 인스턴스 타입은 t3.medium 적당함 4. region , AZ 변경

 

 

  • Cloudformation 배포가 완료되면 EC2가 4대 생성될것임
  • Ansible Server EC2 SSH 접속 : 기본 정보 확인 ← 스택 생성 시작 후 3분 후 접속 할 것
# SSH 접속 : ubuntu 계정
ssh -i ~/.ssh/나의팸키.pem ubuntu@$(aws cloudformation describe-stacks --stack-name mylab --query 'Stacks[*].Outputs[0].OutputValue' --output text --region ap-northeast-2)
------------------------

# 계정 정보 확인
whoami
id

# CPU, Mem, Disk 확인
htop
free -h
df -hT /

# /etc/hosts 확인
cat /etc/hosts

# 노드간 통신 확인
for i in {1..3}; do ping -c 1 tnode$i; done

  2. VS CODE - remote _ssh 프로그램 설치 

  • 중략
  • 중략

  3. ansible 설치 

    •  앤서블 설치는 파이썬만 있으면 바로 설치가 가능합니다.
# 작업 기본 디렉터리 확인
whoami
pwd
/root/my-ansible

# 파이썬 버전 확인
python3 --version
Python 3.10.12

# 설치
apt install software-properties-common -y
add-apt-repository --yes --update ppa:ansible/ansible
apt install ansible -y

# 확인 : 책 버전(파이썬 3.11.2, jinja 진자 3.1.2)
ansible --version
ansible [core 2.15.8]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] (/usr/bin/python3)
  jinja version = 3.0.3
  libyaml = True

cat /etc/ansible/ansible.cfg
which ansible

# 책 저자 코드 확인
tree /root/my-ansible/Easy-Ansible/ -L 1
tree /root/my-ansible/Easy-Ansible/
  • 앤서블 서버와 타겟이 되는 노드들의 SSH 인증 구성
  • 먼저 ssh-keygen 명령어를 이용하여 SSH 키를 생성합니다.
# Create SSH Keypair
ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa

# 공개 키를 관리 노드에 복사
for i in {1..3}; do ssh-copy-id root@tnode$i; done

### 공개 키 복사가 안될경우
id_rsa.pub을 수동 복사해서 -> .ssh/authorized_keys에 일일히 복사해줄것.

# 복사 확인
for i in {1..3}; do echo ">> tnode$i <<"; ssh tnode$i cat ~/.ssh/authorized_keys; echo; done

 

 

여기까지 앤서블 설치를 완료했습니다. 다음시간부터는 앤서블의 인벤토리,플레이북,변수,Vault,Fact등 실습을 통해 앤서블을 좀더 알아봅시다!