만들어진 go(golang) 패키지에 go.mod(Modules) 추가하기 (1.15 이하 버전을 1.16이상 버전으로 컨버팅)

go(golang) 1.16 버전 이후, go.mod를 사용하도록 강제되었다.
이런 이유로 1.15 버전으로 만들어진 패키지를 실행하기 위해서 패키지를 설치하면 아래와 같은
오류가 잔뜩 발생한다.

 % go run read_config.go
read_config.go:4:5: no required module provides package gopkg.in/gcfg.v1: go.mod file not found in current directory or any parent directory; see 'go help modules'

 

그렇다고 필요 패키지를 설치하려면 오류가 발생해서 workaround로 아래 설정해주려니 잠시는 되어도 호환성 문제가 발생한다.

ubuntu iso 부팅(grub)으로 OS 설치 시, 디스크 재구성 실패 해결하기

ubuntu의 ISO를 디스크에 저장해서 grub로 부팅해보면 ISO 파일이 위치한 디스크를 재구성이 불가능하게
비활성화가 된다.

이런 경우 설치 메뉴에서 console로 전환하여 아래와 같이 명령어를 실행해서 /iosdevice를 umount하면 ISO
파일이 위치한 디스크 재구성이 가능하다.

# umount -f -l /isodevice

 

만약 grub -> 디스크 -> ISO-> cloud-init로 시스템을 구성한다면 아래와 같이 "early-commands"를 통해서
umount를 구현할 수 있다.

간단한 방법으로 cloud-init(autoinstall)에 사용할 user-data 정보 구하기

ubuntu 설치 자동화(autoinstall)를 위한 user-data를 만들어 내려면 문법 하나만 잘못해서 오류가 많이 난다.
특히 스토리지 설정은 아주 까다로워서 단어 하나 숫자 계산하나만 틀려도 오류를 뿜어 내면서 재설치를 해야
하는 경우가 생긴다.

그런 이런 "user-data를 쉽게 뽑아낼 수 있는 방법은 없는 것인가?"에서 이것도 방법이 존재한다.
일단 ubuntu로 시스템에 OS를 설치한다.

그리고 "/var/log/installer/" 디렉토리가 생성되어 있는데 해당 디렉토리에는 설치 시, 사용한 설정 파일과
각종 로그가 저장되어 있다.

ubuntu에서 grub를 통한 ISO 부팅

ubuntu를 설치할 경우가 있다. 특히 처음 설치가 필요하거나 재설치가 필요한 경우에 간단하게 ISO 파일만으로
재설치해보고 싶은 경우도 있다. 이런 경우 iso를 다운 받아서 해당 iso를 grub와 적절히 설정해주면 부팅 시
설정된 ISO를 통해 부팅이 가능하다.

이런 경우 하드웨어 및 Linux에 대해서 좀 알 필요가 있는데, 일반적으로 아래와 같은 예제로 하면 된다.

 

디스크 구성 현황

/dev/nvme0n1          - OS 디스크
  - /dev/nvme0n1p1    - OS 설치 파티션

/dev/sda              - 데이터 저장
  - /dev/sda1         - GPT 파티션 (/data)

/dev/sda              - 데이터 저장
  - /dev/sdb1         - GPT 파티션 (/data1)

 

ubuntu 20.04 cloud-init을 통한 Custom ISO 설치 자동화 (autoinstall)

CentOS(Redhat)의 경우 kickstart가 강력하여 모든 설치가 kickstart를 통해서 가능하다.
ubuntu의 경우 설치 자동화를 구현하려면 preseed를 통한 자동화 또는 kickstart를 사용해야한다.
그러나 이 2가지에 큰 단점이 있는데 간단하게 정리하면 아래와 같다.

o. preseed 설치 방식
   ubuntu 설치 상에 보이는 gui의 실행을 정의해서 자동 설치를 구현한다.
   단점으로 installer software가 업데이트되거나, gui에 나오는 메뉴에 대한 정의를 하나하나 다 찾아야한다.

o. kickstart를 통한 설치 방식
  어느 정도 ubuntu에서는 kickstart를 지원한다. 그러나 어느 정도이지 CentOS 정도의 자세한 기능까지는
  지원하지 않아 제약사항이 너무 많다.