CLI로 다시 WebServer 설치
초기화
CLI에서 다시 처음부터 시작할 것이므로 모두 삭제해줄 것이다.















이것으로 거의 초기 상태로 되돌렸다. 이제 CLI로 다시 처음부터 생성해보자.
CLI - Project 생성
# 만일 자격 증명 필요하면
source keystonerc_admin
# 프로젝트 생성 ( 디폴트 도메인 / 설명: cli-project / 프로젝트명 : cli-project)
openstack project create --domain Default --description "cli-project" cli-project


CLI - User 생성
# 유저 생성 (도메인:디폴트 / 소속 프로젝트 : cli-project (이름 말고 id로도 가능) / 패스워드: 보안을 위해 프롬프트를 띄어 따로 입력 / 유저 명 : cli-user)
openstack user create --domain Default --project cli-project --password-prompt cli-user
# 역할 추가 ( cli-user에게 cli-project 프로젝트의 _member_ 기본 역할 부여)
openstack role add --project cli-project --user cli-user _member_


CLI - Image 생성





# 이미지 생성 (파일: CentOS7 / 디스크 포맷: qcow2 / 컨테이너 포멧: bare / 퍼블릭으로 해서 다른 쪽에서도 사용 가능하게 해서 공간 절약 / 이미지 이름: centos7)
openstack image create --file CentOS-7-x86_64-GenericCloud.qcow2 --disk-format qcow2 --container-format bare --public centos7


# 이미지 생성 (파일: bionic / 디스크 포맷: qcow2(img도 포함) / 컨테이너 포멧: bare / 퍼블릭으로 해서 다른 쪽에서도 사용 가능하게 해서 공간 절약 / 이미지 이름: ubuntu
openstack image create --file bionic-server-cloudimg-amd64.img --disk-format qcow2 --container-format bare --public ubuntu


CLI - Flavor 생성
# Flavor 생성 ( vcpus:1개 / ram: 1024mb / 디스크 사이즈 : 10gb / id : 6 / 이름: m1.micro)
openstack flavor create --vcpus 1 --ram 1024 --disk 10 --id 6 m1.micro


CLI - External Network 생성
# 네트워크 생성 ( 프로젝트: cli-project / 네트워크 타입: flat(외부 네트워크에서 브릿지 기능) / 프로바이더 네트워크: extnet / 외부네트워크 / 이름: external-network)
openstack network create --project cli-project --provider-network-type flat --provider-physical-network extnet --external external-network


## \ : 개행문자(다음줄에서 이어서 입력 가능)
# 서브넷 생성(네트워크: external-network / 프로젝트: cli-project / 서브넷 대역폭 : 192.168.0.0/21
# 아이피 풀: 192.168.4.1 ~ 192.168.4.50 / 게이트웨이 : 192.168.0.1 / dhcp: x / 이름: external-subnet)
# 예시 코드이므로, 각자 알맞게 수정해서 쓰자.
openstack subnet create --network external-network \
--project cli-project --subnet-range 192.168.0.0/21 \
--allocation-pool start=192.168.4.1,end=192.168.4.50 \
--gateway 192.168.0.1 --no-dhcp external-subnet


# show를 이용하여 디테일한 정보를 볼 수 있다.
openstack subnet show external-subnet

CLI - Token 생성
# OS_AUTH_URL 확인
cat keystonerc_admin
# 키스톤 설정 ( AUTH_URL: 인증을 하기 위한 URL / PS1: 이 토큰이 적용되면 변경할 프롬프트)
vi keystonerc_cli-user
// 수정하고 붙여넣기.
unset OS_SERVICE_TOKEN
export OS_USERNAME=cli-user
export OS_PASSWORD='[유저에서 설정한 비밀번호]'
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=[keystonerc_admin에 있는 주소]
export PS1='[\u@\h \W(keystone_cli-user)]\$ '
export OS_PROJECT_NAME=cli-project
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
// 프로젝트, DNS, IDENTITY API 버전 설정


# cli-user 로 로그인
source keystonerc_cli-user

CLI - internal network 생성
# $를 붙여서 프로젝트ID에 다음 변수 값을 저장
projectID=$(openstack project list | grep cli-project | awk '{print $2}')
# 네트워크 생성 (소속 프로젝트: 위에서 찾아낸 프로젝트 아이디 / provider: vxlan(내부 네트워크의 경우) / 이름: internal-network)
openstack network create --project $projectID --provider-network-type vxlan internal-network



# 밑에서 provider-network-type 을 사용하기 위해서 admin 권한을 주도록 수정해줘야 한다.
# floating ip를 만들 때에도 동일하다.
vi /etc/neutron/policy.yaml
// 붙여넣기.
"create_network:provider:network_type": "role:admin or project_id:%(project_id)s"
"create_floatingip:floating_ip_address": "role:admin or project_id:%(project_id)s"
//

# 다시 네트워크 생성
openstack network create --project $projectID --provider-network-type vxlan internal-network


# 서브넷 생성 (네트워크: internal-network / 대역폭: 자신의 네트워크 주소 / 게이트 웨이: 게이트웨이 주소 / dhcp 지원 / dns: 8.8.8.8 / 이름: internal-subnet
# 예시 코드이므로 각자 알맞게 수정해서 사용
openstack subnet create --network internal-network --subnet-range 10.11.1.0/24 --gateway 10.11.1.1 --dhcp --dns-nameserver 8.8.8.8 internal-subnet


CLI - Router 생성
# 라우터 생성
openstack router create router
# 라우터 세팅 (생성했던 external-network를 외부 게이트웨이에 연결)
openstack router set --external-gateway external-network router
# 라우터에 서브넷 추가 (내부쪽 방향으로 붙이므로 internal임)
openstack router add subnet router internal-subnet

CLI - Security Group 생성
# open-sg-web 보안그룹 생성
openstack security group create open-sg-web

# 'open-sg-web' 보안 그룹에 규칙 추가 (프로토콜: icmp / ingress: 외부에서 내부[수신])
openstack security group rule create --protocol icmp --ingress open-sg-web
# tcp 프로토콜 / 데스티네이션 포트 : 22 / ingress(디폴트 값) / '22:22' 에서 ':'의 의미는 '~' 범위
openstack security group rule create --protocol tcp --dst-port 22:22 open-sg-web
# 80포트 ( '80' = '80:80')
openstack security group rule create --protocol tcp --dst-port 80 open-sg-web



CLI - KeyPair 생성

전에 실습에서 WEB UI를 이용해서 키를 생성했었다. 이를 그대로 이용하면 되지만,
만일 키가 없는 상태라면 CLI를 이용하여 키를 생성(key gen)해서 사용하면 된다.
# 키 페어 생성 ( 퍼블릭 키 / 사용할 키 파일 경로 / 키 페어 이름: open-key)
openstack keypair create --public-key ~/.ssh/id_rsa.pub open-key


CLI - Floating IP 생성
# router 라우터 상세 정보 (해당 플로팅 아이피는 쓰지 말아야 한다.)
openstack router show router

# 쓸 수 있는 범위에서 랜덤하게 유동 아이피 생성 (WEB UI에서 사용한 방법)
openstack floating ip create external-network
# external-entwork와 연결된 192.168.4.1 플로팅 아이피 생성 (원하는 아이피 생성)
openstack floating ip create --floating-ip-address 192.168.4.1 external-network

# 웹 서버 설치에 사용될 파일(사용자 정의 스크립트 파일) // 여기서는 생략
vi httpd.file
// 아래 내용으로 생성
#!/bin/bash
yum install -y httpd
systemctl enable --now httpd
//
# 서버 생성 (flaver: m1.micro / 이미지: centos7 / 보안그룹: open-sg-web / 네트워크: internal-network / 불륨 크기: 10GB / 키 페어: open-key / 이름: webserver)
openstack server create --flavor m1.micro --image centos7 --security-group open-sg-web --network internal-network --boot-from-volume 10 --key-name open-key webserver


# 서버 리스트
openstack server list
# 플로팅 아이피 리스트
openstack floating ip list
# 서버에 플로팅 아이피 연결
openstack server add floating ip webserver 192.168.4.1
# 접속 확인
ssh -i .ssh/id_rsa centos@192.168.4.1

CLI - Volume 생성
# 불륨 생성 ( 사이즈: 1GB / 이름: web-add)
openstack volume create --size 1 web-add
# 불륨 리스트
openstack volume list
# webserver 서버에 web-add 불륨 추가
openstack server add volume webserver web-add



# 서버에 접속
ssh -i .ssh/id_rsa centos@192.168.4.1
# 블록 확인
lsblk
# xfs타입 포멧
sudo mkfs -t xfs /dev/vdb
# 마운트
sudo mount /dev/vdb /mnt
# 확인
df -h
CLI로 Ubuntu - DBserver 설치
Security Group 생성
# 보안 그룹 open-sg-db 생성
openstack security group create open-sg-db
openstack security group rule create --protocol icmp --ingress open-sg-db
openstack security group rule create --protocol tcp --dst-port 22:22 open-sg-db
openstack security group rule create --protocol tcp --dst-port 3306 open-sg-db
KeyPair 생략
기존 open-key 사용할 것이므로 생략
Floating IP 생성
# 원하는 아이피로 플로팅 아이피 생성
openstack floating ip create --floating-ip-address 192.168.4.2 external-network
# mysqld 설치 스크립트 만들기
vi mysqld.file
//
#!/bin/bash
apt update
apt install -y mariadb-server
//
# 서버 생성
openstack server create --flavor m1.micro --image ubuntu --security-group open-sg-db \
--network internal-network --boot-from-volume 10 --key-name open-key --user-data mysqld.file dbserver
# 플로팅 아이피 연결
openstack server add floating ip dbserver 192.168.4.2
# 서버 확인
openstack server list
# 접속
ssh -i .ssh/id_rsa ubuntu@192.168.4.2
MariaDB 설치
# 설치
sudo mysql_secure_installation
# MariaDB 설정
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
// bind-address 앞에 '#' 주석처리
#bind-address = 127.0.0.1
//
# 재기동
sudo systemctl restart mysql

# wpuser 유저 (비밀번호: wppass) 생성
CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass';
# wordpress 데이터베이스가 없으면 생성
CREATE DATABASE IF NOT EXISTS wordpress;
# wpuser에게 wordpress에 대한 모든 권한 부여
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';
# 나가기
quit
CLI로 WebServer - 워드프레스 설치
워드프레스 설치
# webserver 접속
ssh -i .ssh/id_rsa centos@192.168.4.1
# 필요한 패키지들 설치
sudo yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
# 워드프레스 압축파일 다운로드
wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
# html 폴더로 이동
cd /var/www/html
# 압축해제
sudo unzip /home/centos/wordpress-4.8.2-ko_KR.zip
# 압축해제하여 생긴 워드프레스 폴더 안의 파일들을 현재 경로로 모두 이동
sudo mv ./wordpress/* .
# 아파치 사용자와 그룹에게 해당 폴더에 대한 소유권 부여
sudo chown -R apache:apache /var/www/*
# 재기동 및 활성화
sudo systemctl enable --now httpd
# selinux 비활성화
sudo setenforce 0
vi /etc/selinux/config
// 해당 항목 찾아서 disabled로 수정
SELINUX=disabled
//
이제 윈도우의 크롬창으로 webserver의 플로팅 아이피를 입력하면






CLI로 삭제
서버 삭제
# 서버 삭제
openstack server delete [서버 이름]


불륨 삭제
VM 지울 때 연결된 불륨을 삭제를 시킬 수 있으나, 이 옵션을 체크 안했으므로 남아 있다.
그러므로 직접 지워줘야한다.
## 불륨 삭제
# 이름으로 삭제
openstack volume delete [불륨 이름]
# 아이디로 삭제
openstack volume delete [불륨 아이디]



Floating IP 삭제(해제)
# Floating IP 삭제
# openstack floating ip [아이피 주소]

라우터 삭제
제일 먼저 라우터의 인터페이스를 분리해줘야 한다.
# 서브넷 삭제
openstack router remove subnet [라우터 이름] [서브넷 이름]
# 외부 게이트웨이 해제
openstack router unset --external-gateway router

# 라우터 삭제
openstack router delete [라우터 이름]

네트워크 삭제
네트워크의 서브넷 삭제를 먼저 해줘야 한다.
먼저 내부 네트워크를 삭제해보자.
# 서브넷 삭제
openstack subnet delete [서브넷 이름]

# 네트워크 삭제
openstack network delete internal-network

이제 외부 네트워크를 삭제할 것이다. 외부 네트워크를 삭제할 것이면 'admin'으로 해야한다.
그 후엔 위 처럼 해주면 된다.
# admin 자격증명
source keystonerc_admin


Flavor 삭제
# Flavor 삭제
openstack flavor delete [flavor 아이디]

이미지 삭제
현재 실습에선 삭제는 안하지만 다음과 같이 삭제할 수 있다.
# 이미지 삭제
openstack image delete [이미지 이름]
유저 삭제
# 유저 삭제
openstack user delete [유저 아이디]

프로젝트 삭제
# 프로젝트 삭제
openstack project delete [프로젝트 이름]

참고로, 스택도 덩달아 사라진다.

'메가존 클라우드 2기 교육 > 실무 심화' 카테고리의 다른 글
AWS - 가입 및 설정 (0) | 2023.04.11 |
---|---|
오픈 스택 - 서버 네트워크 구축 최종 실습 (0) | 2023.04.10 |
오픈 스택 - WebServer, DB Server 설치 및 CLI로 오픈스택 다루기 (0) | 2023.04.06 |
오픈 스택 - 구성 요소(서비스) (0) | 2023.04.06 |
오픈 스택 - 구성 요소(서비스) Swift, Heat (0) | 2023.04.06 |