Ansible

Vagrant와 Ansible로 윈도우 노드 구성 및 관리

Joon0464 2021. 7. 18. 15:04

https://www.inflearn.com/course/ansible-%EC%9D%91%EC%9A%A9/dashboard

 

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의

센트OS 이외에 얼마나 다양한 시스템에 엔서블이 사용될 수 있는지 배워봅시다. 앤서블을 리눅스 이외에 윈도우 및 네트워크 시스템과 같은 여러가지 시스템에 대해서 다양한 목적으로 사용하

www.inflearn.com

윈도우 노드 패키지 설치 방법

Chocolatey란?

윈도우에서 사용가능한 리눅스의 yum이나 apt와 같은 역할을 하는 명령어 기반의 패키지 관리자

윈도우용 nginx는 실행파일 즉 바이너리 파일로 설치가 제공되기 때문에 Chocolatey로 설치가 불가능하지만 NSSM을 Chocolatey로 설치하여 NSSM을 통해 바이너리 파일을 윈도우 서비스에 등록할 것이다.

 

NSSM(Non-Sucking Server Manage)

바로 실행되는 바이너리 파일을 윈도우 서비스에 등록하여 서비스 레벨로 관리를 도와주는 프로그램

nginx.org에서 윈도우용 nginx 설치 파일을 받을 수 있다.
다운 받은 파일을 압축 풀었을 때 폴더의 구조이다.

nginx.exe 파일이 nginx 서비스를 실행하게 해준다. 이 파일이 NSSM을 통해서 윈도우 서비스에 등록되는 것이다.

이러한 과정을 플레이북에 작성하여 nginx를 윈도우 노드에 구성할 것이다.

 

윈도우 노드에 Nginx 서버 구성

- name: Install nginx on windows
  hosts: Win
  gather_facts: no

  tasks:
    - name: Download nginx
      win_get_url:
        url: http://nginx.org/download/nginx-1.12.1.zip
        dest: C:\tmp\nginx-1.12.1.zip
    - name: Create directory
      win_file:
        path: C:\nginx
        state: directory
    - name: Unzip nginx
      win_unzip:
        src: C:\tmp\nginx-1.12.1.zip
        dest: C:\nginx
    - name: Install NSSM
      win_chocolatey:
        name: nssm
    - name: Download new index.html
      win_get_url:
        url: https://www.nginx.com
        dest: C:\nginx\nginx-1.12.1\html\index.html
    - name: Restart nginx service
      win_nssm:
        name: nginx
        application: C:\nginx\nginx-1.12.1\nginx.exe
        state: restarted

기존의 nginx_install.yml 파일에 위 내용을 추가한다.

win_get_url 모듈을 사용하여 nginx 바이너리 압축 파일을 다운로드 받는다.

win_file 모듈로 nginx 바이너리 압축을 해제할 디렉토리를 생성한다.

win_unzip 모듈로  바이너리 압축을 해제한다.

win_chocolatey를 사용하여 NSSM을 설치한다.

win_get_url을 사용하여 메인페이지로 사용할 index.html을 다운받는다.

win_nssm을 사용하여 nginx.exe를 서비스로 등록하여 재시작해준다.

# anp nginx_install.yml

window 노드에 nginx를 설치해준다.

192.168.1.15로 접속을 테스트해본다.

 

윈도우 노드 timezone 변경하기

tzutil /l | find "Korea" 명령어로 한국의 시간대 이름을 찾을 수 있다.

- name: Setup windows  timezone
  hosts: Win
  gather_facts: no

  tasks:
    - name: set timezone to 'Korea Standard Time'
      win_timezone:
        timezone: Korea Standard Time

한국의 시간대 이름으로 설정하기 위한 yml 코드를 기존의 timezone.yml 파일에 추가한다.

윈도우의 변경된 시간을 확인하기 위해 virtual box에서 Node05에 대해 보이기를 클릭한다.

시간이 위와 같이 변경된 것을 볼 수 있다.

 

윈도우 노드에 NFS 클라이언트 설치하기

GUI로 NFS 클라이언트 설치하는 법 살펴보기

제어판에서 Programs를 클릭한다.
추가 기능을 켜고 끌수 있는 설정으로 들어간다.
다음 창에서 Features 탭이 나올 때까지 Next를 누른 뒤 Client for NFS를 체크하고 설치를 진행하면 된다.

위와 같이 설치하면 cmd창에서 mount 명령어를 리눅스와 동일하게 사용이 가능해진다.

 

nfs.yml 파일 수정하기

- name: Setup for nfs windows clients
  hosts: Win
  gather_facts: no
  
  tasks:
    - name: mount feature on
      win_feature:
        name: NFS-Client
        state: present
    
    - name: mount nfs_shared
      win_command: net use "z:" "\\192.168.1.10/home/vagrant/nfs_shared"
      
    - name: windows reboot
      win_reboot:

win_feature 모듈을 사용하여 NFS-Clinet 기능을 추가한다.

win_command 모듈에서 net use를 사용하면 영구적으로 nfs_shared 디렉토리와 영구적으로 마운트 시킬 수 있다.

mount 명령어는 일회성 마운트로 재부팅하면 마운트가 풀리게 된다.

윈도우에서 net use를 사용하면 알 수 없는 원인에 의해서 정상적으로 마운트 되지 않기 때문에 win_reboot을 통해 시스템을 재부팅하여 해결한다.

# anp nfs.yml -k

플레이북 작성을 마치면 위 명령어로 플레이북 구성을 시작한다.

구성을 마치고 윈도우 노드에 접속하여 확인해보면 Z 볼룸에 nfs_shared가 마운트된 것을 볼 수 있다.