3화에서 본 그림을 생각해봅시다. 

 

음... 이거 처음 구축환경이 쉽지 않겠는데? 

 

그래도 존버는 승리합니다. 

 

일단 환경을 구축해보죠. 

첫번째로 앤서블 노드가 필요하겠네요? 

 

앤서블 서버를 만든담엔 그 대상이 될 다른 노드도 필요하게 될 겁니다. 

 

한.. 4개(앤서블 노드 1개 + 배포 대상 노드 3개)의 리눅스 노드를 만들어서 시작을 해봅시다. 

 

저는 윈도우 PC를 사용하고 있고 RAM이 꽤 넉넉합니다. 

 

그래서 여러개의 가상 PC를 제 PC에서 돌릴꺼예요. 

 

사용하는 도구로는 VMware Workstation Pro를 사용해볼께요.

 

이건 여담인데, Player를 안쓰고 

 Pro를 사용하는 이유는 여러 개의 가상환경을 복제해서 빨리 환경을 구축하기 위함입니다.

 

그냥 그렇다구요. ㅎㅎ

 

그러는 어느새 첫번째 앤서블용 노드가 만들어졌습니다. 

그리고 이렇게 야무지게 Full Clone으로 나머지 배포대상 노드 3대도 만들어 주었지요. 

 

자 이제 환경은 준비가 되었습니다. 그럼 각 환경의 IP 정보를 확인해보죠. 

 

아래 처럼 구성이 되었네요. 

 

앤서블 노드 : 192.168.70.128 

배포 노드 : 192.168.70.129 192.168.70.130 192.168.70.131

 

이런 구성을 확인하는 거 마저 귀찮았습니다. 

 

아래처럼 ifconfig 를 모두 설치해줘야 했거든요. 

 

이런식으로 3대의 노드에 깔려있는지 확인하고 안깔려있으면 설치하는 작업은 매우 귀찮을 것입니다. 

 

자 그럼 다시 앤서블 노드로 들어가서 필요한 구성을 살펴보죠. 

 

 

https://www.9tut.com/ansible-tutorial

여기 또한번 다른 그림을 가져왔습니다. Playbook에 task를 정의하는 부분을 보려고 말이죠. 

 

Playbook을 통해서 task는 말 그대로 일감이 될텐데요. 위에 예시를 보자면 ifconfig를 사용하기 위해 net-tools를 설치하는 작업 또한 하나의 task가 될 수 있겠군요. 

 

그리고 실제 Playbook의 예시를 봐보죠. 

 

지금은 감만 잡아도 괜찮습니다. 뭔가 규칙이 있어보이네요?

 

그럼 한번 3대의 대상이 잘 살아있는지 먼저 문을 두드리러 가볼까요. 

 

 

# vi /etc/ansible/hosts

 

이 명령어로 hosts 파일을 수정해줍니다. 

대상을 지정하는 작업이죠. 

 

[clients]
192.168.70.129
192.168.70.130
192.168.70.131

 

이렇게 라인에 추가해주면 대상 지정은 끝입니다. 

 

그런담에 ping 명령어로 연결이 되었는지 확인해보는 거예요! 

 

 

왜일까요? 빨간색 화면을 보니 실패인가.. fail를 보니 실패가 분명합니다. 

 

좀 더 확인해 보죠. 

 

Failed to connect to the host via ssh: ssh: connect to host 192.168.70.129 port 22: Connection refused

 

이 구문을 구글링해보면 답이 다 나옵니다. 

 

# sudo apt-get install openssh-server

 

이걸 또 대상 서버마다 다 해주어야하는군요...! 

 

흠 빠르게 앤서블 설정을 마치고 설치파일을 쫙쫙 뿌려보죠. 

 

다음 난관이네요. 또 무슨 문제일까요. 아마도 계정이 문제일거 같은데... 일단 한번 구글링을 다시 해봅시다. 

 

hosts에 username과 password를 지정해줍니다. 

 

그런데 그다음에도 에러가 뜨네요.

 

 

ping : pong 이 뜨면 연결이 된 상태입니다. 오호.. 근데 맨 위에 있는 130번 노드가 문제네요. 

 

아래와 같이 구글링한 정보를 활용해서 False 설정을 한번 해보죠. 

 

이렇게 하니까 모든 연결이 완료되었습니다~! 

 

똑같은 핑테스트를 Play book을 통해서 날려볼까요? 

 

일단 이러한 .yml 형식의 파일을 한번 만들어보죠. 

 

$ ansible-playbook -i inventory ping_test.yml

 

그담에 명령어를 날리면 실행이 됩니다. 

 

 

위 명령어를 날리려면 inventory 디렉토리가 만들어져 있는 상태여야합니다.

mkdir 명령어로 디렉토리를 만들고 이전에 사용한 hosts 파일도 옮겨줍니다. 

 

그럼 동작을 제대로 할까요?

 

자 이제 첫번째 앤서블 동작을 마쳤습니다. 

 

여기서 playbook을 조금 더 수정하면 많은 동작이 가능해지겠죠? 

 

첫번째로 그럼 일반 txt 파일을 모든 대상 노드에 뿌려볼까요?

 

 

+ Recent posts