-
[Ansible] VMware 프로비저닝 (VMtools 설치 및 초기 설정)오픈소스 2021. 7. 22. 10:32
개요
좀 많이 늦긴 했지만.. 지난 포스팅에 이어서 Ansible을 활용하여 VMware 프로비저닝하는 주제를 마무리 하려고 한다. 바로 시작해보자.
VMTools 설치하기
우선 VMTools에 대해서 알아보자. docs.vmware.com에서 발췌한 내용에 따르면 '게스트 운영 체제에 대한 더 나은 관리 및 원활한 사용자 상호 작용을 위해 VMware 제품의 일부 기능을 사용하도록 설정하는 서비스 및 모듈 집합' 이라고 되어 있다. 간단하게 말하면 Guest VM을 보다 효율적으로 사용할 수 있도록 해주는 기능을 제공한다는 것이며 우리가 필요한 기능은 '호스트 운영 체제에서 게스트 운영 체제로 메시지를 전달합니다.' 이다.
즉, 뒤에서 언급할 Hostname/IP를 변경하기 위하여 필자는 OS 자체 명령어를 사용하는데 이를 Guest VM에 전달해주는 역할을 VMTools가 수행하는 것이며, 동작 과정은 간단한데 각 단계별 수행 개체가 다르다.
VMTools 설치 ISO 마운트(Ansible) → ISO 인식 후, 설치 명령어 수행(Win ISO) → 완료/재부팅(Ansible)
첫번째로 VMware 생성 시, VMTools 설치 ISO를 마운트하는 Playbook이다.
cdrom: - controller_type: ide controller_number: 0 unit_number: 1 state: present type: iso iso_path: "[BAT_Datastore01]/vmtools_windows.iso"
두번째는 ISO가 인식되었을 때, Win ISO에서 설치하라는 명령이다. 보통 VMTools를 GUI 환경에서 많이 설치할텐데 아래 스크립트에서 첫번째와 두번째 명령어를 사용하면 CLI 명령어 기반으로 설치가 가능하다. 간혹 CDROM이 E:\로 잡히는 경우도 있었기에 두줄로 작성했다.
설치가 완료되면 마지막 단계인 재부팅은 자동으로 수행되기에 별도로 작업할 필요는 없고, Playbook에 아래 구문을 추가해서 설치 및 스크립트 수행을 기다린 후에 다음 단계로 넘어간다.
- name: Wait VMtools vmware_guest_tools_wait: validate_certs: False hostname: "{{ vCenter_IP }}" username: "{{ vCenter_ID }}" password: "{{ vCenter_PW }}" folder: / name: "{{ Guest_Hostname }}" - name: Wait OS Script Finish pause: minutes: 1
Hostname/IP 변경하기
마지막 단계로 어느 서버나 수행하는 Hostname/IP 값 변경하기를 수행한다. VMTools가 설치되었다면 이는 Playbook에서 간단하게 수행이 가능하다. 동일한 형식의 수행하는 명령어만 차이가 있다.
- name: Change IP By VM_Shell local_action: module: vmware_vm_shell validate_certs: False hostname: "{{ vCenter_IP }}" username: "{{ vCenter_ID }}" password: "{{ vCenter_PW }}" datacenter: DataCenter vm_id: "{{ Guest_Hostname }}" vm_username: Administrator vm_password: init123!! vm_shell: 'C:\windows\system32\netsh.exe' vm_shell_args: ' interface ip set address name=Ethernet0 static "{{ Guest_IP }}" "{{ Guest_SM }}" "{{ Guest_GW }}"' - name: Change Hostname By VM_Shell local_action: module: vmware_vm_shell validate_certs: False hostname: "{{ vCenter_IP }}" username: "{{ vCenter_ID }}" password: "{{ vCenter_PW }}" datacenter: DataCenter vm_id: "{{ Guest_Hostname }}" vm_username: Administrator vm_password: init123!! vm_shell: 'C:\windows\system32\windowspowershell\v1.0\powershell.exe' vm_shell_args: 'Rename-Computer -NewName "{{ Guest_Hostname }}" -Restart'
vm_shell과 vm_shell_args 라는 값을 이용해서 OS에 명령어를 날리는 방식을 취하며 {{ Guest_Hostname }}와 같은 변수들을 쌍따옴표(")로 감싼 이유는 띄어쓰기나 여러 문자들로 인하여 잘 적용되지 않은 경우가 있기 때문에 위와 같은 방식을 취했다. 여기까지 수행하면 내가 원하는 이미지로 VMTools가 설치되어 Hostname/IP까지 자동으로 변경된 VMware가 생성된 것을 볼 수 있을 것이다.
마무리
본 글까지 해서 #5까지의 내용을 모두 다루었다. 다른 사람들의 Playbook을 보면 간단하게 VMTools를 설치하던데.. 뭘 놓친것인지 필자는 정상적으로 수행되지 않아서 약간의 우회법을 사용해서 설치하게 되었지만 결과적으로 확실하게 동작하므로 똑같은 문제를 겪고 있다면 위 방법으로 수행해보길 바란다.
궁금하신 내용은 댓글로 남겨주시고, 많은 블로그 방문은 저에게 큰 힘이 됩니다. ・ᴥ・
'오픈소스' 카테고리의 다른 글
[Ansible] WinSVR 업데이트 Playbook 고도화 (V2) (0) 2022.07.18 [Ansible] Window Server 2019 업데이트 자동화 (5) 2022.03.29 [Ansible] VMware 프로비저닝 자동화 (0) 2021.03.31 [Ansible] Window Server 업데이트 자동화 (0) 2021.03.03 [VisualSyslog] WINDOW에서 syslog 수집을 위한 오픈소스 (0) 2020.09.22