Cloud Solution Architect/Openstack

Openstack CLI 삭제 및 Web UI 구성 방법

YunHyeong 2023. 4. 10. 14:08

CLI 삭제 작업

cli-user 지우기

server 지우기

openstack server delete webserver  
openstack server delete dbserver

volume 지우기

  • 기본적으로 지울때 볼륨을 같이 지우지만 Openstack은 그렇지 않음
  • nova에서 disk 부분을 남김 -> 별도로 지울 필요가 있음
  • 같음 이름이 존재한다면 id로 지워야 한다

floating ip 지우기

openstack floating ip delete 192.168.5.\*

  • openstack floating ip list // floating ip 리스트 확인 openstack floating ip delete (ip address) // floating ip 지우기

  • -> 사실상 지운다기 보다는 해제하는 느낌 : ip할당을 취소하는 거지 그 ip를 지우는게 아니다

  • 라우터 지우기

  • 포트가 연결되어 있으면 지워지지 않음 포트에 인터페이스가 연결되어 있으면 지워지지 않음 인터페이스 -> 포트 -> 라우터순서로 지워야함

  • 기존 라우터 생성 작업과 반대로 해줌
라우터 생성작업
  • openstack router create router // 라우터 생성 openstack router set --external-gateway external-network router // 왼쪽에 external-network 연결 openstack router add subnet router internal-subnet // 오른쪽에 internal연결
  • 반대로 해줌
    openstack subnet delete internal-subnet // internal subnet 삭제
    openstack router unset --external-gateway router // 왼쪽에 external-network 연결 해제
    openstack router remove subnet router internal-subnet // internal-subnet을 router로부터 분리
    openstack router create router // 192.168.5.94
  • internal-netowrk 지우기
    openstack network delete internal-network // internal network 삭제
    -> 하위 개념에서 상위 개념으로 진행(생성했던 순서에 반대 개념으로 지운다)

admin 지우기

subnet 지우기

openstack subnet delete external-subnet

네트워크 지우기

openstack network delete external-network

flavor 지우기

![](https://blog.kakaocdn.net/dna/MFtgV/btr9eAzgcT9/AAAAAAAAAAAAAAAAAAAAANudXWMA2gdOaDqKHqrmFDSzE7sfa9Y9sqhmx9Cjpede/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=Y%2BDA%2B9ma7PkclPu3YAFEfpGNXK8%3D)
  • openstack flavor list openstack flavor delete 6(id)

  • user 지우기(서비스도 유저가 될 수 있음)

  • openstack user list openstack user delete e765eaa600e14b21a457d5d7bf1be84e(user id)

  • project 지우기

  • openstack project list openstack project delete cli-project(project이름) openstack project list

  • stack 지우기
    이전 실습에서 지웠기 때문에 openstack stack list를 하여도 나타나지 않았다

WEB-UI

admin의 역할

프로젝트 생성

인증 - 프로젝트  
![](https://blog.kakaocdn.net/dna/doLErI/btr891cSFpp/AAAAAAAAAAAAAAAAAAAAAND64hSNMXXw-lzivpzBce9odV-Pa51_USUqZadpGQsA/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=htfb0MkxRxxlQ592iKDpmVlAZXY%3D)

사용자 생성

인증 - 사용자  
![](https://blog.kakaocdn.net/dna/bXwJIY/btr9nIpcn3c/AAAAAAAAAAAAAAAAAAAAADbJQgwq6clmKMJNu8LURU35zx6TAOD6TGjUSUw-hqBd/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=7Bp7ISaXAmfSzdrFa3ayy03T5k8%3D)
-   도메인은 프로젝트의 상위 개념(회사)
    -   역할은 JSON으로 수동으로 만들 수 있지만 이미 만들어진 _member_ 활용
    -   detail하게 역할을 줄 수 있음

flavor 생성

관리 - compute - flavor  
![](https://blog.kakaocdn.net/dna/G9HYZ/btr9pdibouH/AAAAAAAAAAAAAAAAAAAAALWyM3bK3F5GcJFipag_QoZN3KYujHointRC2AoGiYjo/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=%2Br0jN4sOGQMp2SJBQpkk%2Fb%2F2eWc%3D)
-   이름 : flavor의 이름
-   ID : flavor의 ID
-   VCPUs : 가상 CPU의 갯수
-   RAM : RAM 용량
-   ROOT : 디스크 용량

외부 네트워크 생성(external-network)

-   external network 생성  
    ![](https://blog.kakaocdn.net/dna/ld9W5/btr9pbLrKHN/AAAAAAAAAAAAAAAAAAAAADHV6iS7l-DQ4e2MMQe5x7hGNSKuTDhKvTPh2COeWTxt/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=CIQOP7rj5xFjAJvVacy1voNayWY%3D)
-   이름 : network 이름
-   프로젝트 : 네트워크를 적용할 프로젝트 선택
-   네트워크 공급자 Flat : 단일 스위치에 연결하여 컴퓨터 네트워크의 라우터와 스위치 개수를 줄이는 방식. flat은 외부를 꾸며주는 공        급자, vxlan은 내부
-   물리적인 네트워크 : 처음 VMware에서 설정한 extnet 네트워크 활용 -> bridge 역할을 함
-   외부 네트워크로 사용하기 때문에 항목 체크
-   external subnet 생성  
    ![](https://blog.kakaocdn.net/dna/29FsG/btr9dYtkZvN/AAAAAAAAAAAAAAAAAAAAANI4Wm7iAf4i_1OOrN4JKdaeAVEe9W-4oH9U7OrjZeLD/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=kfwZU310mG1MLviu%2B0oEKt97jKk%3D)
-   서브넷 이름 : external\_subnet
-   네트워크 주소 : 사용할 대역대 적기
-   게이트 웨이 IP : 사용할 대역대의 첫번째 주소 활용
-   cli external network 생성
-   `openstack network create --project cli-project --provider-network-type flat \\ \-provider-physical-network extnet --external external-network`
-   cli external subnet 생성
-   `openstack subnet create --network external-network \\ \-project cli-project --subnet-range 192.168.0.0/21 \\ \-allocation-pool start=192.168.5.51,end=192.168.5.100 \\ \-gateway 192.168.0.1 --no-dhcp external-subnet`
  • web-user로그인
    • 아이디와 비밀번호 입력 후 로그인

      cli 로그인

  • cli-user Token 설정을 위해 파일 접근
    vi keystonerc\_cli-user  

Token 설정

    unset OS\_SERVICE\_TOKEN  
    export OS\_USERNAME=cli-user  
    export OS\_PASSWORD='Test1234!'  
    export OS\_REGION\_NAME=RegionOne  
    export OS\_AUTH\_URL=http:[http://192.168.1.92:5000/v3](http://192.168.1.92: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 생성

프로젝트 - 네트워크 - 네트워크
-   네트워크 이름 설정  
    ![](https://blog.kakaocdn.net/dna/ddJiyF/btr9n7Cwoho/AAAAAAAAAAAAAAAAAAAAAIWfyTB6wjVf_KSCZmZv9pgn3RtaP_8qkVjU9bNaJ_uJ/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=eZuwdq8oEYq1zIYlGGQqe%2FUMXu0%3D)
-   서브넷 생성  
    ![](https://blog.kakaocdn.net/dna/c9ov6E/btr9mkJmAk6/AAAAAAAAAAAAAAAAAAAAAFeSlpIyv0TCiShhukTlIjSBs_rmi_AD4o6kGu1BsGTE/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=yRzADMLGqNfEXaDpRM3miF78RWk%3D)
-   네트워크 주소 : 내부 네트워크에서 사용할 대역대로 설정
-   게이트 웨이 : 대역대에서 첫번째 주소로 한다
-   서브넷 세부정보 설정  
    ![](https://blog.kakaocdn.net/dna/bbuTd7/btr9kiSBP15/AAAAAAAAAAAAAAAAAAAAANRE2-dnGl--78p9-VavbMzVJMVIdl0r6lFMZ6D1rZjA/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=rCw1eC7bwzhQOzshdz2RoEf%2FiOs%3D)
-   DHCP 설정 이유 : 개인별로 네트쿼크 대역이 다르기 때문에 충돌날 일이 없음
-   8.8.8.8 : 구글의 DNS -> dns resolv : ping 입력시 접속할 ip의 주소를 물어보면 답해주는 역할

router 생성

프로젝트 - 네트워크 - 라우터  
![](https://blog.kakaocdn.net/dna/ceEom3/btr9kQIFOz0/AAAAAAAAAAAAAAAAAAAAADYd_6pulNensjiz19yvQdlY1K_R6DUuiPIRc31CarMw/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=pw%2FcLOn9WSVvXHhZ1nTAcIm0cxs%3D)
-   라우터 이름 : router
-   외부 네트워크 : external\_network 선택
-   라우터 인터페이스 추가  
    내부 서브넷과 연결을 위한 인터페이스를 생성한다  
    ![](https://blog.kakaocdn.net/dna/b8VVJy/btr9m9gntCv/AAAAAAAAAAAAAAAAAAAAAFNElrEqOgMN7mLcJvEzrv0BKnxuVwbJFY6X4HJv6wYu/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=yHh%2FVXtrdu6CqCN970RmZpWG944%3D)
-   cli 라우터 인터페이스 생성(서브넷 추가)  
    프로젝트 - 라우터 - 라우터 선택 - 인터페이스 생성
-   `openstack router create router openstack router set --external-gateway external-network router openstack router add subnet 
router internal-subnet`

보안그룹 생성

프로젝트 - 네트워크 - 보안그룹

+   webserver 보안 그룹

![](https://blog.kakaocdn.net/dna/t4lZT/btr9mSy4ygN/AAAAAAAAAAAAAAAAAAAAAHtVruknCcXIDKiT-bNTTTO4o9mXHrpozrAA-3LfrScr/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=mCJtlflCR1S8kVCZZ0uCt2dwhB4%3D)
-   HTTP  
    ![](https://blog.kakaocdn.net/dna/mvh3W/btr9nneyWj0/AAAAAAAAAAAAAAAAAAAAAHWGTbZxDC5U-0sMCOM_gJgqSllkvoRLhPmnyruVJrFN/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=cL3Q%2Bi%2FC5f6V64pD5NhypEjNE2s%3D)
-   SSH  
    ![](https://blog.kakaocdn.net/dna/FL8Fa/btr9qCB10XE/AAAAAAAAAAAAAAAAAAAAADIjw3o3CjgeGnlG4eRle5_5JoKzjTnvc3Z_hG5qCvAL/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=j6I2KH19pJ7%2BZehwL7ZU1%2BxHpw4%3D)
-   cli 보안그룹 생성
-   `openstack security group create open-sg-web(보안그룹 이름) openstack security group rule create --protocol icmp --ingress open-sg-web // icmp -> ping을 위해 열어준다 openstack security group rule create --protocol tcp --dst-port 22:22 open-sg-web // ingress는 디폴트, 22:22 : 22번부터 22번까지 openstack security group rule create --protocol tcp --dst-port 80:80 open-sg-web`
+   db 보안그룹 생성  
    ![](https://blog.kakaocdn.net/dna/yX8yC/btr9n7WSH7p/AAAAAAAAAAAAAAAAAAAAAKu_BQCfbCmkMTY6ZnzTwA-RtqFOU45l7__6HEptvmjg/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=oZuY9%2FlmLC8tjBq4eEfbeTsJ5Cs%3D)
    -   SSH  
        
- MYSQL(MariaDB) ![](https://blog.kakaocdn.net/dna/ASoQk/btr9kPQw3NM/AAAAAAAAAAAAAAAAAAAAAJCuyIN9tn6dkyfY2V2xFbQ4T21D3PIf8XoHIgNgMGbL/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=e11KfkyPZ7MU%2FGgX%2Fylz7UNlRPM%3D) - cli db 보안그룹 생성 - `openstack security group create open-sg-db openstack security group rule create --protocol icmp --ingress open-sg-db // icmp openstack security group rule create --protocol tcp --dst-port 22:22 open-sg-db // ingress는 디폴트, 22:22 : 22번부터 22번까지 openstack security group rule create --protocol tcp --dst-port 3306 open-sg-db // 3306 : mariadb 포트 번호`

키페어 생성

프로젝트 - Compute - 키 페어  
![](https://blog.kakaocdn.net/dna/dsLA7L/btr8ZU6mNlb/AAAAAAAAAAAAAAAAAAAAAERnzjr2AMX2XtDzezhuZFA1cG5R2VWQLVp85D7Oqd0f/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=j1eRoOtJqgndbo6Bokh5AsmbKkk%3D)
-   cli 키페어 생성

    ```
    openstack keypair create --public-key ~/.ssh/id_rsa.pub open-key
    ```

floating ip 생성

프로젝트 - 네트워크 - floating ip  
![](https://blog.kakaocdn.net/dna/dDC3SL/btr9n7ihxCk/AAAAAAAAAAAAAAAAAAAAANZ8_c5nVUvRB7uwD9jj_1Z6pLExYQZXFHSd_PLeIJop/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=n0NBamKxnV0MAsa8qIguHxFP8U0%3D)

-   floating ip를 임의로 만든다
-   특정한 ip를 지정해서 할당할 수 있는 기능은 없다

![](https://blog.kakaocdn.net/dna/bCakyA/btr9pqu7qGd/AAAAAAAAAAAAAAAAAAAAALwSyTYyMXDCuSUXeHEWbT9QV83QOF69FDU9-9-3jlWc/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=HHij%2B7A2vwSUYtsXKs9qYsw20io%3D)
-   3개 정도의 floating ip를 생성
-   cli floating ip 생성
```
    openstack floating ip create external-network // 192.168.5.99을 만듬  
    openstack subnet show external-subnet  
    openstack floating ip create --floating-ip-address 192.168.5.71 external-network // 특정한 IP를 지정해서 만듬
```

db 인스턴스 생성

-   인스턴스 세부정보  
    
- 인스턴스 소스
- 인스턴스 삭제시 볼륨 삭제를 "예"로 해줘야 인스턴스 지울 때 볼륨이 지워짐
- 인스턴스 flavor


- 인스턴스 network


- 인스턴스 보안그룹



-   부팅 중일 때는 Ping이 안나감 (콘솔 확인 필요)
  • cli db 인스턴스 생성

    • user-data mysqld.file // user-data를mysqld.file로 정의; 데몬 파일을 만드는 것

      vi mysqld.file
      !/bin /bash  
      apt update  
      apt install -y mariadb-server  
```

* mysqld.file 파일을 활용

```
```
    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
```

저번 실습 때는 DB 서버에 public ip를 줬지만, 현실에서는 보안상의 이유로 DB 서버에 안주려는 경향이 있기 때문에 public ip를 안줌  
-> webserver를 Bastion host로 하여 dbserver에 접근

Orchestraion

-   프로젝트 - Orchestraion - 템플릿 생성기
-   Chrome에서는 아이콘 드래그가 안되기 때문에 Firefox로 이동

![](https://blog.kakaocdn.net/dna/b1gh4r/btr9qBQJS6U/AAAAAAAAAAAAAAAAAAAAAEH76FvqBQTT7UVSGuDxtFaKuRw0nnutiLItnlCFaG_O/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=fG3p7Ap%2FFF60e4jjnt%2BTHeTmdHI%3D)  
![](https://blog.kakaocdn.net/dna/12MgL/btr88qKFjRt/AAAAAAAAAAAAAAAAAAAAAGCxkLI5Q2H1LEtNVqHvxR7Onza9mFSYK5sXv2sM6mQs/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=ugJFW0QeZMNv4Fp4GLiK8RMi4KM%3D)  
![](https://blog.kakaocdn.net/dna/NhCY9/btr9kPiP2d4/AAAAAAAAAAAAAAAAAAAAAL-K8IMZrnQvQodIAjUqC2FdacDkwTF1n0pMvUEnd4PD/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=HgT6QZWWlfEA5cTYVM0XI%2FWdKZU%3D)  
![](https://blog.kakaocdn.net/dna/OB5zM/btr9mORbxmo/AAAAAAAAAAAAAAAAAAAAAJ_vbB0TwBI95ZfgBUbZo6oWJIIVZw4GM4Vvl2wqpnuU/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=zghQqE7xWQtmm6x%2BH%2B226FGc5jA%3D)  
![](https://blog.kakaocdn.net/dna/E1A1L/btr9pp36pLH/AAAAAAAAAAAAAAAAAAAAAAtix0vVFVQeYXbEgrFmsp60v_t3-6R9l2LdhLfbtEaR/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=EQaOgZISa7fJz9fBhKW19aJQy%2Fo%3D)
-   resource  
    type : vm 타입  
    properties : 속성 -> 서버를 만들기 위한 구체적인 속성이 들어있음  
    들여쓰기에 따라 계층이 나눠짐
  • yaml 파일 다운로드 후 스택 생성
    • 다운 받은 yaml 파일 긁어오기
  • 스택 생성시 user의 pw 입력
  • webserver에 유동 ip 할당
    • webserver에 floating ip 하나를 연결
  • mobaXterm으로 webserver접근
  • db서버를 위한 탭 복제 후 키업로드
  • chmod로 권한 변경 후 db서버 접속
  • chmod 400 open-key.pem // 정확하진 않음
  • db서버 접근 완료
  • sudo apt update -y
  • 웹 서버에서 사용할 볼륨 생성

    • 볼륨 webserver에 연결
  • mpunt
  • lsblk sudo mkfs -t ext4 /dev/vdb sudo mount /dev/vdb /mnt df -h

'Cloud Solution Architect > Openstack' 카테고리의 다른 글

Openstack 활용  (0) 2023.04.05