Devuanのqcow2イメージを作成してTerraform から仮想環境を起動する オマケ付き

3 min read

こんにちは、無能です。 Terraformの記事があまり無かったので書いておきます。

経緯

Terraformの名前はよく聞いていたけどあまりイメージわかなくてちょっと触ってみようと思ったから。
追加でqemuの仮想ディスクイメージであるqcow2イメージも使えるらしいからこれ、自分の環境でもイケるんじゃね?って思った次第です。
これができれば今の実稼働サーバのテスト環境としてかんたんに行えそう。なんやかんや軽いノリで始めた自宅サーバがそこそこな稼働具合になっちゃったので、出来る限り稼働率をあげていきたいので仮想環境を気軽にデプロイ出来るのは心強い。

なんやかんやで仮想環境は仮想環境で、メンドくさいんだよな・・・と思いつつ後回しにしてましたがTerraformのおかげでそのイメージがなくなるかもしれないなあと思ったのでやる。
めんどくさいって言うのが、virshとqemuのオプションをフルで覚えていないといけないしqemuの立ち上げのオプションすらめんどくさい。 それをTerraformで解決したい。

qcow2イメージの作成

最初にDevuanのqcow2イメージを作成します。

wget https://files.devuan.org/devuan_daedalus/installer-iso/devuan_daedalus_5.0.1_i386_netinstall.iso
qemu-img create -f qcow2 devuan.qcow2 10G
 sudo chown libvirt-qemu:libvirt-qemu devuan.qcow2 devuan_daedalus_5.0.1_i386_netinstall.iso
sudo chmod 644 devuan.qcow2 devuan_daedalus_5.0.1_i386_netinstall.iso
sudo virt-install --name devuan --ram 1024 --disk path=./devuan.qcow2,size=10 --vcpus 1 --os-type linux --os-variant debian10 --network bridge=virbr0 --graphics vnc --console pty,target_type=serial --cdrom devuan_daedalus_5.0.1_i386_netinstall.iso

これで インストール中である表示が出るので接続し、インストールを完了させます。

sudo virt-viewer --connect qemu:///system devuan

Image
Image
ちょっとややこしいのですが、この画面は 操作しているThinkPad X1 - VNC → 自作PCのArtixLiunx - virt-viewer → 仮想環境上のDevuan
の画面です。 インストール後になにかイメージを編集したい場合は

sudo qemu-system-x86_64   -m 2G   -smp 2   -drive file=devuan.qcow2,format=qcow2   -net nic -net user   -vnc :0   -enable-kvm

でVNC :5900番ポートで接続します。

vncviewer 192.168.10.100:5900

これでqcow2イメージはオッケーです。

Terraformの設定と起動

vim main.tf

で以下のように記載しました。

terraform {
  required_providers {
    libvirt = {
      source  = "dmacvicar/libvirt"
      version = "~> 0.7.1"
    }
  }
}

provider "libvirt" {
  uri = "qemu:///system"
}

resource "libvirt_volume" "devuan_qcow2" {
  name   = "devuan.qcow2"
  source = "./devuan.qcow2"
  format = "qcow2"
}

resource "libvirt_domain" "devuan_vm" {
  name   = "devuan-vm-new"
  memory = "1024"
  vcpu   = 2

  network_interface {
    network_name = "default"
  }

  disk {
    volume_id = libvirt_volume.devuan_qcow2.id
  }

  console {
    type        = "pty"
    target_port = "0"
    target_type = "serial"
  }

  graphics {
    type        = "vnc"
    listen_type = "address"
  }
}

あとは立ち上げて行きます。

terraform init
terraform plan
terraform apply

そして立ち上げたら仮想環境にログインしてきます。
IPの確認。

$ sudo virsh domifaddr devuan-vm-new
 名前     MAC アドレス     プロトコル     アドレス
-------------------------------------------------------------------------------
 vnet13     52:54:00:0a:e9:bc    ipv4         192.168.122.216/24

確認できました。ではログインしましょう。

$ ssh -l taro 192.168.122.216
The authenticity of host '192.168.122.216 (192.168.122.216)' can't be established.
ED25519 key fingerprint is SHA256:VAjob/o7gQXvmeNUodajSfdBky0eXd0RTwomP1wHtWk.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:5: 192.168.122.83
    ~/.ssh/known_hosts:6: 192.168.122.163
    ~/.ssh/known_hosts:7: 192.168.122.162
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.122.216' (ED25519) to the list of known hosts.
taro@192.168.122.216's password: 
Linux devuan 6.1.0-25-686 #1 SMP PREEMPT_DYNAMIC Debian 6.1.106-3 (2024-08-26) i686

The programs included with the Devuan GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Devuan GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
taro@devuan:~$ 

OKです!後日複数インスタンス立ててみようと思います。
そしてインスタンスをぶっ壊します。

terraform destroy

おまけ qcow2イメージの再配布

Devuan公式のqcow2イメージが最新版無かったので今回作りましたが、以下で私がホスティングして再配布しています。
みんなの大好きオマケです。
https://files.soulminingrig.com
以下でログインしてください。
user : taro
password : toor
なお、パスワードはDevuan公式のデフォルトrootパスワードと同一にしています。

それではまた。よろしくお願いします。
ちなみに、この記事間違えてふっとばしてこれ書いているの二回目です。てへぺろ。