본문 바로가기

VMware

[VMware] [1] vRealize Automation OS세팅

1. OS 세팅 

  • Ubuntu 20.04로  마스터 이미지 (server) 

$ sudo passwd
$ userdel ubuntu

# OS 표준화를 하는 동안만 네트워크 사용함
/etc/netplan/01-xxx.yaml 에서 IP 세팅
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
      addresses:
        - 10.20.4.11/24
      gateway4: 10.20.4.1
      nameservers:
        addresses:
          - 8.8.8.8

$ netplan apply 
$ ifconfig
$ apt update && apt upgrade -y
$ apt install -y net-tools



# ssh root Login 허용시키기 고객사별 다를수 있음

$ vi /etc/ssh/sshd_config
$ PermitRootLogin yes


처음에는 ssh 관련해서는 Root 로그인만 풀어놓고 작업
후에 os 최적화에서 다시 세팅할거임
현재까지 작업 진행사항
  • 사용자계정은 지운다 
  • 루트 권한 ssh 열어준다
  • 네트워크와 nameserver 8.8.8.8 사용해서 세팅하고 다시 끊어줄것이다.

 


2. VMtools 설치 , Cloud-init 설치


🆘 vmtools 란?

VMware Tools는 게스트 운영 체제에 대한 더 나은 관리 및 원활한 사용자 상호 작용을 위해
VMware 제품의 일부 기능을 사용하도록 설정하는 서비스 및 모듈 집합입니다.
VM을 생성하고 전원을 올리면 VMware Tools가 설치되어 있지 않다는 주의 표시가 뜬다.

필수로 쓰는 기능들 여러가지를 제공한다.

$ 가상 머신 Guest OS 종료/재부팅 작업
$ VM IP, DNS 등의 정보 GUI 표기
$ 호스트와 게스트 시간 동기화
$ 정지 상태 스냅샷 생성

 

🆘 cloud-init 란?

Cloud-Init은 호스트 이름, 네트워크 인터페이스, 그리고 인증키를 설정하는 것과 같은 
가상 머신 초기 설정을 자동화하는 도구입니다. 
이 도구를 사용하면 템플릿을 바탕으로 배포된 가상 머신에 대한 프로비저닝을 할 때 IP 등도 
세팅 할수 있는데, VMware는 IPAM이 따로 있어서 
cloud-init에서 일부 config에 네트워크 세팅 부분을 주석처리 해주고 사용한다.
  • vmtools 센터에서 UI 클릭하면 마운트됨 
  • 마운트 위치 확인하고 tmp 로 옮김
  • 설치 
$ echo "check vmware tools disconnection in vcenter"
$ echo "and execute installing vmware tools in guest operation menu"
$ echo -n "press enter to next: "; read _KEY
$ mount /dev/cdrom /mnt
$ cp /mnt/VMwareTools-* /tmp/vmtools.tar.gz
$ cd /tmp && tar -xzvf vmtools.tar.gz
$ /tmp/vmware-tools-distrib/vmware-install.pl
$ cd ~

 

3. cloud-init = 부팅 시 config 함 
    

  •  IPAM 으로 세팅할경우 (cloud-init disabled 걸어줘야함) 
sed -i 's/disable_root: true/disable_root: false/g' /etc/cloud/cloud.cfg
sed -i 's/preserve_hostname: false/preserve_hostname: true/g' /etc/cloud/cloud.cfg
sed -i '/   package_mirrors:/,/   ssh_svcname: ssh/d' /etc/cloud/cloud.cfg
cat <<EOF>> /etc/cloud/cloud.cfg
   package_mirrors:
     - arches: [i386, amd64]
       failsafe:
         primary: $REPO/ubuntu
         security: $REPO/ubuntu
       search:
         primary:
           - $REPO/ubuntu/
         security:
           - $REPO/ubuntu/
   ssh_svcname: ssh
EOF
echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99_network_disabled.cfg
  • 클라우드 이닛으로 네트워크 설정할경우 (OS별 굉장한 의존성에 대한 troubleShooting 필요) 권장하지 않음

 

 

 

 

 



4. OS 최적화 시스템설정 ( 여기서부터는 죄다 optional한 부분)

 

 대기시간 줄이기, 불필요 서비스 disabled 등 고객사마다 요청사항이 조금 상이하다.

  • 스냅삭제 : 현재 서비스에 대한 무결성 체크 / 성능에 영향 미침
  • 스왑 disable ( 스왑 파일 시스템, 디스크 io를 늘려서 오버커밋팅 남. )
  • 불필요 데몬 삭제
    •  cloud-init 찌꺼기 제거 (우분투는 자동으로 깔려있음)
      ufw 방화벽 off
      open-vm-tools (권장안함) 
  • GRUB ( 부트로더 : 커널 적재 시켜주는 것 )
    • 우분투 서버 이미지는 기본 0 / desktop 0초 
    • redhat, Centos 5초 /10초로 되어있음

# cd /etc/defaults


# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet noresume"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
~

부팅 전에 "no resume" 옵션을 설정하여 인텔 그래픽 기능을 비활성화

  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 이부분 "quiet no resume" 으로 변경
$ swapoff -v /<PATH>/swapfile

# 예시
$ swapoff -v /data1/swapfile

$ rm /data1/swapfile
  • 데몬 서비스 실패 시 90초 대기 옵션이 default로 되어있음 : 10초로 변경
vim /etc/systemd/system.conf

다 주석처리 되있으면 default로 적용됨

#DefaultTimeoutStartSec

#DefaultTimeoutStopSec

#DefaultTimeoutReStartSec
  •  UTC 시간 -> KST 시간
  • DNS / NTP : DNS는 보통 cloud init 이 설정함   
    • vMotion 자주되는 가상환경에서는 NTP 동기화를 esxi 호스트시간에 맞춤
    • 어플리케이션이 중요한 환경일 경우는 NTP 동기화를 NTP 서버에 맞춤
  • sshd_config
$ vi /etc/ssh/sshd_config
$ PermitRootLogin yes
$ ClientAliveInterval 300 ssh세션 끊기는 타임아웃을 5분까지 늘려줌
$ ClientAliveCountMax 12 12번까지는 체크 허용하겠다.
$ StrictHostKeyChecking no ( 불필요함 )
$ UserKnownsHostsFile /dev/null ( ssh 접속 시 unknown ip 저장 후에 아이피 변동시 지워줘야 함 )

 

 





5. 네트워크 인터페이스 지워주기 
- 템플릿을 말기전에 인터페이스와 ip를 제거한 후에 말아야함

* ip는 반드시 제거해야함.

* 나는 스크립트 하나 짜서 service로 등록해서 쓰긴함

# Remove Ubuntu Network Files
rm -rf /etc/network/interfaces
rm -rf /etc/netplan/*
# Remove CentOS Network FIles
rm -rf /etc/sysconfig/network-scripts/ifcfg-*
# Remove Cloud init Data
rm -rf /var/lib/cloud/*
# General Clearing

 

 

혹시나 참고사항 


# EFI vs GRUB
오래된 장비를 사용하는 고객사에서 
EFI가 아니라 일반 GRUB을 쓸수도 있음
❌확인해보고 EFI 파티션을 구성하고 OS 설치할수 있도록



# 우분투 서버 버전 이미지 작업/ desktop 버전 이미지 작업 조금 다름
❌server 버전에선 netplan / ifconfig의 차이에 대해서 어차피 신경안써도된다 (IPAM이 해서)
❌desktop 버전에선 NetworkManager라는 서비스가 네트워크를 관리 하기 때문에 제거해야 한다.

# apt-get remove network-manager


 

 

 

 

# Vrealize Automation의 어려운점

 

1. 레포 없을때 binary 받아서 설치 : 비추천

2. 처음 infrastructor과 profile 등록하는게 생각보다 어려움 

3. OS 세팅부분 고객사마다 너무 다름

•커널파라미터, OS config, 의존성 패키지들

•Application, 미들웨어, 업무 및 운영 관련 S/W에서 필요로 하는 Pre-Install 패키지 목록 조사 및 설치

•JDK, X-윈도, gcc., ksh, rsh, make ... 등

•내/외장 스토리지 할당 및 파일시스템 생성

•용량, Owner, 권한 정의

•Mount Point 정의 및 fstab 등록

4. NSX 리소스 사용방법

  - Tier 0 게이트웨이는 자동 생성 하지 못함

 

 

 

# 문의사항

 

 

1. 바이너리설치 -  현실적으로 불가능

부담은 되지만 , 레포를 만드는게 무조건 낫다 장애요소가 많이 있지 않고, 일반적으로 우분투 250GB \

레드헷은 좀 더 큼

2. 오케스트레이터와 커스텀 스크립트 
 유명 CSP 마냥 (AWS처럼) vRA를 쓰려면 오케스트레이터와,  커스텀 리소스를 사용할줄 알아야 한다.

동적 input값 구성이 가능하다. 

3. 커스텀 리소스 잘 활용하면 

간단한 API들 구성해서 AWS SDK 같은거 활용하면 왠만한 public cloud도 다 컨트롤 가능하다.

하지만 개발이 너무 많이 들어감 ..