Skip to content

Instantly share code, notes, and snippets.

@mprokopov
Created May 5, 2021 09:28
Show Gist options
  • Save mprokopov/f396868dfa24258fede03831121da191 to your computer and use it in GitHub Desktop.
Save mprokopov/f396868dfa24258fede03831121da191 to your computer and use it in GitHub Desktop.
prep vagrant for devops courses with ansible, k8s and jenkins
Vagrant.configure("2") do |config|
## VM for target deployments
config.vm.define "target", autostart: false do |target|
target.vm.box = "centos/7"
target.vm.network "forwarded_port", guest: 8000, host: 8000
target.vm.network "private_network", ip: "10.10.50.3"
target.vm.provider "virtualbox" do |vb|
vb.memory = "512"
end
#target.vm.synced_folder "../target_home_folder", "/home/vagrant/target"
#target.vm.synced_folder "../target_www_folder", "/var/www/target"
target.vm.provision "shell", inline: <<-SHELL
hostnamectl set-hostname target
# yum install -y java-1.8.0-openjdk-devel git yum-utils unzip ansible
SHELL
end
## VM with Jenkins, Ansible, Docker
config.vm.define "toolbox" do |target|
target.vm.box = "centos/7"
# jenkins port
target.vm.network "forwarded_port", guest: 8080, host: 8080
# docker port
target.vm.network "forwarded_port", guest: 2375, host: 2375
# ngrok port
target.vm.network "forwarded_port", guest: 4040, host: 4040
target.vm.network "private_network", ip: "10.10.50.2"
target.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
#target.vm.synced_folder "../toolbox_folder", "/home/vagrant/toolbox"
target.vm.provision "shell", inline: <<-SHELL
hostnamectl set-hostname toolbox
yum install -y java-1.8.0-openjdk-devel git yum-utils unzip ansible
# jenkins install
curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | tee /etc/yum.repos.d/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
systemctl enable jenkins && systemctl start jenkins
# docker install
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce.x86_64
systemctl enable docker && systemctl start docker
usermod -aG docker vagrant
usermod -aG docker jenkins
# docker composer
curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# ngrok
curl -LO https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip && unzip ngrok-stable-linux-amd64.zip -d /usr/local/bin && rm ngrok-stable-linux-amd64.zip
# kubectl
curl -L https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl && chmod +x /usr/local/bin/kubectl
SHELL
end
## VM for K8S testing with Kind, Docker, Helm
config.vm.define "k8s", autostart: false do |target|
target.vm.box = "centos/7"
target.vm.network "forwarded_port", guest: 6443, host: 6443
target.vm.network "private_network", ip: "10.10.50.4"
target.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
target.vm.provision "shell", inline: <<-SHELL
hostnamectl set-hostname k8s
yum install -y java-1.8.0-openjdk-devel git yum-utils unzip
# docker install
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce.x86_64
systemctl enable docker && systemctl start docker
usermod -aG docker vagrant
# kubectl
curl -L https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl && chmod +x /usr/local/bin/kubectl
# kind
curl -L "https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-$(uname)-amd64" -o /usr/local/bin/kind && chmod +x /usr/local/bin/kind
curl -LO "https://gist.githubusercontent.com/mprokopov/4a22b2282104ca955f54acfccacf0a83/raw/27632d994c27e4c78987d3066c7ac008dc17b8dd/kind.yml"
/usr/local/bin/kind create cluster --config=kind.yml
# helm
curl -LO https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz && tar xzf helm-v3.1.2-linux-amd64.tar.gz && mv ./linux-amd64/helm /usr/local/bin/
#helm repo add stable https://kubernetes-charts.storage.googleapis.com/
SHELL
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment