가상화 - OpenStack 운영 CLI 2

jsbak·2023년 4월 7일
0

Cloud

목록 보기
15/59
post-thumbnail

CLI 수행

  • 자격 증명 설정
    # source keystonerc_admin
  • Project 생성
    # openstack project create --domain Default --description "cli-project" cli-project
    • --domain 정보 입력 해야되는 지금은 Default 하나이다.
    • --description 설명 정보(옵션) "cli-project" 작성
    • cli-project 프로젝트 이름
  • 생성한 Project 조회
    #openstack project list
  • User 생성
    # openstack user create --domain Default --project cli-project --password-prompt cli-user
    • --project 어느 프로젝트 인지 cli-project에 권한, project_id를 입력해도된다.
    • --password-promp; 내가 만들고 싶은 사용자에 대한 이름 cli-user 라는 이름을 주겠다.
      • 다음에 패스워드 프롬프트를 주면 패스워드를 정하겠다.
  • 생성한 User 조회
    • 사람도 사용자이지만 서비스도 사용자 이다.
  • 생성한 User에 역할 정의
    # openstack role add --project cli-project --user cli-user _member_
    • 권한이 상당히 취약하다.
    • 권한도 직접 찾아서 복사해서 지정해줘야한다.
    • --project; cli-project 의
    • --user; cli-user 에게
    • 기본 권한 _member_ 부여
  • Image 만들기
    # openstack image create --file CentOS-7-x86_64-GenericCloud.qcow2 --disk-format qcow2 --container-format bare --public centos7

    • CentOS-7-x86_64-GenericCloud.qcow2; 실제 파일이 있어야한다.
    • \의 의미 개행 문자
    • --disk-format; qcow2 (확장자 명시)
    • --container-format; bare
    • --public; 이미지의 공개 여부
    • centos7; 이미지 이름
  • ubuntu 이미지 생성
    # openstack image create --file bionic-server-cloudimg-amd64.img --disk-format qcow2 --container-format bare --public ubuntu18

    • 파일 정보 확인하기
      - file format 정보; virtual size 확인 가능
      qemu-img info bionic-server-cloudimg-amd64.img
  • Flavor 생성
    # openstack flavor create --vcpus 1 --ram 1024 --disk 10 --id 6 m1.micro
    • m1.micro; 이름
    • --vcpus; cpu 갯수
    • --ram; ram 크기
    • --disk; 디스크 크기 단위가 GB
    • --id; id 지정, 지정하지 않으면 uuid 생성
  • External Network 생성
    # openstack network create --project cli-project --provider-network-type flat --provider-physical-network extnet --external external-network
    • cli-project 하위로 생성
    • --provider-network-type; flat으로 제공
    • --provider-physical-network; 외부로 통신할 인터페이스명, extnet
    • --external; external 영역 설정
    • external-network 라는 이름 으로 네트워크 생성
  • 생성한 네트워크에 서브넷 구성
    # openstack subnet create --network external-network \ --project cli-project --subnet-range 192.168.0.0/21 \ --allocation-pool start=192.168.5.151,end=192.168.5.200 \ --gateway 192.168.0.1 --no-dhcp external-subnet
    • --network; 어떤 네트워크에 서브넷 설정을 할지 명시, external-network 지정하겠다.
    • --project; 어떤 프로젝트에 속할지 지정, cli-project
    • --subnet-range; 서브넷의 범위 지정
    • --allocation-pool; 서브넷 내부에서 pool의 범위 설정
    • --gateway; 게이트 웨이 주소
    • --no-dhcp; dhcp서버의 역할 제거
    • external-subnet; 이름
  • 생성한 네트워크 및 서브넷 정보 확인
  • Token 정보 생성
# vi keystonerc_cli-user
----------------------------------------------------
OS_USER_DOMAIN_NAME, OS_PROJECT_DOMAIN_NAME
Domain -> 회사를 의미; 프로젝트의 윗단을 보면 된다. (프로젝트의 상위 개념)

OS_REGION_NAME -> RegionOne 하나 있다.

OS_AUTH_URL -> Keystone API 주소 (http://192.168.1.82:5000/v3)
----------------------------------------------------
unset OS_SERVICE_TOKEN
    export OS_USERNAME=cli-user
    export OS_PASSWORD='12341234'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.1.82:5000/v3
    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
  • 자격증명적용

    • cli-user 자격증명 적용
      # source keystonerc_cli-user
  • Internal Network 구성

    • project_id 값을 projectID 라는 변수에 값을 저장
      # projectID=$(openstack project list | grep cli-project | awk '{print $2}')

    • $( Command ): Command 수행 결과를 가지게됨.

    • print 화면에 출력시키는 명령어

    • 내부 네트워크 시도
      # openstack network create --project $projectID --provider-network-type vxlan internal-network
      권한이 없어서 실행이 안된다.

    • 권한 지정

      • 프로젝트 사용자가 이용하능하도록 지정해야한다.
      \# 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"
    • 네트워크 설정 관련 권한 "create_network:provider:network_type": "role:admin or project_id:%(project_id)s"

    • 유동 IP 할당 관련 권한
      "create_floatingip:floating_ip_address": "role:admin or project_id:%(project_id)s" :

    • 내부 네트워크 설정 재시도

      생성 됐는지 재확인

      상세 정보 조회하려는데 다 보여지지 않음.

      admin으로 확인하니 보임. (필요하다면 나중에 권한을 찾아서 줘야할듯)

    • 내부 네트워크 서브넷 설정
      # openstack subnet create --network internal-network --subnet-range 10.19.1.0/24 --gateway 10.19.1.1 \ --dhcp --dns-nameserver 8.8.8.8 internal-subnet

    • --network internal-network; 내부 네트워크를 만들겠다.

    • --subnet-range; 서브넷 지정 10.19.1.0/24

    • --gateway; 게이트 웨이 주소 명시

    • --dhcp; dhcp 서버 설정

    • --dns-nameserver; 네임 서버 지정

    • internal-subnet; 사용할 내부 네트워크의 서브넷 이름

  • 전체 소스
\# 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"


\# projectID=$(openstack project list | grep cli-project | awk '{print $2}')

\# openstack network create --project $projectID --provider-network-type vxlan internal-network

## 생성 확인
\# openstack network list
## 상세 정보 확인
\# openstack network show internal-network
/*
	진짜 정보를 보려면 \# source keystonerc_admin 로 접속해야한다.
*/

\# openstack subnet create --network internal-network --subnet-range 10.0.0.0/24 --gateway 10.0.0.1 \
--dhcp --dns-nameserver 8.8.8.8 internal-subnet
  • Router 생성
    # openstack router create router

    • 왼쪽 연결( 라우터와 외부 네트워크 연결: # openstack router set --external-gateway external-network router
      set --external-gateway external-network router 라우터 기준 왼쪽 --external-gateway 외부 연결 가능한 게이트웨이
    • 오른쪽 연결( 라우터와 내부 네트워크(서브넷) 연결): # openstack router add subnet router internal-subnet
      add subnet router internal-subnet 라우터 기준으로 오른쪽
+-------------------------+---------------------------------------------------------------------------------
| Field                   | Value
+-------------------------+---------------------------------------------------------------------------------
| admin_state_up          | UP
| availability_zone_hints |
| availability_zones      | nova
| created_at              | 2023-04-07T05:49:20Z
| description             |
| external_gateway_info   | {"network_id": "c5e3d410-8e66-4b15-8374-b62b302844aa", "external_fixed_ips": [{"
| flavor_id               | None
| id                      | 59bf9847-6d57-4625-88a8-e6cb428e837e
| interfaces_info         | [{"port_id": "f2454ca8-4a6a-48ec-bba1-6b6e023b81fc", "ip_address": "10.19.1.1",
| name                    | router
| project_id              | 9eac26071f1347a199c66b7d99ceaffa
| revision_number         | 4
| routes                  |
| status                  | ACTIVE
| tags                    |
| updated_at              | 2023-04-07T06:17:42Z
+-------------------------+---------------------------------------------------------------------------------
  • Security Group 생성
    # openstack security group create open-sg-web
    • icmp 규칙
      rule create; 규칙 생성
      --protocol icmp; icmp 프로토콜에 대해
      --ingress 들어가는 규칙
      # openstack security group rule create --protocol icmp --ingress open-sg-web
    • ssh 규칙
      --dst-port; 들어오는 규칙
      :의미 범위, 22:22 -> 22번~22까지
      # openstack security group rule create --protocol tcp --dst-port 22:22 open-sg-web
    • http 규칙
      --dst-port; 들어오는 규칙
      들어오는 80~80번 포트 허용 규칙
      \# openstack security group rule create --protocol tcp --dst-port 80:80 open-sg-web
  • KeyPair 생성
    이미 가지고 있는 키를 용하여 키쌍을 생성
    # openstack keypair create --public-key ~/.ssh/id_rsa.pub open-key
  • Floating IP 생성
    • 랜덤하게 ip 할당
      # openstack floating ip create external-network
  • 특정한 IP 할당
    # openstack router show router: 이미 사용중인 IP 확인해보기
    # openstack floating ip create --floating-ip-address 192.168.5.170 external-network

    openstack floating ip list
  • 전체 소스
    \# openstack floating ip create external-network
    \# openstack floating ip create --floating-ip-address 172.16.0.222 external-network
  • 인스턴스 생성 및 접속
    # 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

    • user-data httpd.file

      # vi httpd.file
      -----------------------------
      #!/bin/bash
      yum install -y httpd
      systemctl enable --now httpd
      -----------------------------
    • 유동 IP 할당
      # openstack floating ip list

      # openstack server add floating ip webserver 192.168.5.170

    • 할당한 유동 IP 로 접속
      # ssh -i .ssh/id_rsa centos@192.168.5.170

    • 전체 소스

      \# openstack server create --flavor m1.micro --image centos7 --security-group open-sg-web \
      --network internal-network --boot-from-volume 10 --key-name open-key --user-data httpd.file webserver
      \# openstack server list
      \# openstack floating ip list
      
      \# openstack server add floating ip webserver 192.168.5.170
      \# ssh -i .ssh/id_rsa centos@192.168.5.170
  • Volume 추가

    • 볼륨추가
      # openstack volume list; a로 끝나는 루트 볼륨만 존재

      # openstack volume create --size 1 web-add

    • 생성된 볼륨 조회
      # openstack volume list

    • 볼륨을 붙일 서버를 조회
      # openstack server list

    • 서버에 볼륨 추가
      # openstack server add volume webserver web-add

      서버로 접속 후 ssh -i .ssh/id_rsa centos@192.168.5.170
      lsblk 블록 볼륨 리스트 조회

      볼륨 포멧 sudo mkfs -t xfs /dev/vdb

      볼륨 마운트 sudo mount /dev/vdb /mnt/df -h

    • 전체 소스

    \# openstack volume create --size 1 web-add
    \# openstack volume list
    \# openstack server list
    \# openstack server add volume webserver web-add
    
    ## 서버로 접속
    \# ssh -i .ssh/id_rsa centos@192.168.5.170
    $ lsblk
    $ sudo mkfs -t xfs /dev/vdb
    $ sudo mount /dev/vdb /mnt/
    $ df -h
  • Ubuntu18

    • DB 보안 그룹 생성
      \# openstack security group create open-sg-db
      \# openstack security group rule create --protocol icmp open-sg-db
      \# openstack security group rule create --protocol tcp --dst-port 22 open-sg-db
      \# openstack security group rule create --protocol tcp --dst-port 3306 open-sg-db
    • DB 인스턴스 생성
      \# openstack server create --flavor m1.micro --image ubuntu18 --security-group open-sg-db \
      --network internal-network --boot-from-volume 10 --key-name open-key --user-data mysqld.file dbserver
      --- user-data mysqld.file
      # vi mysqld.file
      -----------------------------
      #!/bin/bash
      apt update -y
      yum install -y mariadb-server
      -----------------------------
    • floating ip 할당
      # openstack server add floating ip dbserver 192.168.5.180
      # openstack server list
    • DB 인스턴스 접속
      ssh -i .ssh/id_rsa ubuntu@192.168.5.180
  • DB 설치 Ubuntu

// MariaDB 설치
// DB가 없다면 수행
$ sudo cp /etc/apt/sources.list ~/sources.list.old
$ sudo sed -i 's/nova.clouds.archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
$ sudo apt-get update -y
$ sudo apt-get install -y mariadb-server

// 여기서 부터
$ sudo mysql_secure_installation
$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
#bind-address            = 127.0.0.1

$ sudo systemctl restart mysql
$ sudo mysql -u root -p
CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass';
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';
quit
  • 웹서버 설치 Centos
// 웹서버 설치
# wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
# sudo yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
# 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 restart httpd
# sudo systemctl enable httpd
# sudo vi /etc/selinux/config
SELINUX=enforcing -> diabled
profile
끄적끄적 쓰는곳

0개의 댓글