수명이 짧은 개인 VM을위한 기술


8

소프트웨어 구성 요소의 단기간 (CI 및 테스트 빌드)을 실행하는 시스템을 구축하려고합니다. 각각 개인 호스트에 있어야한다는 요구 사항에 따라 필수입니다. 반 가상화 옵션 을 포함하도록 그 정의를 취하고 있는데 , 그것이 많은 두통을 덜어주는 것처럼 보입니다.

나는 Mac에서 일하고 있기 때문에 거의 모든 기술, libvirtquemu 등이 작동하지 않습니다. 그러나 데비안에 배포 할 계획입니다. 호스트 시스템과 게스트 도메인의 프로비저닝을 스크립팅 할 수 있다면 데비안에서 실행되는 모든 것이 테이블에 다시 표시됩니다.

의도 한 설정은 데비안 설치 프로그램을 부트 스트랩하는 데 사용할 수 있다는 것입니다. 부팅시 머신이 자동으로 프로비저닝된다는 것을 의미해야합니다 (Chef, Puppet, Babushka, 실제로는 신경 쓰지 마십시오)-프로비저닝의 일부는 컨테이너 부팅에 사용할 수있는 템플릿 rootfs 컨테이너 자체도 프로비저닝해야하므로 컨테이너가 시작되면 작업이 수행해야하는 작업을 알고 작업을 수행 한 다음 종료 할 수 있습니다.

요컨대, 필요한 워크 플로는 다음과 같습니다.

  1. 머신을 부팅하거나 (가상 또는 다른 방식으로) 작동 준비를하십시오.
  2. 작업은 chef / puppet / babushka / etc가 설치 한 스크립트로 수행해야합니다.
  3. 작업이 시작되면 작업을 수행하기 위해 가상 머신을 시작해야합니다.
  4. VM은 작업을 수행하고 종료하고 리소스를 상위 / 호스트 시스템에 해제해야합니다. (적절한 하드웨어에서 최소 수백 개의 게스트 VM으로 확장하는 것이 중요합니다)

나는 다음을 시도한 시점에 왔으며 아래에 인라인 된 이유로 포기했습니다.

호스트 머신

  1. Instalinux (LinuxCOE 지원)가 포함 된 사전 시드 데비안 마이크로 ISO 이미지 ( 나쁜 : 전혀 작동하지 않음 ( "커널 모듈을 찾을 수 없음") 또한 사후 설치를위한 많은 범위를 허용하지 않으며 알려진 SSH 키, 호스트 키 등을 컴퓨터에 떨어 뜨립니다. 결국 잊고있는 것처럼 보이지만 결국에는 실행중인 컴퓨터가 있지만 액세스 할 수는 없습니다. .)
  2. 전 씨 데비안 ISO (네트워크 설치 나쁜 : 같은 문제 등을 제외하면, 위의 적어도 설치 ISO와 FTP 저장소 사이에 커널 차이가 없다로 일반적으로 완료 여전히 제한 범위를 후 설치하십시오.. 좋은 : 물론 신뢰성 및 반복, Mac 또는 베어 메탈 머신의 VM 기술 스택에 쉽게 던질 수 있지만 어디에서나 작동 할 수는 있지만 충분히 설치할 수는 없습니다 )
  3. rootfs를 구축하고, 부팅 가능한 하드 디스크 이미지로 컴파일의 다양한 방법 ( 잘못된는 : 작은 내가 작업 지옥으로 취약했다 얻을 수있는 어떤 실제 컴퓨터에 설치하기가 어려울 수, 그리고 복잡한 빌드 프로세스 인 것입니다. 좋은 : 만약 작동시킬 수 있습니다. 이것은 ssh 키, 호스트 키, 호스트 이름, Git에서 설치된 소프트웨어 등을 사용하여 지정된 사양으로 컴퓨터를 사전 구성하는 데 가장 큰 범위를 제공하는 것처럼 보이지만 질문은 패키지하는 방법입니다 배포 또는 레크리에이션 스크립트를 작성하는 방법. )

솔직히 사람들이 VM을 실행하고 작동하며 유용한 시스템으로 가져 오기 위해 어떤 기술을 사용해야하는지 잘 모르겠습니다. a) 운영 체제, b) 시스템 구성 (사용자 등) 및 c) 파일 시스템 변경과 같은 3 단계로 보입니다.

게스트 (가상) 머신의 경우 :

  1. 많은 것들, 주로 여기에 대한 대답은로 작성된 읽기 전용 rootfs debootstrap와이 특정 인스턴스 (작업 매니페스트)에 대해 수행 할 작업이 들어있는 LXC 컨테이너의 특수 파티션 이라고 생각합니다 . OS 빌드, 부팅, 사용자 생성, git에서 소프트웨어 체크 아웃 및 작업 수행에 대한 모든 일반적인 경고를 삽입하십시오.

어떤 도구를 사용해야하는지 잘 모르겠습니다. 문제가 잘 해결 된 것 같습니다. 그러나 나는 실제로 어디에서 시작해야하는지 알 수 없습니다.

대부분의 사람들은 가상화 기술을 선택하고 머신을 작동 상태로 부팅 한 다음 스냅 샷을 생성해야한다고 호스트 머신에 대해 제안하는 것 같습니다 (libvirt는 논리적으로 가장 좋아하는 것 같습니다). 스냅 샷을 사용하여 테스트 또는 프로덕션에 대한 후속 설치를 표시합니다.

게스트 컴퓨터의 경우 lxc는 컨테이너를 백그라운드로 지정하고 나중에 콘솔을 통해 컨테이너에 연결하는 것이 현재 커널에서 모두 끊어지고 안정적인 데비안에서 사용할 수있는 최신 버전의 lxc가 18 개월 이상이라는 것을 제외하고 가장 쉬운 옵션을 제공하는 것 같습니다 널리 사용되는 많은 기능이 부족합니다.

일반적으로 응용 프로그램 개발자이며 서버 수준 기술을 사용하지 않는 경우가 많으며 (SF가이 질문을 "너무 주관적"으로 표시 할 것이라고 확신하지만) 어떤 도구를 사용해야하는지 확실하지 않습니다.

마지막으로 나는 이것을 위해 Vagrant 상자를 사용하는 비슷한 스택 프로젝트 (travis-ci.org)를 알고 있습니다. 그것은 중요한 서비스 인프라에 사용되는 VM 테스트의 소규모 데스크톱 프로비저닝을 위해 설계된 다소 둔감 한 도구, 크고 느린 루비 지향 도구처럼 보이지만 그 중 일부를 알고 있으며 나보다 똑똑합니다. 아마 그들은 그냥 포기했을 것입니다.

도움을 주셔서 감사합니다.


정말 devops… 이것은 확실히 자동화 될 수 있습니다. 시스템 구축이 쉽습니다. 작업을 스크립팅하거나 선택한 구성 관리 도구를 사용할 수 있다고 가정합니다. 이러한 노력의 최종 목표 또는 결과에 대한 자세한 정보가 도움이 될 것입니다. 당신은 개인 클라우드 솔루션 또는 LXC와 같은 것을 사용하는 사이에 있습니다.
ewwhite

물론, 지점 내 팀과 I (Mac 사용자) 반복적으로 구축 할 수있는 방법으로 호스트를 구축 할 수있을 것입니다 호스트 우리가 LCX 손님으로 개발할 수, 내부를하지만, 빌드하는 방법으로 우리가 배포도 할 수 그것은 생산에. 우리 응용 프로그램의 툴링은 모두 루비로 작성되었으며, 손님을 위해 LXC를 사용하고 싶습니다. 호스트 시스템은 당연히 수명이 충분하지만 게스트의 일반적인 수명은 2-10 분이므로 전체 인프라는 매우 일시적입니다. 개발 대 생산 및 반복 가능한 프로세스에 관한 것입니다.
Lee Hambley

답변:


2

몇 가지 아이디어 :

  1. "합리적인 하드웨어에있는 수백 개의 VM"은 (개인 경험없이) 네트워크를 통해 부팅하거나 NFS를 통해 대부분의 볼륨 공간 (/ usr)을 공유하는 VM을 생각하게합니다. VM의 유사도에 따라 다릅니다.
  2. "내가 일할 수있는 작은 것은 지옥처럼 깨지기 쉬웠다"믿기 어렵다. 문제가 무엇인지 더 정확하게 설명 할 수 있습니까?
  3. "실제 컴퓨터에 설치하기 어려울 것입니다."VM 생성을 원하는 원 클릭 솔루션과 비교하여 "어려움"을 의미합니까? 나는 물을 것이다 : 이것은 얼마나 어려운가 그리고 얼마나 자주 일어날 것인가? 각각의 하드웨어에 대한 initrd를 재생성하는 차이점은 무엇입니까?
  4. "하지만 나는 그것을 충분히 후-설치할 수 없습니다"당신이 원하는 / 필요하고 왜 작동하지 않습니까? 부팅 프로세스의 스크립트 부분을 다운로드 할 수 있습니다. VM은 DHCP를 통해 IP를 가져오고 (VM의 MAC 주소로 하드 구성됨) Samba는 클라이언트의 IP 주소에 따라 다른 사후 설치 스크립트를 VM에 제공합니다.

네트워크 부팅의 경우 +1 이에 대한 전체 답변을 작성하기에 충분한 경험이 없지만 PXE 서버에서 부팅하여 물리적 및 가상의 수백 대의 시스템을 배포하는 장소에 있었다고 말할 수 있습니다. 즉, 각 VM마다 별도의 디스크 이미지를 사용하지 않아도됩니다.
Moshe Katz 2014

1

게시물을 읽는 동안 나는 방랑 플러그인이있는 방랑자와 젠킨스가 당신의 요구에 아주 잘 맞을 것이라고 생각했습니다. 실제로 말하고있는 VM의 수를 처리 할 수있는 모든 상자는 환경을 유지 관리하는 도구의 오버 헤드를 인식하지 않아야합니다.


0

애플과 데비안에서 작동하는 것을 사용하면 내가 시도한 유일한 것은 가상 상자입니다. virtualbox를 사용 하면 좋은 점 은 Mac 시스템에서 VM을 빌드하고 동일한 버전의 가상 상자를 사용하여 Debian 시스템에 복사하면 부팅됩니다.

가상 박스 사운드를 사용하는 수백 개의 vms는 vboxmange 인터페이스를 사용하여 각 vm에 필요한 고유 정보를 스크립팅하는 데 상당한 시간을 소비 합니다. 하드 드라이브의 UUID와 마찬가지로 네트워크 인터페이스의 Mac 주소.

기본 시스템이 동일한 방식으로 구성된 동일한 소프트웨어를 사용하려는 경우 가상 상자에서 시스템 의 스냅 샷 을 생성하여 정지시킬 수 있습니다. 따라서 고정 된 스냅 샷에 대한 변경 사항이 기록되지 않고 새로운 임시 저장 영역에 기록됩니다. 그런 다음 VM을 셧다운하고 스냅 샷으로 다시 복원 하면 테스트 중에 변경 한 사항없이 깨끗한 시스템으로 작업하고 있습니다. 이것은 vboxmange를 사용하여 스크립팅 할 수 있습니다 .

스냅 샷 을 사용하면 해당 VM 이미지의 수백 복사본을 만들 수도 있습니다. vboxmange 스크립팅 인터페이스를 사용하여 uuid 및 mac 주소와 같은 방식으로 고유 한 복사본을 만듭니다. 그런 다음 변경 사항, 테스트를 위해 VM에 적용해야하는 구성 또는 다양한 테스트를 실행하는 시작 스크립트 호출이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.