Vagrant Share를 이용하여 외부에서 사내의 웹 서비스에 접속
외부의 고객에게 현재 개발 중인 웹 서비스 상태를 보여 줄 일이 가끔 있습니다.
이럴 때 내 랩탑의 Vagrant Box를 사외에서 접근하도록 할 수 있다면 꽤 편리할 겁니다.
실제로 Vagrant Share라는 기능을 이용하면 이렇게 할 수 있습니다. 꽤 간편하죠.
한 번 해 봅시다.
우선 아래와 같은 Vagrantfile
과 provision.sh
파일을 만듭니다.
Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision "shell", path: "provision.sh"
config.vm.network "forwarded_port", guest: 80, host: 8080, id: "nginx"
end
provision.sh
apt-get -y update
apt-get -y install nginx
service nginx start
우분투 OS에 nginx를 설치하고 호스트의 8080 포트로 웹 서비스에 접근할 수 있도록 설정했습니다.
이제 vagrant up
명령으로 박스를 실행합니다.
C:\workspace\vagrant-share_ngrok>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'hashicorp/precise32' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'hashicorp/precise32'
default: URL: https://atlas.hashicorp.com/hashicorp/precise32
==> default: Adding box 'hashicorp/precise32' (v1.0.0) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/hashicorp/boxes/precise32/versions/1.0.0/providers/virtualbox.box
==> default: Box download is resuming from prior download progress
default: Progress: 100% (Rate: 561k/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'hashicorp/precise32' (v1.0.0) for 'virtualbox'!
==> default: Importing base box 'hashicorp/precise32'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'hashicorp/precise32' is up to date...
==> default: Setting the name of the VM: vagrant-share_ngrok_default_1505748939539_53687
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 80 (guest) => 8080 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
......
......
......
==> default: Setting up nginx (1.1.19-1ubuntu0.8) ...
==> default: Processing triggers for libc-bin ...
==> default: ldconfig deferred processing now taking place
==> default: Starting nginx:
==> default: nginx.
C:\workspace\vagrant-share_ngrok>
실행이 완료되면 아래 페이지에서 ngrok
를 다운로드 합니다.
다운로드 받은 파일의 압축을 해제하면 나오는 실행 파일을 적당한 곳에 풀어주고 해당 폴더를 시스템 PATH 에 추가합니다.
Vagrant Share가 실행될 때 ngrok
실행 파일을 찾을 수 있어야 하기 때문에 필요한 작업입니다.
ngrok
을 이용하면 Vagrant와 관계 없이 개발용 랩탑에서 실행되는 웹서비스 등을 퍼블릭 망에서 접근이 가능하게 할 수 있습니다.8080
포트를 열고 싶으면 간단히ngrok http 8080
을 실행하면 됩니다. 나머지는ngrok
을 실행하면 나오면 도움말을 참고하세요.
이제 새 명령 프롬프트를 띄우고 vagrant share
명령을 실행합니다.
C:\workspace\vagrant-share_ngrok>vagrant share
Vagrant Share now defaults to using the `ngrok` driver.
The `classic` driver has been deprecated.
For more information about the `ngrok` driver, please
refer to the documentation:
https://www.vagrantup.com/docs/share/
==> default: Detecting network information for machine...
default: Local machine address: 127.0.0.1
default:
default: Note: With the local address (127.0.0.1), Vagrant Share can only
default: share any ports you have forwarded. Assign an IP or address to your
default: machine to expose all TCP ports. Consult the documentation
default: for your provider ('virtualbox') for more information.
default:
default: Local HTTP port: 8080
default: Local HTTPS port: disabled
default: Port: 8080
default: Port: 2222
==> default: Creating Vagrant Share session...
==> default: HTTP URL: http://030a7496.ngrok.io
==> default:
Vagrant가 박스에서 실행 중인 웹 서비스의 포트를 찾아서 이를 외부에 열어 줍니다.
이제 실행 후 출력된 주소(위의 경우는 http://030a7496.ngrok.io
)를 고객에게 알려주기만 하면 됩니다.
미리 확인해 보려면 스마트폰(LTE)으로 접속해 보면 되겠죠.
EOF
'DevOps' 카테고리의 다른 글
Liquibase - 기존 DB를 이용해서 초기(initial) ChangeSet 만들기 (0) | 2018.04.05 |
---|---|
Vagrant - CoreOS에 vagrant ssh 접속 시 인증 실패 (0) | 2017.08.13 |
Vagrant - 기본+ (0) | 2017.06.08 |
Vagrant - 기본 (0) | 2017.06.02 |
Vagrant 공유 폴더 문제(mount.vboxsf 관련) - vagrant-vbguest 플러그인 (0) | 2017.05.29 |