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.