- 기존 가상머신들을 manage -> Delete from Disk 로 지운다.
- OS는 CentOS-Stream-8-x86_64-latest-boot 를 사용한다.
VM 사양
- CPU : 4C
- RAM : 12GB(12288MB)
- OS : CentOS8 - String.iso
- NET : Bridged
- SEC : ?
Openstack VM 최소사양
- CPU : 4C (시스템 8C)
- RAM : 8GB (시스템 16GB)
Openstack 권장사양
- CPU : 24C
- TAM : 24GB
/home
삭제/
에 몰아준다.SOFTWARE
파트 설정을 할 수 있다.
- Openstack 설치시, localhost의 이름을 바꾸면 안된다.
- 에러가 생길 수 있다. 또, 중간에 @를 넣으면 인식이 안된다고 한다.
설치
vi /etc/sysconfig/network-scripts/ifcfg-ens160
- 랜카드의 이름을 설정, IP를 고정하고, IP를 정의한다.
TYPE=Ethernet BOOTPROTO=none NAME=ens160 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.0.131 NETMASK=255.255.240.0 GATEWAY=192.168.0.1 DNS1=192.168.0.66 DNS2=8.8.4.4
- vi /etc/selinux/config
SELINUX=disabled
- dnf install network-scripts -y :dnf패키지로 network-scripts를 설치한다. (랜카드 설정하는 network-scripts가 현재 OS는 기본설치가 안되어있다.)
- systemctl disable firewalld : firewalld를 disable해준다. 아직 살아있지만 reboot하면 꺼질 것이다.
- systemctl disable NetworkManager : 네트워크매니저도 종료해준다.
- systemctl enable network : 네트워크는 시작 설정해준다.
- systemctl start network : enable후 reboot할 것이라 현재는 필요 없다.
- reboot
- dnf update -y
- dnf config-manager --enable powertools : powertools를 이용해 openstack yoga를 설치할 것이다.
- dnf install -y centos-release-openstack-yoga : 원래 openstack은 설치가 매우 까다롭지만, 실습용으로 만든 자동화 설치 패키지를 사용한다.
- dnf update -y : 이 업데이트는 Centos업데이트와 동시에 Openstack yoga를 위한 업데이트라 할 수 있다.
- dnf install -y openstack-packstack : 아래 answers.txt를 통해서 하나하나 할 작업들을 스크립트에 모아서 한번에 설치할 수 있도록 필요한 도구이다.
- packstack --gen-answer-file /root/answers.txt
- 위 작업 후,
ls
를 입력하면 answers.txt이 생성되어있다.- 또, .ssh폴더가 생겼고, SSH 키와 pub키가 생성되어있다.
- 위 openstack(Cloud Management System)에서 우리가 할 작업들을 한번에 자동으로 생성해 준것을 볼 수 있다.
answer.txt 설정
- vi /root/answers.txt
- 아래 비밀번호와 Volumes_size 등 여러가지를 설정한다.
- CONFIG_DEFAULT_PASSWORD은 기본 패스워드이다.
- CONFIG_KEYSTONE_ADMIN_PW는 CLI에서 접근시에 패스워드??이다.
CONFIG_DEFAULT_PASSWORD=[비밀번호]
CONFIG_KEYSTONE_ADMIN_PW=[비밀번호]
CONFIG_CINDER_VOLUMES_SIZE=90G #블록스토리지 서비스 (CINDER), 여기가 부족하면 VM이 생성이 되지 않는다. 심지어 에러도 나오지 않을 것이다.
//
CONFIG_NTP_SERVERS=0.kr.pool.ntp.org # (네트워크 타임 프로토콜)
CONFIG_HEAT_INSTALL=y # HEAT를 사용설정한다. 더 무거워지지만 (IAC, Infrastruct as a Code)
CONFIG_CEILOMETER_INSTALL=n
CONFIG_AODH_INSTALL=n
CONFIG_NEUTRON_L2_AGENT=openvswitch #가상스위치(L2)를 구성하기 위해, 이를 담당하는 NEUTRON을 사용하는데, 이중 openvswitch를 사용할 것이다. 다루기 가장 쉽기 때문이다.
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat # flat은 외부네트워크를 맡아주는 네트워크이다. vxlan은 내부네트워크를 맡아주는 소프트웨어다. 우리는 만들고 이름만 만들어주면 되는데, vxlan이라는 드라이버를 설치하여 여기서 작업해준 것이다. vlan이 기본형인데, 네트워크 개수등 확장버전이 vxlan이다.CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan #예전버전에서는 프로젝트를 TENANT라고 했었다. 즉, 인터널 네트워크, 내부 사용자들이 사용사는 네트워크 타입을 정해주는 것이다.
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex #openstack안쪽에서 실제 네트워크라고 생각하는 네트워크를 매핑해주는 것이다.extnet
의 이름을 바꿀 수 있지만 이 이름을 꼭 기억해서 모두 수정해줘야 한다. 안그러면 핑이 안나간다.
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens160 #br-ex는 방금 정의를 했지만, ens160는 언제든지 바뀔 수 있고, 바뀔때마다 넣어줘야 하기 때문에 미리 정의가 안되어있고 비어있다.
- 위 br-ex가 이 ens160랜카드의 IP주소를 뺏어서, 랜카드는 그저 전기신호를 전송하기만 하게된다. br-ex가 openstack에서 Floating IP를 만들어 줄 수 있게된다.
CONFIG_PROVISION_DEMO=n #데모버전이라 네트워크가 이미 정해져있고, 수정할 수 없다. 우리는 네트워크를 직접 꾸밀 것이다. #시험용으로 생성되는 것이다.- packstack --answer-file /root/answers.txt
- IaC (Infra as a Code) : heat
- CloudFormation : AWS(head와 똑같지만, 더 잘되어있다.)
- 인증 -> 프로젝트 -> 프로젝트 생성
사용자 생성
- 전체 클라우드 서비스 내에서, 아래 heat, cinder, neutron, nova 등.. 모든 서비스들이 각각 사용자의 형태로 들어가있다. 서비스들도 일종의 서비스가 된다.
- 위 설정으로 사용자를 생성한다. 아래 역할에는 Openstack이 권한설정에 약간 문제가 있어 MEMBER를 유지할 것이다.
네트워크 설정
- 네트워크 - 네트워크 (External 네트워크 생성)
- 프로젝트는 기본설정인 ADMIN으로 하고, 아까 설정한 외부 네트워크인 FLAT을 사용한다. 또, 물리적인 네트워크는 extnet을 사용한다. 실제 물리네트워크는 아니지만, 설정에서 extnet을 물리적 네트워크로 매핑하였다.
- 192.168까지는 고정이고, 세번째 자리부터 0~15번을 사용할 것이다.
- DHCP사용 체크 해제
- Pools 할당에서 강의실에서 정해진 IP주소 범위를 사용한다.
- 범위는 시작IP와 끝IP사이에
,
로 구분하고 공백을 주지 않는다.
- 관리 -> Compute -> Flavor
- m1.micro를 생성한다.
- ID 를 auto로 생성하면 의미없는 매우 긴 ID가 생성되니 다른 Flavor의 규칙을 맞춰서 정수로 넣어준다.
- VCPUs : 1
- RAM(MB) : 1024
- Root 디스크(GB) : 10
- Flavor를 생성한다.
- 이제 web-user계정으로 접속한다.
내부 네트워크 생성
- 네트워크를 생성하여 이름은
Internal-Network
로 한다.
- 서브넷도 이름을
Internal-Subnet
으로 해서 생성해준다.
- 네트워크 주소는 강의실에서 부여받은 범위의 네트워크 주소로 작성한다.
- 네트워크 토폴로지를 확인하면 External-Network와 Internal-Network가 생겼다.
라우터 생성
- 프로젝트 -> 네트워크 -> 라우터에 들어가서 라우터를 생성해준다.
- CLI에서는
Openstack router create Router
Openstack router set --external-gatewal External-Network
openstack router add subnet Router Internal-Subnet
- 이 세 명령어로 생성, 외부네트워크 연결, 내부네트워크 추가 가 이루어 진다.
- 라우터 클릭 -> 인터페이스 생성
- 인터페이스를 생성해 준다.
- 네트워크 토폴로지를 보면 잘 연결되어있다.
Floating IP 할당
- 프로젝트 -> 네트워크 -> Floating IP 에서 IP를 할당받는다.
보안그룹
- 보안그룹에서 한 규칙에대해 한번 생성하면 수정할 수 없다.
- 그러나 생성이 어렵지 않아 삭제하고 수정하면 된다.
SG-WEB
- 프로넥트 -> 네트워크 -> 보안그룹 (디폴트는 사용하지 않는다.)
- 보안그룹은 기본적으로 모든 접근을 막는다. 그래서 규칙을 추가하여 접근을 허용해야 한다.
- ALL ICMP : Ping 허용
- HTTP : HTTP (80) 허용
- SSH 접근 : SSH(Secure shell)
SG-DB
- DB용 보안그룹 추가
- MYSQL (3306) 허용
- SSH (22) 허용
- 프로젝트 -> compute -> 키페어
CentOS-7-x86_64-GenericCloud Qxow2
이미지 파일로 CentOS7이미지 파일을 올린다.bionic-server
이미지 파일로 Ubuntu18이미지를 올린다.
// 웹서버 설치
!/bin/bash // 인스턴스 시작에서 사용자 정의 스크립트를 사용하기위해 시작하는 명령어
// 이때 root사용자로 입력되기 때문에 sudo를 사용할 필요가 없다.
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config //sed명령어는 s/^ (바꾼다.) //SELINUX=enforcing 을
// $/ ~~로 ,SELINUX=disabled /로
// /etx/selinux/config에 있는
yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
cd /home/centos
wget http://192.168.0.131:8080/v1/AUTH_ea4ee8f33bef44ebae768ca5a017cfb9/Files/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
unzip /home/centos/wordpress-4.8.2-ko_KR.zip
chown -R apache:apache /var/www/*
systemctl enable --now httpd
heat
의 기능이다.
- 우리가 VM을 구성하면서, 한줄한줄 커맨드를 입력해 나가는 것을
ad-hoc
이라고 한다.