Ansible Role 을 이용한 노드 설치 자동화
관련 글
2023.10.17 - [✏️ Ansible] - Ansible Tower (AWX) 설치 방법
2022.10.06 - [✏️ Ansible] - Ansible Playbook
2023.10.18 - [✏️ Ansible] - Ansible Role 작성 방법
이전에 Ansible Tower 설치방법과 Playbook , Role 작성 방법에 대해 포스팅 했었다.
그럼 실제로 이런 내용을 정리하여 Node 설치를 자동화 하는 방법에 대해 작성하려고 한다. 매우 간단한 내용이며 Node 뿐 아니라 Tomcat 혹은 반복해서 하던 모든 일들을 자동화 할 수 있기 때문에 매우 편리한 툴이라고 생각한다.
동작 정리
먼저 Ansible 을 이용해 수행할 동작들을 정리해야 한다. 자동으로 수행할 내용이 어떤 것인지 사전에 먼저 작성해놓으면 롤을 만들 때 순서에 맞게 쉽게 만들 수 있기 때문이다.
먼저 설치할 노드 버전을 다운받는다. 여기서 자동으로 설치할 버전은 Node.18.17.1 이고 공식 문서에서 다운로드 받았다.
https://nodejs.org/ko/blog/release/v18.17.1
이전에 작성했던 roles 구조의 files 디렉토리에 해당 압축파일을 저장해놓고 롤북을 작성해주었다.
files 디렉토리는 role이 수행될 때 사용하는 파일을 저장하는 곳이다.
노드 설치의 과정은 간단하다.
1. 노드가 설치되어 있는지 확인
2. 설치되어 있지 않다면 files 의 노드 설치파일 압축해제
3. 압축해제 했다면 해제한 디렉토리의 이름 변경
4. node, npm 에 대한 symlink 생성
위와 같은 동작을 자동화 하고 멱등성을 유지할 수 있도록 role 을 작성하면 아래와 같다.
- name: Check node directory
stat: path=/usr/local/node18
register: dir_node
# Unzip the file and deliver it to the target server
- name: extract_node18
unarchive:
src: ../files/node-v18.17.1-linux-x64.tar.xz
dest: /usr/local/
remote_src: no
when: dir_node.stat.exists == false
# move dir
- name: move_node_directory
command: mv /usr/local/node-v18.17.1-linux-x64 /usr/local/node18
when: dir_node.stat.exists == false
# symbolic link
- name: create_symlink_node18
file:
src: /usr/local/node18/bin/node
dest: /usr/bin/node
state: link
# symbolic link
- name: create_symlink_npm
file:
src: /usr/local/node18/lib/node_modules/npm/bin/npm-cli.js
dest: /usr/bin/npm
state: link
dir_node 변수에 node18 경로가 있는지 확인한다. 즉 설치가 되어있는지 여부를 체크한 후 만약 설치되어 있지 않다면 files 에 저장해두었던 node 설치 파일의 압축을 해제한다. 그리고 node18 디렉토리로 변경해준다.
remote_src 옵션은 압축해제 할 파일이 원격 서버에 존재하는지 여부이며 기본 값은 no 이다. 만약 no라면 files 디렉토리에서 가져와서 수행하게 된다.
압축해제하고 디렉토리 명을 변경했다면 node 실행 파일과 npm 실행 파일을 /usr/bin 경로에 symlink 를 생성해준다.
이제 해당 원격 장비에 접속해서 node, npm 명령어를 수행하면 정상적으로 노드가 설치되고 사용이 가능함을 확인할 수 있다.
'⇥ DevOps Tech 🙋🏻♀️ > ✏️ Ansible' 카테고리의 다른 글
Ansible 자동 예약 변수 팩트 (56) | 2023.11.30 |
---|---|
Ansible 변수 사용 , 우선순위 정리 (61) | 2023.11.27 |
Ansible Role 작성 방법 (0) | 2023.10.18 |
Ansible Tower (AWX) 설치 방법 (0) | 2023.10.17 |
Ansible Playbook (0) | 2022.10.06 |
댓글
이 글 공유하기
다른 글
-
Ansible 자동 예약 변수 팩트
Ansible 자동 예약 변수 팩트
2023.11.30 -
Ansible 변수 사용 , 우선순위 정리
Ansible 변수 사용 , 우선순위 정리
2023.11.27 -
Ansible Role 작성 방법
Ansible Role 작성 방법
2023.10.18 -
Ansible Tower (AWX) 설치 방법
Ansible Tower (AWX) 설치 방법
2023.10.17