Als je hier beland bent, moet je eerst even de stappen uit deel 1 uitvoeren.
In deel 2 gaan we zorgen dat de nfsserver geïnstalleerd wordt en dat de haproxy in orde gemaakt wordt.
In deel 1 hadden we al een role aangemaakt voor de nfsserver. In de role nfsserver wijzigen we de main.yml in tasks als volgt:
---
# tasks file for nfsserver
- name: Install NFS Server
yum:
name: nfs-utils
state: latest
- name: Disable SELinux
selinux:
state: disabled
- name: Disable Firewall
firewalld:
service: nfs
permanent: yes
state: enabled
ignore_errors: True
- name: Copy config
copy:
src: exports
dest: /etc/exports
owner: root
group: root
mode: 0644
- name: Create NFS Directory
file:
path: /mnt/nfsserver
state: directory
mode: '0777'
- name:
service:
name: nfs-server
state: started
enabled: yes
Zoals je kunt zien gebruiken we de copy module om een bestand te kopiëren. Dit bestand wordt gekopieerd vanuit de roles/nfsserver/files directory en ziet er als volgtuit:
/mnt/nfsserver 192.168.57.1/24(rw,sync,no_root_squash)
Dit is het exports bestand voor de nfs server. Dit is alles wat nodig is voor de role nfsserver. Het enige dat nog over blijft is het playbook. Deze maken we aan in ~/ansible/nfsserver.yml en ziet er als volgt uit:
---
- hosts: test3
become: yes
name: Install nfsserver
roles:
- role: nfsserver
Nu kunnen we dit playbook runnen om de nfsserver te installeren:
ansible-playbook nfsserver.yml
Vervolgens kunnen we ook de webservers gaan installeren met
ansible-playbook install_webserver.yml
Nu blijft alleen nog de haproxy over.
De role hadden we in deel 1 al aangemaakt nu hoeven we alleen nog de files aan te passen.
Te beginnen met de main.yml in tasks:
---
# tasks file for haproxy
- name: Install HAProxy
yum:
name: haproxy
state: latest
- name: Config
template:
src: haproxy.j2
dest: /etc/haproxy/haproxy.cfg
- name: Set Service
service:
name: haproxy
state: started
enabled: yes
- name: Disable SELinux
selinux:
state: disabled
- name: Disable Firewall
service:
name: firewalld
state: stopped
ignore_errors: true
Zoals ook hier te zien is maken we gebruik van een template. Deze is te vinden in roles/haproxy/templates en ziet er als volgt uit:
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2 #Log configuration
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy #Haproxy running under user and group "haproxy"
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080 #Haproxy Monitoring run on port 8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats #URL for HAProxy monitoring
stats realm Haproxy\ Statistics
stats auth howtoforge:howtoforge #User and Password for login to the monitoring dashboard
stats admin if TRUE
default_backend app-main #This is optionally for monitoring backend
#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
bind *:80
option http-server-close
option forwardfor
default_backend app-main
#---------------------------------------------------------------------
# BackEnd roundrobin as balance algorithm
#---------------------------------------------------------------------
backend app-main
balance roundrobin #Balance algorithm
option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost #Check the server application is up and healty - 200 status code
{% for item in ipservers %}
server {{ item }} check #Nginx1
{% endfor %}
In dit bestand staat de inlognaam en het wachtwoord plain in. Eventueel kan je dat met ansible-vault nog beveiligen.
Ook kun je zien dat er in het laatste gedeelte gebruik gemaakt wordt van een variabele ipservers. Dit bestand moeten we dus ook nog aanmaken en dat doen we in roles/haproxy/vars/main.yml:
--- # vars file for haproxy ipservers: - ansibletest1 192.168.57.101:80 - ansibletest2 192.168.57.102:80
Dit bestand kunnen we aanpassen naar gelang er server bijkomen of af gaan.
Tenslotte moeten we nog een playbook aanmaken in ~/ansible/haproxy.yml:
---
- hosts: test3
become: yes
name: Install haproxy
roles:
- role: haproxy
Als we nu dit playbook runnen, dan hebben we de haproxy ook geregeld en kun je met de webbrowser naar 192.168.57.103 om te kijken of de pagina die of de nfs share staat het doet.
