Virtualization & Cloud Infra/Virtualization(VMware)

서버 가상화(Server Virtualization) - Ansible 실습 : SSH 연결, vCenter Server VM 관리

TwoJun 2024. 10. 18. 16:07

2024-10-17(THU)

 

 

 

 

 

1. Windows Server Command - For Ansible Script

 

 

 

 

1-1. Windows Server 2022 powershell ISE 실행

(1) ISE 실행 시 작업 관리자로 실행

 

 

(2) 위의 Ansible Script를 작성한다.

 

 

 

(3) 각 커맨드 라인에서 상단에 표시한 Running Selection을 누르면 한 줄씩 스크립트를 실행할 수 있다.

 

 

(4) sshd 서비스를 start-sevice로 Running 모드로 변경한다.

 

 

 

 

1-2. Windows 10에서 Rocky Linux로 원격 접속 가능한지 Visual Studio에서 확인

(1) 위와 같이 접속 가능하다면 작업 가능한 상태다.

 

 

 

 

 

 

 

2. Ansible LAB(Rocky Linux >> Windows Server SSH Connection

2-1. ansible.cfg 파일 작성

 

 

 

 

2-2. inventory 파일 작성

 

 

 

 

2-3. Rocky에 접속 : ansible-work 디렉터리에 생성한 파일 존재 확인

(1) 생성한 두 파일이 확인된다.

 

 

(2) known_hosts 파일에 접속하면 SSH 호스트에 대한 접속 정보가 확인된다.

 

 

(3) 해당 파일의 내용을 nano 에디터를 열어 모두 지운다.

 

 

(4) 위와 같이 Windows 서버에 접속을 시도해본다. 접속 성공 시 known_hosts 파일에 접속 정보가 남게 된다.

 

 

 

 

2-4. win_ssh.yml 파일 작성

(1) win_ssh.yml 파일까지 작성한다.

 

 

(2) win_ssh.yml 파일을 실행하기 전 Rocky Linux의 /etc에서 nano hosts 명령어로 에디터를 열어서 윈도우 서버 접속 정보를 적어둔다.

 

 

 

 

2-5. win_ssh.yml 파일 실행 

(1) ansible-playbook win_ssh.yml 커맨드로 해당 yml 파일을 실행시킨다.

 

(2) 성공하면 위와 같이 출력결과가 나타난다.

 

(3) 지금까지 리눅스 서버에서 윈도우 서버로 SSH를 통해 접속하는 과정을 정리했다.

 

 

 

 

 

 

3. Windows Server에서 Apache 서비스 설치

3-1. win.apache.yml

 

 

 

 

3-2. 변수 수정 후 (win2022 → winserver) inventory

 

 

 

 

3-3. 실행 결과

(1) 접속은 가능하나 네트워크의 속도가 느려서 Apache 서비스를 설치하려고 하지만 Timeout이 나게 된다.

 

(2) Windows Server, Windows10, Rocky Linux를 모두 VM-Network의 주소 대역으로 변경한 후 진행해 볼 수 있다.

 

 

 

 

 

 

4. VMware vCenter Server 관리

(1) pip pinstall pyvmoi pyvim 커맨드 수행

 

 

(2) 가상화 환경에 대한 경고 메시지가 나타난다.

 

 

(3) 루트 디렉터리를 기준으로 ansible-vmware라는 새로운 디렉터리를 생성한다.

 

 

(4) 방금 생성한 디렉터리로 Windows 10 VS Code 에서 원격 접속을 통해 변경한다.

 

 

 

 

4-1. 파일 생성 : inventory

 

 

 

 

4-2. ansible.cfg

 

 

 

 

4-3. requirements.yml

(1) ansible-galaxy install -r requirements.yml

 

(2) 해당 명령어는 Ansible Galaxy에서 역할(role)을 설치하기 위해 사용된다. -r 옵션으로 요구사항을 명시할 수 있으며 설치할 역할의 이름 버전 등의 정보를 포함한다.

 

 

 

 

4-4. vars.yml

 

 

 

 

4-5. vm_info.yml

(1) nano /etc/ansible/hosts 명령으로 에디터에 접속한다.

 

 

(2) vCenter Server에 대한 자동화를 위해 vCenter 서버의 주소 대역을 추가한다.

 

 

(3) 가상 시스템의 정보를 출력하기 위한 vm_info.yml 스크립트를 작성한다.

 

 

 (4) 모든 .yml 구성을 완료하고 ansible-playbook vm_info.yml 커맨드를 수행해서 위와 같이 특정 가상 시스템에 대한 모든 정보를 불러오면 된다.

 

 

 

 

4-6. 스크립트를 사용해서 VM 종료 : vm_stop.yml

(1) 스크립트 실행 이전 esxi-03 호스트의 VM은 전원이 켜져 있다.

 

 

(2) 위와 같이 VM의 전원 종료를 위한 스크립트인 vm_stop.yml을 작성한다.

 

(3) 또한 vmware_guest_powerstate 키값의 경우 내부에 datacenter를 사용하는 것을 더 이상 지원하지 않는고 한다. 따라서 guest shutdown 작업은 오류가 나며 수행되지 않는다. ignore_errors 키로 인해서 오류가 나더라도 작업이 멈추지 않고 다음 스크립트로 넘어가게 된다.

 

(4) 따라서 poweroff 작업의 경우 datacenter가 없기 때문에 작업이 정상적으로 수행된다.

 

(5) state: shutdown-guest의 경우 가상 시스템의 운영체제를 통해 시스템을 종료하고 state: powered-off는 가상 시스템의 물리적인 전원 버튼을 통해 시스템을 종료한다.

 

 

(3) ansible-playbook vm_stop.yml 커맨드를 수행하면 위와 같이 작업이 수행된다.

 

 

(4) vCenter Client에 접속해 보면 전원이 종료된 것을 확인할 수 있다.

 

 

 

 

4-7. VM 전원 시작 : vm_start.yml 

(1) 이전 작업으로 인해 VM의 전원이 종료된 상태다.

 

 

(2) 위에서 설명한 것처럼 vmware_guest_powerstate 키를 사용하므로 datacenter 라인을 주석 처리했다. 오류도 발생하지 않을 것이므로 ignore_errors 키도 주석 처리한다.

 

 

(3) 오류가 발생하지 않고 시스템이 정상적으로 켜지는 것을 확인할 수 있다.

 

 

(4) 선택한 가상 시스템의 전원이 켜졌다.

 

 

 

 

4-8. VM Snapshot Creation : snapshot_create.yml

(1) 위와 같이 가상 머신의 스냅샷 생성을 위한 snapshot_create.yml 스크립트 파일을 생성한다.

 

(2) vmware_guest_snapshot : 가상 시스템의 스냅샷 생성

 

(3) snapshot_name은 관리자가 자유롭게 설정, folder는 스냅샷이 생성되는 가상 시스템을 탐색하기 위한 경로를 적는다.

 

(4) state: present / absent (스냅샷 생성 / 삭제)

 

 

(5) 스크립트를 실행시키면 스냅샷이 생성된 것을 확인할 수 있다.

 

 

 

 

4-9. VM Snapshot Delete: snapshot_delete.yml

(1) 삭제 시 snapshot_name에 삭제할 스냅샷의 이름을 직접 명시한다. 만약 존재하지 않는 스냅샷이라면 삭제되지 않는다. 

 

 

(2) 위와 같이 실제로 changed 값에 변화(0이 아닌 값)가 있어야 스냅샷이 삭제된 것이고 changed = 0이라면 작성한 스크립트상으로는 구문 오류가 없어서 작업이 수행된 것처럼 보이지만 실제로 삭제되지는 않은 상태다. 즉, 관리자가 의도한 작업이 실제로 수행되지 않은 것이다.

 

 

(3) 위와 같이 명시한 스냅샷이 삭제된 것을 확인할 수 있다.

 

 

 

 

4-10. VM Creation : create_vm.yml

(1) 가상 머신을 생성하기 위해 create.vm.yml 파일을 위와 같이 작성한다.

 

(2) 현재 특정 클러스터가 아닌 호스트 내부에 생성했다.

 

(3) 또한 부팅 디스크 인식을 위한 cdrom, type, iso_path(로컬 스토리지 내부 Windows 10), controller_number, unit_number를 사용했다.

 

 

(4) 스크립트를 실행하면 changed 값이 1이므로 가상 시스템이 생성된 것을 예측해 볼 수 있다.

 

 

(5) 스크립트에서 지정한 name: esxi-03-win10(2) 이름 그대로 가상 시스템이 생성되어 윈도우 이미지로 부팅되는 것을 확인할 수 있다.

 

 

(6) 가상 시스템에 접속해 보면 Windows 설치 관리자가 확인된다.

 

 

 

 

 

 

- Ansible을 이용한 VMware 환경 자동화 Reference(공식 문서)

https://docs.ansible.com/ansible/latest/collections/community/vmware/index.html

 

Community.Vmware — Ansible Community Documentation

© Copyright Ansible project contributors. Last updated on Oct 08, 2024.

docs.ansible.com

 

 

※ 해당 포스팅을 기준으로 내용 추가가 필요하다고 생각되면 기존 내용에 다른 내용이 추가될 수 있습니다.

개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있으며, 이에 대해 댓글로 알려주시면 감사하겠습니다!