1. Consigne los comandos de Linux necesarios para el aprovisionamiento de los servicios solicitados. En este punto no debe incluir recetas solo se requiere que usted identifique los comandos o acciones que debe automatizar
BASE DE DATOS
Instalación de mariadb
- yum install mariadb-server
- service firewalld start
- firewall-cmd --zone=public --add-port=3306/tcp --permanent
- firewall-cmd --reload
- service mariadb.service start
Configuración de la base de datos
- /usr/bin/mysql_secure_installation
Se ejecuta un script para la configuración de la base de datos. Esto se hace a través de una serie de pasos. Las respuestas a cada paso son:
o Enter current password for root (enter for none):
o Set root password? [Y/n] y
o New password: distribuidos
o Re-enter new password: distribuidos
o Remove anonymous users? [Y/n] n
o Disallow root login remotely? [Y/n] n
o Remove test database and access to it? [Y/n] n
o Reload privilege tables now? [Y/n] y
-
mysql -u root –pdistribuidos
Se ingresa a la base de datos para crear el esquema y las tablas
-
create database database1
-
use database1
-
create table WebServer(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), ip VARCHAR(30))
-
INSERT INTO WebServer (name,ip) VALUES ('WebServer1','192.168.56.103');
-
INSERT INTO WebServer (name,ip) VALUES ('WebServer2','192.168.56.104');
Configuracion de permisos
Una vez creado el esquema, la tabla y los datos de la misma, se debe dar permiso de consulta a los servidores web.
- GRANT ALL PRIVILEGES ON . to 'WebServer1'@'192.168.56.103' IDENTIFIED by 'WebServer1';
- GRANT ALL PRIVILEGES ON . to 'WebServer2'@'192.168.56.104' IDENTIFIED by 'WebServer2';
SERVIDORES WEB
Instalacion de httpd
- yum install httpd
- service firewalld start
- firewall-cmd --zone=public --add-port=80/tcp --permanent
- firewall-cmd –reload
Configuracion para conexión remota
-
yum install mariadb
-
sudo setsebool httpd_can_network_connect_db on
Para permitir consultas a base de datos desde httpd
-
yum install php
-
yum install php-mysql
Creación del servicio web
-
cd /var/www/html/
-
vi template.php (se inserta el código html y php)
En el código php que realiza la conexión a la base de datos, se ponen las credenciales del servidor.
-
service httpd start
BALANCEADOR DE CARGA HAPROXY
Instalacion de haproxy
- yum install haproxy
Configuracion de haproxy
Modificar archivo /etc/haproxy/haproxy.cfg con los datos de los servidores web.
2. Escriba el archivo Vagrantfile para realizar el aprovisionamiento, teniendo en cuenta definir: maquinas a aprovisionar, interfaces solo anfitrión, interfaces tipo puente, declaración de cookbooks, variables necesarias para plantillas. Incluya el Vagrantfile añadiendo comentarios en cada línea encargada del aprovisionamiento de la infraestructura.
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.ssh.insert_key = false
#CREACION DE LA MAQUINA VIRTUAL QUE FUNCIONARA COMO BASE DE DATOS
config.vm.define :db_server do |client|
#definicion de la imagen del SO a utilizar (en este caso Centos7)
client.vm.box = "centos1706_v0.2.0"
#Configuracion de una red privada e ip asociada a la maquina
client.vm.network :private_network, ip: "192.168.56.102"
#Configuracion de la cantidad de memoria RAM, numero de cpus y nombre de la maquina virtual
client.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024","--cpus", "1", "--name", "db_server" ]
end
#Definicion del aprovisionador a utilizar (chef solo)
config.vm.provision :chef_solo do |chef|
#No se instala el aprovisionador porque ya esta contenido en la imagen del sistema operativo
chef.install = false
#Definicion del directorio que contiene las recetas de aprovisionamiento
chef.cookbooks_path = "cookbooks"
#Se añade la receta de mariadb-server
chef.add_recipe "mariadb-server"
end
end
#CREACION DE UNA MAQUINA VIRTUAL QUE FUNCIONARA COMO SERVIDOR WEB
config.vm.define :web_server1 do |wb1|
#definicion de la imagen del SO a utilizar (en este caso Centos7)
wb1.vm.box = "centos1706_v0.2.0"
#Configuracion de una red privada e ip asociada a la maquina
wb1.vm.network :private_network, ip: "192.168.56.103"
#Configuracion de la cantidad de memoria RAM, numero de cpus y nombre de la maquina virtual
wb1.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024","--cpus", "1", "--name", "web_server1" ]
end
#Definicion del aprovisionador a utilizar (chef solo)
config.vm.provision :chef_solo do |chef|
#No se instala el aprovisionador porque ya esta contenido en la imagen del sistema operativo
chef.install = false
#Definicion del directorio que contiene las recetas de aprovisionamiento
chef.cookbooks_path = "cookbooks"
#Se añade la receta de httpd
chef.add_recipe "httpd"
#Se añade la receta de mariadb-client
chef.add_recipe "mariadb-client"
#Se agrega una variable que servira como identificador del servidor web
chef.json = {"service_name" => "WebServer1"}
end
end
#CREACION DE UNA MAQUINA VIRTUAL QUE FUNCIONARA COMO SERVIDOR WEB
config.vm.define :web_server2 do |wb2|
#definicion de la imagen del SO a utilizar (en este caso Centos7)
wb2.vm.box = "centos1706_v0.2.0"
#Configuracion de una red privada e ip asociada a la maquina
wb2.vm.network :private_network, ip: "192.168.56.104"
#Configuracion de la cantidad de memoria RAM, numero de cpus y nombre de la maquina virtual
wb2.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024","--cpus", "1", "--name", "web_server2" ]
end
#Definicion del aprovisionador a utilizar (chef solo)
config.vm.provision :chef_solo do |chef|
#No se instala el aprovisionador porque ya esta contenido en la imagen del sistema operativo
chef.install = false
#Definicion del directorio que contiene las recetas de aprovisionamiento
chef.cookbooks_path = "cookbooks"
#Se añade la receta de httpd
chef.add_recipe "httpd"
#Se añade la receta de mariadb-client
chef.add_recipe "mariadb-client"
#Se agrega una variable que servira como identificador del servidor web
chef.json = {"service_name" => "WebServer2"}
end
end
#CREACION DE LA MAQUINA VIRTUAL QUE FUNCIONARA COMO BALANCEADOR DE CARGA
config.vm.define :load_balancer do |balancer|
#definicion de la imagen del SO a utilizar (en este caso Centos7)
balancer.vm.box = "centos1706_v0.2.0"
#Configuracion de una red privada e ip asociada a la maquina
balancer.vm.network :private_network, ip: "192.168.56.101"
#Configuracion de la cantidad de memoria RAM, numero de cpus y nombre de la maquina virtual
balancer.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024","--cpus", "1", "--name", "load_balancer" ]
end
#Definicion del aprovisionador a utilizar (chef solo)
config.vm.provision :chef_solo do |chef|
#No se instala el aprovisionador porque ya esta contenido en la imagen del sistema operativo
chef.install = false
#Definicion del directorio que contiene las recetas de aprovisionamiento
chef.cookbooks_path = "cookbooks"
#Se añade la receta de haproxy
chef.add_recipe "haproxy"
#Se agregan las ips de los servidores web, como variables, para luego ser utilizadas en
#la modificacion del archivo de configuracion de haproxy
chef.json = {
"web_servers" => [
{"ip":"192.168.56.103"},
{"ip":"192.168.56.104"}
]
}
end
end
end
3. Escriba los cookbooks necesarios para realizar la instalación de los servicios solicitados. Incluya una tabla como se muestra a continuación explicando la función de cada archivo o directorio en los cookbooks. No incluya código fuente en el informe para esta sección.
La estructura del directorio de cookbooks es la siguiente:
4. Incluya evidencias gráficas que muestran el funcionamiento de lo solicitado
Características de los nodos
Nodo | Ip |
---|---|
load_balancer | 192.168.56.101 |
db_server | 192.168.56.102 |
web_server1 | 192.168.56.103 |
web_server2 | 192.168.56.104 |
Funcionamiento
* el cliente pide el servicio “template.php” a traves del balanceador: 192.168.56.101/template.php
* el servicio consiste en dar las características (nombre y dirección ip) del servidor web que atiende el servicio
* el balanceador redirige la petición a uno de los servidores web
* el servidor web consulta la base de datos y responde al servicio
Evidencias graficas