El objetivo de este repositorio es poder crear maquinas virtuales y aprovisionarlas con herramientas como docker, CRI-O y K8S para facilitar la creaci'on de un ambiente de desarrollo con las heramientas necesarias!
El siguiente comando es valido para ArchLinux y derivadas:
valida la forma de instalarlo en tu distribucion de preferencia
sudo pacman -S vagrant \
ansible \
virtualbox \
virtualbox-host-modules-arch \
linux-headersgit clone https://github.com/wortiz1027/vagrant.git && cd vagrantvagran es la raiz del proyecto y dentro existen 2 directorios para crear y aprovisionar maquinas para docker y k8s, debes escoger que clase de maquina quieres crear/aprovisionar y ejecutar el siguiente comando:
vagrant up- Ambiente Docker
cd vm_dockerUna vez creada la maquina y aprovisionada si lo que deseas es acceder desde la maquina host ejecuta en la maquina virtual el siguiente comando:
sudo dockerd -H unix:///var/run/docker.sock -H tcp://<remote-ip-address> &esto para exponer el socket del deamon de docker de la VM remota. y en la maquina host solo tienes que descrgar el cliente docker e instalarlo y puedes ejecutar docker hacia la VM remota:
docker DOCKER_HOST=tcp://<yout-vm-ip-address>:<vm-docker-port> ps -apero si no quieres tener que tipear la variable DOCKER_HOST cada que ejecutas un comando de docker puedes exportarla:
export DOCKER_HOST=tcp://<yout-vm-ip-address>:<vm-docker-port>1.1 Development Environment
La idea de aprovisionar una maquina con docker es poder tener un ambiente listo para desarrollar. En el archivo docker-compose.yaml agrego un listado de servicios/aplicaciones implesindibles, entre las que destaco:
| Component | Image | Version |
|---|---|---|
| docker-socket-proxy | tecnativa/docker-socket-proxy | latest |
| watchtower | containrrr/watchtower | latest |
| dozzle | amir20/dozzle | latest |
| traefik | traefik | v3.0.0-beta5 |
| portainer | portainer/portainer-ce | latest |
| whoami | containous/whoami | latest |
| postgres | postgres | latest |
| mysql | mysq | latest |
| mongo | mong | latest |
| redis | redis | latest |
| pgadmin | dpage/pgadmin4 | latest |
| mongo-express | mongo-express | latest |
| payara | payara/server-full | latest |
| keycloak | quay.io/keycloak/keycloak | latest |
| jaeger | jaegertracing/all-in-one | latest |
| otel | otel/opentelemetry-collector-contrib | latest |
| prometheus | prom/prometheus | latest |
| ... |
en el archivo boostrap.sh se crean un conjunto de certificados para aprovechar las capacidades de traefik y que nuestro ambiente esté bajo un entorno seguro, para esto se hacer uso de mkcert para simular una CA Authority y al momento de navegar desde el navegador por las aplicaciones no tener la alerta de sitio no seguro, para ello una vez creada y aprovisionada la maquina ejecutamos los siguientes pasos desde la maquina host:
scp -r vagrant@192.168.56.10:/home/vagrant/.local/share/mkcert ~/.local/share/password: vagrant
esto con el objetivo de copiar los certificados del CAROOT de la vm en nuestra maquina host, las imagenes a continuacion describen el proceso:
- Ambiente K8S
Una vez creado y aprovisionado el cluster lo siguiente es instalar KUBECTL en la maquina host, se pueden usar diferentes mecanismos, por mi parte use ASDF:
asdf plugin-add kubectl https://github.com/asdf-community/asdf-kubectl.gitasdf install kubectl <your-specific-version>moverse hace el directorio $HOME
cd ~
cd $HOMEy ejecutar el siguiente comando:
scp -r vagrant@<k8s-master-node-ip-address>:/home/vagrant/.kube ~Permisos solo para el usuario anfitrion sobre ~/.kube/config
chmod o-r ~/.kube/config
chmod g-r ~/.kube/configlos datos de autenticacion son:
username: vagrant password: vagrant











