--disk 를 통해 볼륨을 지정, --location 을 통해 Iso 파일을 지정하며, 부팅시 설치 마법사가 시작되어 직접 세세히 설정 해야 한다
- 따라서, 이 방법은 동시에 다수의 가상 머신을 생성 해야 한고, 즉시 제공해야 하는 클라우드 환경에는 적합하지 않다
- 시간이 너무 오래 걸리고, 설치에 익숙하지 않은 사용자에게는 어려움이 있다
클라우드 이미지란 OS 가 설치되어 있는 볼륨을 이미지화 한 것
- 이 이미지를 통해 인스턴스를 배포할 수 있다. 즉, 이 이미지를 복사하여 여러 인스턴스를 배포할 수 있다
- 단, 1번 방법으로 생성한 볼륨을 이용하여 다른 인스턴스를 생성하게 되면, 동일한 root password 를 사용하므로 보안상 문제가 발생할 수 있다
따라서, 클라우드 이미지에는 root password 등이 미리 지정되어 있어서는 안된다
- 필요할 때 root password 를 설정해서 사용하는 방법 -> virt-customize 를 통해 이미지에 필요할 때 root password 를 설정할 수 있지만, virt-customize 는 볼륨 사이즈 조정이 불가능 하다
클라우드 이미지의 볼륨 크기를 조정하는 것은 virt-resize 를 통해 할 수 있다
Step 1. 클라우드 상에 있는 기본 템플릿 이미지를 다운로드 ( ex. centos-7.0.xz )
Step 2. 압축된 파일을 압축 해제 한다
Step 3. virt-resize 를 이용하여 볼륨의 크기를 확장 한다
Step 4. Disk open 하여 볼륨 수정 가능 상태로 만들어, 패키지 설치 / 특정 파일 업로드 / 인스턴스로 부팅시 실행할 명령 등을 수행한다
Step 5. 최종적으로 수정된 볼륨이 생성된다
virt-install 을 통해 XML 영역을 정의하여 XML 을 생성한다
이때, 앞서 virt-builder 을 통해 만든 볼륨의 위치를 지정해 주어야 한다
virt-install 시 ovs 에 배치되고, model 은 virtio 로 하면, 인스턴스의 인터페이스 이름이 eth0 이 된다. ifcfg-eth0 파일을 미리 만들어 두고, 이 안에 211.183.3.222 를 기록해 둔뒤 이를 인스턴스에 Upload 한다
또한, 로컬에 있는 Public Key 를 인스턴스의 /root/.ssh/authorized_keys 에 붙여 넣는다
- 위 글의 5 번 을 참조하여 생성하자
virt-builder centos-7.0 --format qcow2 --size 20G -o /remote/centos001.qcow2 --upload ifcfg-eth0:/etc/sysconfig/network-scripts/ifcfg-eth0 --run-command 'ssh-keygen -q -f /root/.ssh/id_rsa -N ""' --upload /root/.ssh/authorized_keys:/root/.ssh/authorized_keys --firstboot-command 'ifdown eth0 ; ifup eth0' --selinux-relabel
여기서 ssh keygen 은 ssh 로그인에는 사용하지 않고, .ssh 디렉터리 생성을 위해 사용하는 것 이다. 로그인을 위한 key 는 Host 에서 생성한 Key pair 를 사용하므로, 따로 authorized_keys 를 upload 해주는 것 이다
인스턴스 배포는 아래의 코드를 사용한다
virt-install --name centos001 --vcpus 1 --ram 1024 --network bridge:vswitch01,model=virtio,virtualport_type=openvswitch --disk /remote/centos001.qcow2 --import --graphics vnc --noautoconsole
현재는 미리 생성해 둔 키를 이용하여 접속하고 있다. 간단한 스크립트를 작성하여, 사용자로 부터 키 이름을 요구 받고, 요구 받은 키의 이름을 이용하여, Key Pair 를 생성하여 인스턴스에 추가해라. 나머지 사항은 위의 인스턴스 생성시 사용한 옵션과 동일하게 한다
사용자는 Private Key 를 이용하여 SSH 접속을 한다
#key pair 이름 입력받기
read -p " pls write a key name " keyname
ssh-keygen -q -f ~/.ssh/${keyname}.pem -N ""
#생성한 public key move
cat /root/.ssh/${keyname}.pem.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/${keyname}.pem
#볼륨 수정
virt-builder centos-7.0 --size 20G --format qcow2 -o /remote/test3.qcow2 --install httpd,net-tools --mkdir /root/.ssh --upload /root/index.html:/var/www/html/index.html --upload /root/.ssh/authorized_keys:/root/.ssh/authorized_keys --run /root/createinstance.sh --selinux-relabel
#인스턴스 배포
virt-install --name test3 --vcpus 1 --ram 1024 --network bridge:vswitch01,model=virtio,virtualport_type=openvswitch --disk /remote/test3.qcow2 --import --graphics none --noautoconsole
#!/bin/bash
systemctl enable httpd
systemctl disable firewalld
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes
IPADDR=211.183.3.222
PREFIX=24
GATEWAY=211.183.3.2
DNS=8.8.8.8
EOF
ifdown eth0
ifup eth0
sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
chmod 700 /root/.ssh