Skip to content

Instantly share code, notes, and snippets.

@carthegian
Last active December 9, 2020 06:57
Show Gist options
  • Save carthegian/0c64991bbca2e35fc9b607731bb17399 to your computer and use it in GitHub Desktop.
Save carthegian/0c64991bbca2e35fc9b607731bb17399 to your computer and use it in GitHub Desktop.
A quick gist for building gRPC client-server using Go
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
BOX_IMAGE = "gbailey/amzn2"
Vagrant.configure("2") do |config|
config.vm.define "grpc-server" do |subconfig|
subconfig.vm.box = BOX_IMAGE
subconfig.vm.hostname = "grpc-server"
subconfig.vm.network "private_network", ip: "10.0.0.2"
subconfig.vm.provider 'virtualbox' do |vb|
vb.customize ["modifyvm", :id, "--name", "amazonlinux2-grpc-server"]
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000]
end
# Make vagrant ssh use our defined key-pair instead of random key during 'vagrant up'
subconfig.ssh.insert_key = false
subconfig.ssh.private_key_path = ["~/.ssh/vagrant", "~/.vagrant.d/insecure_private_key"]
subconfig.vm.provision "file", source: "~/.ssh/vagrant.pub", destination: "~/.ssh/authorized_keys"
subconfig.vm.provision "shell",
inline: "sudo rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime",
run: "always"
#Synced folders
# Fill <HOST_MACHINE_PATH> according to your need
#config.vm.synced_folder "<HOST_MACHINE_PATH>", "<GUEST_MACHINE_PATH>", type:"virtualbox", :mount_options => ['dmode=774','fmode=775']
# Install required applications
subconfig.vm.provision "shell",
inline: @scriptApp
end
config.vm.define "grpc-client" do |subconfig|
subconfig.vm.box = BOX_IMAGE
subconfig.vm.hostname = "grpc-client"
subconfig.vm.network "private_network", ip: "10.0.0.3"
subconfig.vm.provider 'virtualbox' do |vb|
vb.customize ["modifyvm", :id, "--name", "amazonlinux2-grpc-client"]
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000]
end
end
end
@scriptApp = <<SCRIPT
# Update yum and install git
sudo yum update -y
sudo yum install git -y
git version
# Install Go
sudo wget -c https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xvzf go1.15.2.linux-amd64.tar.gz
sudo echo 'export PATH=$PATH:/usr/local/go/bin' >> /home/vagrant/.bashrc
sudo echo 'export GOPATH=$HOME/go' >> /home/vagrant/.bashrc
sudo echo 'export GOBIN=$GOPATH/bin' >> /home/vagrant/.bashrc
tail -5 ~/.bashrc
source ~/.bashrc
# Install Go plugins for the protocol compiler
sudo echo 'export GO111MODULE=on' >> /home/vagrant/.bashrc # Enable module mode
go get google.golang.org/protobuf/cmd/protoc-gen-go google.golang.org/grpc/cmd/protoc-gen-go-grpc
sudo echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> /home/vagrant/.bashrc
tail -5 ~/.bashrc
source ~/.bashrc
# Install gRPC
# There's no need to install grpc separately as Go can use module to import grpc
# From https://github.com/grpc/grpc-go
# Install protobuf compiler
sudo yum install -y protobuf-compiler
SCRIPT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment