Cloud

온프라미스에서 테라폼 사용하기 본문

인프라관리-코드

온프라미스에서 테라폼 사용하기

Firewall 2024. 9. 25. 19:01


 테라폼을 온프라미스에서도 적용할 수 있는지 질문을 받았습니다.

 

하이퍼 바이저를 사용하지 않고 적용한다는 것은 별로 생각해 보지 않았고, 적용을 했을 때라도 자원을 논리적으로 프로비저닝 할 수 없으니, 그다지 효율적이지는 않아 보입니다. 그래도 안정성은 그대로 가져가면서, 자동화의 영역을 넓힐 수 있다면 안할 이유도 없어 보입니다.

 단 tf 파일이 삭제될때는 어떻게 동작될지도 확인이 필요합니다.(그리고 언제적 PXE 기술을 꺼내는 것인지.)

대략적인 구성을 생각해 본다면 

1. IPMI 는 IP 할당 완료 ID/PW 설정 완료
2. PXE 서버 설정 (DHCP,TFTP,HTTP,FTP)
3. 테라폼 세팅
4. Kickstart 파일 설정 (윈도우는 prep) ks.cfg

하이퍼바이저를 통하지 않고 IPMI 만 연결되어 있으면 테라폼이 타겟 서버에 PXE 세팅을 해서 PXE 부팅을 시키는 것
그 이후에는 기본적인 PXE 부팅 방법을 따름.

이것의 장점은 IPMI만 세팅이 되어 있으면 된다는 것.

코드는 아래에 기술하였습니다.

 

기존에 PXE 구축보다 타겟 서버의 PXE 설정이 자동화 되어 좀 더 간소화 되었습니다. 

추후 실제 테스트를 해보고 다시 문제점을 공유 하도록 하겠습니다.



3번 테라폼 tf 세팅

provider "ipmi" {
  host     = "IPMI_HOST"
  username = "IPMI_USERNAME"
  password = "IPMI_PASSWORD"
}

resource "ipmi_power" "power_on" {
  host     = "IPMI_HOST"
  username = "IPMI_USERNAME"
  password = "IPMI_PASSWORD"
  action   = "on"
}

resource "ipmi_boot" "pxe_boot" {
  host     = "IPMI_HOST"
  username = "IPMI_USERNAME"
  password = "IPMI_PASSWORD"
  bootdev  = "pxe"
}

resource "null_resource" "install_os" {
  provisioner "remote-exec" {
    inline = [
      "curl -O http://example.com/rocky-linux.iso",
      "curl -O http://example.com/ks.cfg",
      "dd if=rocky-linux.iso of=/dev/sda",
      "reboot"
    ]
  }

  connection {
    type     = "ssh"
    host     = "IPMI_HOST"
    user     = "root"
    password = "ROOT_PASSWORD"
  }
}



4. 번 내용 kickstart 설정 (ks.cfg)

#version=RHEL9
install
lang en_US.UTF-8
keyboard us
timezone America/New_York --isUtc
rootpw --plaintext yourpassword
user --name=youruser --password=yourpassword
reboot

# Use text mode install
text

# System bootloader configuration
bootloader --location=mbr

# Partition clearing information
clearpart --all --initlabel

# Disk partitioning information
part / --fstype="xfs" --grow --size=1
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048

%packages
@^minimal-environment
%end

 

 

Comments