- 볼륨 사이즈 지정 + 웹서버 배포 + index.html 배포
- virt-customize 는 볼륨 사이즈에 대한 조절이 없다
- virt-builder 는 virt-customize 의 기능과 virt-resize 의 기능이 포함되어 있어 원하는 크기의 볼륨 지정 및 패스워크, 패키지 설치등이 가능하다
- 인터넷에 있는 클라우드 이미지 다운로드 하기 -> 이를 통해 centos-7.0 클라우드 이미지를 다운 받았다
- virt-resize 기능이 포함되어 있다 -> 이를 통해 클라우드 이미지 ( 볼륨 ) 사이즈를 확장할 수 있다
- 볼륨 내에 설치되어 있는 centos 의 root password 설정 가능
- 볼륨 내에 미리 필요한 패키지를 설치 가능 -> 이는 yum 을 사용해 패키지를 설치하는 것과 같다
- upload 옵션 : local 파일을 원격 이미지에 저장할 수 있다. 즉, local 에 있는 파일을 볼륨 안에 넣을 수 있는 옵션이다. 앞에는 로컬 파일, 뒤에는 저장할 위치를 지정한다. 만약, 패키지 관련된 파일이라면 미리 관련된 패키지를 install 을 통해 설치하게 설정 해야 한다
- install 옵션 : 패키지를 설치하는 옵션이다. , 를 통해 다수의 패키지를 설치할 수 있다. 이는, 볼륨 자체에 필요한 패키지를 설치하는 옵션이다. 즉, 패키지가 디스크 ( 볼륨 ) 자체에 설치된다
- firstboot-install 옵션 : virt-install 을 통해 인스턴스로 배포될 때, 처음 부팅하면서 설치할 패키지를 설정하는 옵션이다. 즉, 패키지가 인스턴스가 처음 부팅이 될 때 설치된다
- run 옵션 : 다음에 스크립트 파일이 온다. Host 에 스크립트를 작성해두고, 이 내용을 디스크 ( 볼륨 ) 에 적용 하는 옵션이다. 즉, 스크립트에 작성된 명령을 볼륨에 적용시킬 수 있다. 이는, 볼륨 내에 여러 명령어를 적용시키고자 할 때 유용하다
- run-command 옵션 : 다음에 명령어가 온다. 명령어를 볼륨에 적용시킨다. 이는, 한 개 정도의 간단한 명령어를 볼륨에 적용하고자 하는 경우에 유용하다
- firstboot-command 옵션 : 다음에 명령어가 온다. 인스턴스가 처음 부팅될 때, 인스턴스 내에서 실행할 명령어를 지정하는 옵션이다
- mkdir DIR 옵션 : 볼륨 내에 필요한 디렉터리를 미리 생성하는 옵션이다
- selinux-relabel 옵션 : selinux 활성화하는 옵션이다
virt-builder os-version -o /remote/centos1.qcow2 --size 20G --format qcow2 --install httpd,nfs-utils,vim --upload index.html:/var/www/html/index.html
- --install httpd --run-command 'systemctl enable httpd' : 볼륨에 명령어를 적용하는 것이므로, enable 을 통해 인스턴스가 배포되어 실행된다면, httpd 가 자동 실행되게 설정 해야 한다
- --install httpd --firstboot-command 'systemctl start httpd' : 인스턴스에 명령을 실행하는 것 이므로, start 를 시켜줘야 한다
- local 에 index.html 파일을 간단히 제작
- test2.qcow2 를 생성하되, 20GB 이고, 미리 httpd 패키지를 설치
- 로컬에 있는 index.html 파일을 웹서버의 기본 홈 디렉터리로 이동
- 웹서버는 인스턴스로 실행과 동시에 동작해야 하며, 외부에서 해당 Ip 주소로 접속했을 때 웹페이지가 보여야 한다
- root 의 password 는 test123 으로 설정한다
- Ip 주소는 211.183.3.222 를 사용
- Host 의 ~/.ssh/authorized_keys 파일을 가져와서 Public Key 를 인스턴스에도 입력해서 Host 에서 Private key 를 통해 인스턴스에 접근할 수 있어야 한다
- password 는 사용하지 않는다
Ip 주소 변경을 위해 해야 할 것 -> ifcfg-eth0 에 BOOTPROTO=NONE 으로 설정하고, IPADDR=211.183.3.222 , PREFIX=24 , DEFUALT_GATEWAY , DNS 를 설정해줘야 한다
SSH 연결을 위해 해야 할 것 -> HOST 에서 SSH_CONFIG 설정 , 인스턴스에 .ssh 폴더 생성 및 authorized_keys 복사 , sshd_config 설정
#!/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
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
위 명령어를 통해 인스턴스를 배포하자. 우리는 스크립트 파일의 명령을 통해 Password login 을 막았으므로 접속이 안되는 것이 맞다
설치가 끝나면 Ctrl + ] 로 나오자