작업 개발자 환경과 가정 사용자 환경을 효과적으로 분리하려면 어떻게해야합니까? 이전에,하지만 지금은 내 시스템에 설치되는 기본

내가 사용하는 python-virtualenv파이썬 도구에 대해 이전에,하지만 지금은 내 시스템에 설치되는 기본 도구를 많이 필요로하는 새로운 원격 작업을 발견했습니다. 문제는 작업 개발자 환경과 가정 사용자 환경을 어떻게 분리 할 수 ​​있습니까?

예를 들어 opencv많은 환경 변경이 필요한 설치 가 필요하지만 시스템에서 이러한 변경 사항을 항상 유지하고 싶지 않으며 다른 환경에서 변경 (및 원격 작업에 필요한 모든 소프트웨어)을 설정하고 싶습니다. 필요할 때 사용할 수 있습니다. 내 마음에 오는 첫 번째 것은의 간단한 사용입니다 chroot. 그러나 어쩌면 내가 모르는 멋진 관행이 존재할 수 있습니까?

나는 chroot를 많이 사용하지 않았기 때문에 내가 묻는 이유입니다.



답변

다음 도구 중 하나를 제안합니다.

도커

또는

LXC

나는 최근에 그것을 발견했을 때 여전히 Docker를 배우고 있지만 Docker가 개발자를 위해 만들어진 도구라는 것을 깨닫는 데 오래 걸리지 않습니다. 스핀하고 즐기십시오! 그리고 Docker는 환경 변수를 통해 구성 할 때 흔들립니다.

나는 LXC 도구를 사용했지만 꽤 괜찮지 만 개발을 위해서는 많은 설정 작업이 필요합니다. 그리고 chroots는 더 많은 작업을 필요로합니다. 개발 포커스에서 벗어납니다. 그리고 그들은 매우 이식성이 없습니다.

또한 Vagrant를 살펴볼 수도 있습니다.

내가 새로운 것이기 때문에 여기에 많은 링크를 게시 할 수 없지만 Vagrant는 너무 인기가 있습니다 .Google 검색에 입력하면 첫 번째 또는 두 번째 결과가됩니다.

“가벼우면서도 재현 가능한 휴대용 개발 환경을 만들고 구성하십시오.”

또한 Vagrant는 다양한 가상 머신 또는 컨테이너 환경에서 작동합니다. 하나의 명령 “vagrant up”으로 가상 개발 환경을 만드는 도구로 생각하십시오. 그리고 Linux에만 국한되지 않으며 Linux, Mac OS 및 Windows에서 작동합니다 (정확히 동일합니다!).

Docker 및 / 또는 Vagrant를 언급하지 않아도 Dockerfile 또는 Vagrantfile을 버전 제어 시스템으로 확인할 수 있습니다. 따라서 프로젝트의 일부가되어 프로젝트로 변경합니다.

이 도구가 도움이 되길 바랍니다.


답변

Docker가 당신을 위해 일할 수도 있지만 그것은 그 일에 가장 적합한 도구는 아닙니다.

난 당신이 Vagrant 를 볼 것을 강력히 제안합니다 . 내가 믿는 것을 정확하게 처리하고 처리하기가 훨씬 쉽습니다.

간단히 말해서 데스크탑이 있고 virtualbox와 vagrant를 설치하는 것입니다.

가능한 워크 플로우 :

  1. 필요에 가장 근접한 사전 제작 된 상자를 다운로드 하십시오.
  2. 이 상자를 사용하여 시작 방랑자
  3. 가상 머신으로의 SSH (박스)
  4. 당신의 일을
  5. 완료되면 기계를 정지하십시오.

이것의 장점 중 일부는 당신이 방랑자를 시작할 때 자동으로 실행되는 스크립트를 추가 할 수 있다는 것입니다. 이것은 당신이 선택하는 방식으로 환경을 구성 할 수 있고 항상 매번 동일하게 유지할 수 있습니다. Chef / Puppet / Ansible /? 큰 효과를 발휘할 수 있습니다.

많은 가상 머신을 유지하고 싶지 않다면 삭제할 수 있으며 다시 필요할 때 상자를 다시 다운로드하고 스크립트를 실행할 수 있습니다.

개발시 이것에 대한 또 다른 좋은 점은 무언가가 엉망이되면 시스템을 종료하고 다시 다시 가져올 수 있으며 깨끗하고 신선 할 것입니다. 공유 폴더도 자동으로 구성되므로 원하는 모든 것을 루트 루트 디렉토리에 놓을 수 있으며 가상 머신의 / vagrant에 위치합니다.

packer 라는 도구를 사용 하면 방랑 상자와 OVF, Digital Ocean 및 AWS를 포함한 다른 유형을 만들 수 있습니다. Racker 는 패커에도 큰 도움이됩니다. 어떤 시점에서 배포를 원할 수 있으며 배포중인 이미지가 작업중인 이미지의 100 %와 일치 할 것입니다. 실제로 패커는 방랑자와 다른 많은 회사에서 방랑 상자를 만드는 데 사용합니다.

http://blog.endpoint.com/2014/03/provisioning-development-environment.html

http://blog.codeship.io/2013/11/07/building-vagrant-machines-with-packer.html


답변

데비안을 사용 debootstrap하는 경우 chroot를 만드는 데 사용 하는 것이 좋습니다 . 또한 schroot임의의 수의 chroot를 작성하고 권한을 관리하며 모든 종류의 작업을 수행 할 수 있는 도구 가 있습니다. 불행하게도, 그것은 나를 위해 너무 고급, 그래서 난 단지 사용하고 debootstrap때로는 혼자, 및 cowbuilder/ pbuilder정리 빌드 환경을 재현 할 수 있습니다.