728x90
반응형

  이하의 정보는 Ubuntu VM상에서 OpenStack의 개발 버전인 DevStack을 설치하는 방법을 다룹니다.
 본 정보는 이하의 웹 페이지의 내용을 기반으로 이동하여 작성되었을을 밝히며 문제가 될 경우에는 삭제될 수 있습니다.

https://ubuntu.com/openstack/install

 

Install OpenStack yourself on Ubuntu. | Ubuntu

A step-by-step guide to OpenStack installation. You only need your workstation to get started.

ubuntu.com

단일 노드 VM에 MicroStack 설치하기

MicroStack은 OpenStack의 단일 구현체로서 쉽게 설치하고 관리하기 쉽게 만들어 줍니다. MicroStack 홈페이지에서는 OpenStack의 모든것을 제공해 주지는 못하지만 일반적인 테스트나 개발을 위해서는 사용할 수 있으며 특히 Kubernetes와 함께 사용하기에 적합한 구현체라고 소개 하고 있습니다. 현재의 MicroStack은 베타 버전이므로 테스트 용도로만 사용하는 것이 적합하며 실제 서비스에 이를 이용하는 것은 지양하기 바란다. 

 PS. OpenStack의 테스트 환경으로 DevStack과 MicroStack 두가지를 사용할 수 있다. 이는 사용자의 선택의 문제이다. 다만 DevStack은 릴리즈 된지 오래된 관계로 다양한 문제가 있으며 실제 OpenStack을 배포하는 용도로도 사용할 수 있다고 한다.

설치

Microstack은 snap 명령어를 이용하여 간편하게 설치 가능하다.

Requirements:
Ubuntu 18.04 LTS or Ubuntu 20.04 LTS 가 실행되고 있는 8GB 이상의 메모리와 100GB의 디스크 공간을 가진 다중 코어 VM이나 물리 서버에서 동작 한다.

먼저 snap을 베타 채널로 해서 microstack을 설치한다.. (snap은 ubuntu의 패키지 설치기로 기본으로 설치되어 있을것이다. 설치 되어 있지 않다면 검색을 통해서 수동으로 설치 한다.)

sudo snap install microstack --beta

snap에 등록된 microstack의 버전을 확인한다.

snap list microstack
Name        Version  Rev  Tracking     Publisher   Notes
microstack  ussuri   245  latest/beta  canonical✓  -

 

 실제 microstack의 설치는 아래의 명령어를 통해서 간략하게 초기화 하는것으로 설치가 완료 된다. 모든 설정은 자동으로 구성된다.

sudo microstack init --auto --control


% 위와 같이 설치할 경우 cinder의 디바이스 할당이 설정되지 않아서 볼륨생성이 되지 않는다. 이럴 경우 다른 이미지를 제대로 올릴수 없기 때문에 아래와 같이 설치한다.

sudo snap install microstack --devmode --beta

sudo microstack init --auto --control --setup-loop-based-cinder-lvm-backend \
  --loop-device-file-size 50

sudo tee /var/snap/microstack/common/etc/cinder/cinder.conf.d/glance.conf <<EOF
[DEFAULT]
glance_ca_certificates_file = /var/snap/microstack/common/etc/ssl/certs/cacert.pem
EOF

sudo snap restart microstack.cinder-{uwsgi,scheduler,volume}

  위의 명령어들은 베타와 개발 모드로 설치하고 초기화 할때 Cinder Loop Device 를 지원하고 50GB를 할당하도록 설정한다.

 

Instance의 실행

  이제 설치가 되었으므로 간단하게 microstack의 Instance를 만들어 보겠다. 조건은 아래와 같다.

  • keypair ‘microstack’
  • flavor ‘m1.tiny’
  • floating IP address on subnet ‘10.20.20.0/24’

To create an instance named ‘test’ based on the ‘cirros’ image:

microstack launch cirros -n test

The microstack launch command also supports arguments --key, --flavor, --image, and --net-id, in which case you will need to create objects using the standard client if non-default values are desired.

실제 만들어진 Instance를 UI에서 조회하면 아래와 같이 생성되어 있다.

 

 위와 같은 경우 아래의 명령어를 통해서 해당 인스턴스에 접속할 수 있다.

Access the instance using the private SSH key associated with the default keypair:

ssh -i /home/ubuntu/snap/microstack/common/.ssh/id_microstack cirros@10.20.20.199
sokoban@k8smaster1:~/snap/microstack/common/.ssh$ ssh -i /home/sokoban/snap/microstack/common/.ssh/id_microstack cirros@10.20.20.49

The authenticity of host '10.20.20.49 (10.20.20.49)' can't be established.
ECDSA key fingerprint is SHA256:0127VyiAjGhpTU5E+Zl8CEWoA6FJcPMc/1a2pkWqAxU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.20.20.49' (ECDSA) to the list of known hosts.
sign_and_send_pubkey: no mutual signature supported
cirros@10.20.20.49's password:

위와 같이 패스워드 입력창이 나올 경우에는 아래와 같이 입력하면 접속할 수 있다. ( -o "PubkeyAcceptedKeyTypes +ssh-rsa" 추가)

sokoban@k8smaster1:~/snap/microstack/common/.ssh$ ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -i /home/sokoban/snap/microstack/common/.ssh/id_microstack cirros@10.20.20.49
$

OpenStack 대시보드에 접속 하기

위의 설치 과정을 완료 하였다면 이제 OpenStack의 대시보드 UI에 접속할 수 있다.

https://10.20.20.1

사용자 이름은 'admin' 이고 패스워드는 아래의 명령어를 CLI에 입력하면 패스워드를 얻을수 있다.

sudo snap get microstack config.credentials.keystone-password
OAEHxLgCBz7Wz4usvolAAt61TrDUz6zz

 

이미지 추가하기

 기본으로 Microstack을 설치하면 CirrOS라는 리눅스 배포판이 포함되어 있는 다만 이는 최소화된 리눅스 배포판으로 실제 구성을 테스트 하기에는 부족함이 있다. 그러므로 이미지를 추가해 준다.

  https://docs.openstack.org/image-guide/obtain-images.html

 

Get images — Virtual Machine Image Guide documentation

Get images The simplest way to obtain a virtual machine image that works with OpenStack is to download one that someone else has already created. Most of the images contain the cloud-init package to support the SSH key pair and user data injection. Because

docs.openstack.org

  이미지는 위의 사이트에서 찾을수 있으므로 본인이 원하는 이미지로 다운로드 한다.
이번 자료에서는 CentOS 8버전을 사용하고자 한다. 이미지 크기가 가장 작은 걸로 선택 하여 다운로드 해본다.

sokoban@k8smaster1:~$ wget https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-GenericCloud-8.1.1911-20200113.3.x86_64.qcow2

다음으로 이미지를 생성한다.

root@k8smaster1:/home/sokoban# microstack.openstack image create --container-format bare --disk-format qcow2 --file CentOS-8-GenericCloud-8.1.1911-20200113.3.x86_64.qcow2  CentOS8.1

이미지 생성 에러 처리

[Errno 13] Permission denied: 'CentOS-8-GenericCloud-8.1.1911-20200113.3.x86_64.qcow2'

위와 같은 이미지가 나올경우에는 microstack에서 이미지 파일을 읽을수 있는 위치에 넣어 주어야 한다.
다운로드 받은 이미지 파일을 /var/snap/microstack/common/images 로 이동한 다음에 명령을 내려 준다. 

위와 같이 생성된 이미지를 인스턴스로 띄울때는 아래의 명령어로 띄울수 있다.

microstack launch CentOS8.1 -n test2 -f ma.small

 

이미지의 기본 지식

QCOW2 형식의 가상 머신 스토리지

QCOW2는 가상 머신 디스크 이미지의 저장 형식입니다. QCOW는 QEMU copy on write의 약자입니다. QCOW2 형식은 논리 블록과 물리적인 블록 사이에 매핑을 추가하여 가상 계층으로부터 물리적인 스토리지 레이어를 분리합니다. 각 논리 블록은 물리적 오프셋에 매핑되어서 스토리지 초과 할당 및 가상 머신 스냅샷을 사용 가능하게 하며, 여기서 각 QCOW 볼륨은 기반 디스크 이미지의 변경 내용만 보여줍니다.
초기 매핑을 통해 모든 논리 블록이 지원 파일 또는 지원 볼륨에 있는 오프셋과 연결됩니다. 가상 머신이 스냅샷 후 QCOW2 볼륨에 데이터를 쓰면 지원 볼륨에서 관련 블록을 읽고 새 정보로 수정한 후 새 스냅샷 QCOW2 볼륨에 쓰기합니다. 이를 통해 맵은 새 장소로 연결되도록 업데이트됩니다.

RAW

RAW 스토리지 형식으로 저장된 가상 머신 디스크 이미지에는 형식이 적용되지 않는다는 점에서 QCOW2보다 성능면에서 우월합니다. RAW 형식으로 저장된 디스크 이미지를 사용하여 가상 머신 데이터 작업 시 호스트에서 추가적인 작업을 할 필요가 없습니다. 가상 머신이 가상 디스크에서 주어진 오프셋에 데이터를 쓰면 이러한 I/O는 지원 파일 또는 논리 볼륨의 같은 오프셋에 쓰기됩니다.
Raw 형식의 경우 저장 장치 어레이(storage array)에서 외부에서 관리되는 씬 프로비저닝된 LUN을 사용하지 않는 한 정의된 이미지의 전체 공간이 사전 할당되어야 합니다.

https://access.redhat.com/documentation/ko-kr/red_hat_virtualization/4.0/html/technical_reference/qcow2

기타

Microstack 설정 파일

 만약 설정 파일을 변경해야 할 일이 있다면 Microstack 설치이후 설정 파일은 아래의 위치에서 찾을수 있다.

/snap/microstack/245/etc

Microstack 재시작 하기

재시작이 필요한 경우 아래와 같은 명령어를 이용하여 재시작 할 수 있다.

systemctl restart snap.microstack.nova-compute.service

 

Microstack 삭제하기

삭제가 필요한 경우 아래의 명령어로 삭제 할 수 있다.

sudo snap remove microstack

 

Microstack Error 들 모음

1.  Unable to create a new session key. It is likely that the cache is unavailable. 에러

  OpenStack중에서 memcached에서 발생하는 에러이다. 발생하면 VM을 재시작 하는것으로 해결은 가능하나 근본적인 해결책은 아님
VM의 suspend 모드를 자주 사용할 경우 세션키의 문제로 발생함

 

Error: Failed to perform requested operation on instance "test2", the instance has an error status: Please try again later [Error: Build of instance d699f986-24f3-485d-8063-ef46b64736d2 aborted: Volume cbad7ea8-a247-4c75-bf92-58eccfb10cb8 did not finish being created even after we waited 28 seconds or 10 attempts. And its status is error.].

Error: Failed to perform requested operation on instance "test2", the instance has an error status: Please try again later [Error: Build of instance 8ee77d2f-6341-4251-86eb-86683816594b aborted: Volume 527b54e7-9de0-47e6-8adc-0a1ab51cf14c did not finish being created even after we waited 3 seconds or 2 attempts. And its status is error.].

https://discourse.charmhub.io/t/microstack-invalid-image-identifier-or-unable-to-access-requested-image-http-400/5643

 

Microstack - Invalid image identifier or unable to access requested image. (HTTP 400)

I can create volumes and virtual machines if i leave the create new volume box unticked, then i create a volume and map it manually and it works fine. But if i try and create a volume from an image it errors out giving me - Invalid image identifier or unab

discourse.charmhub.io

 

참고 사이트

DevStack의 설치는 아래를 참고한다.

https://docs.openstack.org/devstack/latest/

 

DevStack — DevStack documentation

DevStack DevStack is a series of extensible scripts used to quickly bring up a complete OpenStack environment based on the latest versions of everything from git master. It is used interactively as a development environment and as the basis for much of the

docs.openstack.org

https://www.youtube.com/watch?v=0ds2Bs9CZss

https://discoposse.com/2014/01/26/openstack-havana-all-in-one-lab-on-vmware-workstation/

 

OpenStack Havana All-in-One lab on VMware Workstation | DiscoPosse.com

With all of the popularity of OpenStack in general, and specifically with my other posts on deploying the Rackspace Private Cloud lab on VMware Workstation, I think it’s time for me to update with a new lab build for everyone. This lab build process will

discoposse.com

https://delightwook.tistory.com/40

 

오픈스택 연구하기 : Devstack으로 오픈스택 빠르게 설치하기

오픈스택 연구하기 : Devstack으로 오픈스택 빠르게 설치하기 안녕하세요 김민욱입니다. 이번 포스팅에서는 Devstack을 이용해서 오픈스택을 빠르게 구축해보겠습니다. Devstack은 오픈스택을 설치하

delightwook.tistory.com

https://opendev.org/x/microstack

 

microstack

OpenStack in a snap!

opendev.org

 

728x90
반응형
728x90
반응형

 Docker 이미지로 제공되는 Kali linux 사용하기

 

 

https://www.kali.org/docs/containers/official-kalilinux-docker-images/

 

Official Kali Linux Docker Images | Kali Linux Documentation

Kali provides official Kali Docker images that are updated once a week on Docker Hub. You can thus easily build your own Kali containers on top of those that we provide. We offer various images to try and suit your needs, all with a different variation of

www.kali.org

 

설치하기

 도커의 설치는 docker pull 로 이미지를 먼저 내려 받는다.

host$ docker pull docker.io/kalilinux/kali-rolling

컨테이너의 shell 접속하기

host$ docker run --tty --interactive kalilinux/kali-rolling

최초 설치 될 경우 Kali Linux의 기본 패키지가 함께 제공되지 않기 때문에 설치를 해야 한다.

docker# sudo apt full-upgrade -y
docker# sudo apt install -y kali-linux-default. 혹은 kali-linux-headless 

기본 설치가 완료 되었다면 아래 목록에서 원하는 패키지를 설치 한다. 나는 먼저 정보 수집 툴을 설치해 보겠다.

docker# apt install kali-tools-information-gathering

설치 하고자 하는 패키지는 아래를 참고한다.

System

  • kali-linux-core: Base Kali Linux System – core items that are always included
  • kali-linux-headless: Default install that doesn’t require GUI
  • kali-linux-default: “Default” desktop (amd64/i386) images include these tools
  • kali-linux-arm: All tools suitable for ARM devices
  • kali-linux-nethunter: Tools used as part of Kali NetHunter

Desktop environments/Window managers

  • kali-desktop-core: Any key tools required for a GUI image
  • kali-desktop-e17: Enlightenment (WM)
  • kali-desktop-gnome: GNOME (DE)
  • kali-desktop-i3: i3 (WM)
  • kali-desktop-kde: KDE (DE)
  • kali-desktop-lxde: LXDE (WM)
  • kali-desktop-mate: MATE (DE)
  • kali-desktop-xfce: Xfce (WM)

Tools

  • kali-tools-gpu: Tools which benefit from having access to GPU hardware
  • kali-tools-hardware: Hardware hacking tools
  • kali-tools-crypto-stego: Tools based around Cryptography & Steganography
  • kali-tools-fuzzing: For fuzzing protocols
  • kali-tools-802-11: 802.11 (Commonly known as “Wi-Fi”)
  • kali-tools-bluetooth: For targeting Bluetooth devices
  • kali-tools-rfid: Radio-Frequency IDentification tools
  • kali-tools-sdr: Software-Defined Radio tools
  • kali-tools-voip: Voice over IP tools
  • kali-tools-windows-resources: Any resources which can be executed on a Windows hosts
  • kali-linux-labs: Environments for learning and practising on
  • kali-tools-information-gathering: Used for Open Source Intelligence (OSINT) & information gathering
  • kali-tools-vulnerability: Vulnerability assessments tools
  • kali-tools-web: Designed doing web applications attacks
  • kali-tools-database: Based around any database attacks
  • kali-tools-passwords: Helpful for password cracking attacks – Online & offline
  • kali-tools-wireless: All tools based around Wireless protocols – 802.11, Bluetooth, RFID & SDR
  • kali-tools-reverse-engineering: For reverse engineering binaries
  • kali-tools-exploitation: Commonly used for doing exploitation
  • kali-tools-social-engineering: Aimed for doing social engineering techniques
  • kali-tools-sniffing-spoofing: Any tools meant for sniffing & spoofing
  • kali-tools-post-exploitation: Techniques for post exploitation stage
  • kali-tools-forensics: Forensic tools – Live & Offline
  • kali-tools-reporting: Reporting tools

Others

  • kali-linux-large: Our previous default tools for amd64/i386 images
  • kali-linux-everything: Every metapackage and tool listed here
  • kali-desktop-live: Used during a live session when booted from the image

 

설치와 사용을 완료 하였다면 exit 로 나오면 된다.

사용하기

설치를 하고 나서 exit 로 나온 이후에 다시 접속 하고자 할 경우 "docker run --tty --interactive kalilinux/kali-rolling" 명령어로 접속할 경우 새로운 kali-rolling 컨테이너가 뜨고 이전에 설치한 컨테이너는 사용이 불가능 하다. 이전에 설치한 도커 컨테이너를 이용하고자 하는 경우 아래와 같이 사용한다.

kali@kali:~$ docker container list --all
CONTAINER ID   IMAGE                    COMMAND       CREATED         STATUS                          PORTS     NAMES
d36922fa21e8   kalilinux/kali-rolling   "/bin/bash"   2 minutes ago   Exited (0) About a minute ago             lucid_heyrovsky
kali@kali:~$
kali@kali:~$ docker start d36922fa21e8
kali@kali:~$ docker attach d36922fa21e8

  위와 같이 할 경우 이전에 접속하였던 도커 컨테이너에 그대로 접속하여 설치된 명령어의 사용이 가능하다.
  실제 Kali의 명령어들은 아래를 참고한다.

https://www.kali.org/tools/

 

Kali Tools | Kali Linux Tools

Home of Kali Linux, an Advanced Penetration Testing Linux distribution used for Penetration Testing, Ethical Hacking and network security assessments.

www.kali.org

 

728x90
반응형

'보안' 카테고리의 다른 글

해외 임시 핸드폰 번호, 해외 무료 SMS 받기  (1) 2020.03.24
데이터 연계/결합의 개념  (0) 2020.03.01
일회용 메일 주소  (0) 2018.06.25
728x90
반응형

  구글 엔지니어 하이럼이 이야기 하는 법칙

https://www.hyrumslaw.com/

 

Hyrum's Law

Hyrum's Law An observation on Software Engineering Put succinctly, the observation is this: With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by som

www.hyrumslaw.com

소프트웨어 엔지니어링의 관찰

API 사용자가 충분 하면 명세서에 약속된 내용이 중요하지 않습니다.
시스템에서 관찰할 수 있는 모든 동작은 누군가에 의해 좌우됩니다.

지난 몇 년 동안 지구상에서 가장 복잡한 소프트웨어 시스템 중 하나에서 저수준 인프라 마이그레이션을 수행하면서 인터페이스와 구현 간의 차이점에 대해 몇 가지 관찰했습니다. 우리는 일반적으로 인터페이스를 시스템과 상호 작용하기 위한 추상화(예: 자동차의 스티어링 휠 및 페달)로 생각하고 구현은 시스템이 작동하는 방식(바퀴 및 엔진)으로 생각합니다. 이것은 여러 가지 이유로 유용합니다. 그 중 가장 중요한 이유는 가장 유용한 시스템이 한 개인이나 그룹이 완전히 이해하기에는 너무 복잡해지며 추상화는 그 복잡성을 관리하는 데 필수적입니다.

정확한 추상화 수준을 정의하는 것은 완전히 별개의 논의이지만(Mythical Man-Month 참조), 우리는 추상화가 정의되면 구체적이라고 생각하는 것을 좋아합니다. 다시 말해, 인터페이스는 이론적으로 시스템 소비자와 구현자를 명확하게 구분해야 합니다. 실제로, 이 이론은 시스템의 사용이 증가하고 사용자가 인터페이스를 통해 의도적으로 노출되거나 정기적인 사용을 통해 확인하는 구현 세부 사항에 의존하기 시작하면서 무너집니다. Spolsky의 "Leaky Abstractions의 법칙"은 내부 구현 세부 사항에 대한 소비자의 의존성을 구현합니다.

논리적으로 극단으로 치면 구어체로 "암시적 인터페이스의 법칙"이라고 하는 다음과 같은 관찰 결과가 나타납니다. 충분히 사용하면 비공개 구현과 같은 것은 없습니다. 즉, 인터페이스에 충분한 소비자가 있으면 의도적이든 아니든 구현의 모든 측면에 집합적으로 의존하게 됩니다. 이 효과는 구현에 대한 변경을 제한하는 역할을 합니다. 이제 명시적으로 문서화된 인터페이스와 사용에 의해 캡처된 암시적 인터페이스를 모두 준수해야 합니다. 우리는 종종 이 현상을 "버그 대 버그 호환성"이라고 합니다.

암시적 인터페이스의 생성은 일반적으로 점진적으로 이루어지며 인터페이스 소비자는 일반적으로 이러한 일이 진행되는 동안 인식하지 못합니다. 예를 들어, 인터페이스는 성능에 대해 보장하지 않을 수 있지만 소비자는 종종 구현에서 특정 수준의 성능을 기대하게 됩니다. 이러한 기대는 시스템에 대한 암시적 인터페이스의 일부가 되며 시스템의 변경 사항은 소비자를 위해 계속 기능하기 위해 이러한 성능 특성을 유지해야 합니다.

모든 소비자가 동일한 암시적 인터페이스에 의존하는 것은 아니지만 충분한 소비자가 주어지면 암시적 인터페이스는 결국 구현과 정확히 일치합니다. 이 시점에서 인터페이스는 증발했습니다. 구현이 인터페이스가 되었으며, 인터페이스에 대한 변경 사항은 소비자의 기대를 위반하게 됩니다. 운이 좋으면 광범위하고 포괄적이며 자동화된 테스트를 통해 이러한 새로운 기대치를 감지할 수 있지만 개선할 수는 없습니다.

암시적 인터페이스는 대규모 시스템의 유기적 성장으로 인해 발생하며 문제가 존재하지 않기를 바랄 수도 있지만 설계자와 엔지니어는 복잡한 시스템을 구축 및 유지 관리할 때 이를 고려하는 것이 현명합니다. 따라서 암시적 인터페이스가 시스템 설계와 발전을 어떻게 제한하는지 알고, 합리적으로 널리 사용되는 시스템의 경우 인터페이스가 생각보다 훨씬 더 깊숙이 도달한다는 것을 알고 있습니다.

728x90
반응형

+ Recent posts