Está en la página 1de 8

Practica

Aprovisionamiento
Oscar H. Mondragón
1. Objetivos

• Comprender el funcionamiento de los Aprovisionadores SHELL, Puppet y


Ansible con Vagrant.

2. Herramientas a utilizar

• Vagrant
• VirtualBox
• Provisioners: Shell, Ansible, Puppet

3. Aprovisionamiento con Vagrant Shell


3.1. Configuración de Vagrant



Esta práctica la desarrollaremos usando boxes de Ubuntu 20.04 en Vagrant. El
Vagrantfile que usaremos es el siguiente:

Vagrant.configure("2") do |config|
config.vm.define :clienteUbuntu do |clienteUbuntu|
clienteUbuntu.vm.box = "bento/ubuntu-20.04"
clienteUbuntu.vm.network :private_network, ip: "192.168.100.2"
clienteUbuntu.vm.hostname = "clienteUbuntu"
end

config.vm.define :servidorUbuntu do |servidorUbuntu|


servidorUbuntu.vm.box = "bento/ubuntu-20.04"
servidorUbuntu.vm.network :private_network, ip: "192.168.100.3"
servidorUbuntu.vm.provision "shell", path: "script.sh"
servidorUbuntu.vm.hostname = "servidorUbuntu"
end
end



3.2. Pruebas básicas de aprovisionamiento

Note que el servidor esta siendo aprovisionado usando a línea:
servidorUbuntu.vm.provision "shell", path: "script.sh"

Cree un archivo script.sh con el siguiente contenido:


#!/bin/bash

echo "configurando el resolv.conf con cat"


cat <<TEST> /etc/resolv.conf
nameserver 8.8.8.8
TEST

echo "instalando un servidor vsftpd"


sudo apt-get install vsftpd -y

echo “Modificando vsftpd.conf con sed”


sed -i 's/#write_enable=YES/write_enable=YES/g' /etc/vsftpd.conf

echo "configurando ip forwarding con echo"


sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf


Verifique el aprovisionamiento y explique su funcionamiento.

4. Aprovisionamiento con Puppet


Los archivos usados en esta parte de la practica se encuentran en el repositorio


https://github.com/omondragon/testPuppet

4.1. Configuración de Vagrant



Con el fin de usar ansible, cree el Vagrantfile como sigue (también puede solo
agregar la parte de aprovisionamiento a su Vagrantfile existente):
# -*- mode: ruby -*-

# vi: set ft=ruby :


$install_puppet = <<-PUPPET

sudo apt-get install -y puppet

PUPPET

Vagrant.configure("2") do |config|

config.vm.box = "bento/ubuntu-20.04"

config.vm.hostname = "puppetServer"

config.vm.network :private_network, ip: "192.168.90.3"

config.vm.provision "shell", inline: $install_puppet

config.vm.provision :puppet do |puppet|

puppet.manifests_path = "puppet/manifests"

puppet.manifest_file = "site.pp"

puppet.module_path = "puppet/modules"

end

end

Construya la siguiente estructura de directorios:




Cree los archivos con el siguiente contenido:

site.pp
index.html

init.pp





5. (Opcional-Desafío) Aprovisionamiento con Ansible

Ansible no corre directamente en un host Windows pero puede correr bajo el
Windows Subsystem for Linux (WSL).
En el repositorio https://github.com/omondragon/testAnsible se encuentra un
ejemplo basico de aprovisionamiento con Ansible y los archivos usados aquí.
Esta parte de la practica es opcional. Para instalar Ansible en WSL se sugieren
algunas referencias al final de esta guía.

5.1. Configuración de Vagrant



Con el fin de usar ansible, modifique el Vagrantfile como sigue:
Vagrant.configure("2") do |config|
config.vm.define :clienteUbuntu do |clienteUbuntu|
clienteUbuntu.vm.box = "bento/ubuntu-20.04"
clienteUbuntu.vm.network :private_network, ip: "192.168.100.2"
clienteUbuntu.vm.hostname = "clienteUbuntu"
end

config.vm.define :servidorUbuntu do |servidorUbuntu|


servidorUbuntu.vm.box = "bento/ubuntu-20.04"
servidorUbuntu.vm.network :private_network, ip: "192.168.100.3"
servidorUbuntu.vm.provision :ansible do |ansible|
ansible.playbook = "playbook.yml"
end
servidorUbuntu.vm.hostname = "servidorUbuntu"
end
end

Note que para esta parte estamos usando un nuevo provisioner llamado Ansible.
Este provisioner usa un archivo llamado playbook donde se especifican las
tareas que se ejecutan sobre el Vagrant Box durante su aprovisionamiento.
Cree un archive playbook.yml asi:
---

- hosts: all

become: true

tasks:

- name: actualizar apt cache

apt: update_cache=yes
- name: instalar apache

apt: name=apache2 state=present

- name: ejecutar un script de prueba

script: prueba.sh

NOTA:
Puede usar herramientas como https://onlineyamltools.com/edit-yaml para
verificar sus archivos yaml.
PARA USUARIOS WINDOWS (EN HOST)
Puede usar visualstudio y agregar soporte para yaml:
https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml
PARA USUARIOS UNIX (EN HOST)
Modificar (Crear) el archivo ~/.vimrc para trabajar con Yaml.

$ vim ~/.vimrc

Agregar la siguiente configuración, con el fin de trabajar adecuadamente con


tabs y espacios en los archivos yaml.

" Configuracion para trabajar con archivos yaml

au! BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab


En este playbook especı́fico estamos realizando lo siguiente:

● Ejecute este script en todos los boxes conocidos ( hosts: all )


● Estas tareas requieren sudo ( sudo: true )
● Las tareas a ejecutar será n:
○ actualice apt cache

○ instale apache
○ Ejecute un bash script
El contenido de del bash script (prueba.sh) puede ser, por ejemplo algo tan simple
como iniciar el servicio de apache y ejecutar un comando wget para comprobar el
servicio y copiar el resultado en un archivo de texto en el directorio sincronizado
/vagrant/
#!/bin/bash

systemctl start apache2

curl 127.0.0.1 > /vagrant/resultado.txt

6. Ejercicio

1. Implemente el aprovisionamiento basado en Shell propuesto en la sección 3.
Explique su funcionamiento.
2. Implemente el aprovisionamiento basado en Puppet propuesto en la sección
4. Explique su funcionamiento.
3. Aprovisione un servidor FTP personalizado usando el aprovisionador que
mas le guste. Realice automáticamente:
a. Cree al menos un usuario local
b. Cambie el banner de bienvenida
c. Restrinja el acceso a usuarios anónimos
4. Aprovisione una maquina Vagrant con un contenedor LXD corriendo un sitio
web personalizado

7. Desafío [Hasta 0.5 Puntos en una nota del corte de


tareas/quices/exposiciones]

Implemente aprovisionamiento de un servicio/aplicación usando Ansible o Chef
Provisioner. Recuerde que para usar un host Windows debe instalar y configurar
WSL.

6. Bibliografía
• Sitio oficial Ansible: https://www.ansible.com/
• Vagrant Provisioning with Puppeet.
https://medium.com/@Joachim8675309/vagrant-provisioning-with-
puppet-553a59f0c48e
• Automation testing with ansible, molecule and Vagrant.
https://www.trustedsec.com/blog/automation-testing-with-ansible-
molecule-and-vagrant/
• Correr Ansible en Windows.
https://docs.ansible.com/ansible/2.5/user_guide/windows_faq.html
• Instalar WSL en Windows. https://docs.microsoft.com/en-
us/windows/wsl/install-win10
• Aprovisionamiento en Vagrant:
https://www.vagrantup.com/docs/provisioning
• Vagrant Provisioning with Puppet.
https://medium.com/@Joachim8675309/vagrant-provisioning-with-
puppet-553a59f0c48e
• G.ST.02 Guía de Computación en la nube (2018):
https://estrategia.gobiernoenlinea.gov.co/623/articles-75246_recurso_2.pdf

También podría gustarte