{"id":156,"date":"2019-07-01T18:15:50","date_gmt":"2019-07-01T16:15:50","guid":{"rendered":"https:\/\/jochemenbianca.nl\/?p=156"},"modified":"2019-08-12T15:46:25","modified_gmt":"2019-08-12T13:46:25","slug":"ansible-roles-deel-2","status":"publish","type":"post","link":"https:\/\/jochemenbianca.nl\/?p=156","title":{"rendered":"Ansible Roles (deel 2)"},"content":{"rendered":"<p>Als je hier beland bent, moet je eerst even de stappen uit deel 1 uitvoeren.<br \/>\nIn deel 2 gaan we zorgen dat de nfsserver ge\u00efnstalleerd wordt en dat de haproxy in orde gemaakt wordt.<br \/>\nIn deel 1 hadden we al een role aangemaakt voor de nfsserver. In de role nfsserver wijzigen we de main.yml in tasks als volgt:<\/p>\n<pre>---\n# tasks file for nfsserver\n- name: Install NFS Server\n  yum:\n    name: nfs-utils\n    state: latest\n- name: Disable SELinux\n  selinux:\n    state: disabled\n- name: Disable Firewall\n  firewalld:\n    service: nfs\n    permanent: yes\n    state: enabled\n  ignore_errors: True\n- name: Copy config\n  copy: \n    src: exports\n    dest: \/etc\/exports\n    owner: root\n    group: root\n    mode: 0644\n- name: Create NFS Directory\n  file:\n    path: \/mnt\/nfsserver\n    state: directory\n    mode: '0777' \n- name:\n  service:\n    name: nfs-server\n    state: started\n    enabled: yes\n<\/pre>\n<p>Zoals je kunt zien gebruiken we de copy module om een bestand te kopi\u00ebren. Dit bestand wordt gekopieerd vanuit de roles\/nfsserver\/files directory en ziet er als volgtuit:<\/p>\n<pre>\/mnt\/nfsserver 192.168.57.1\/24(rw,sync,no_root_squash)\n<\/pre>\n<p>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:<\/p>\n<pre>---\n- hosts: test3\n  become: yes\n  name: Install nfsserver\n  roles: \n    - role: nfsserver\n<\/pre>\n<p>Nu kunnen we dit playbook runnen om de nfsserver te installeren:<\/p>\n<pre>ansible-playbook nfsserver.yml<\/pre>\n<p>Vervolgens kunnen we ook de webservers gaan installeren met<\/p>\n<pre>ansible-playbook install_webserver.yml<\/pre>\n<p>Nu blijft alleen nog de haproxy over.<br \/>\nDe role hadden we in deel 1 al aangemaakt nu hoeven we alleen nog de files aan te passen.<br \/>\nTe beginnen met de main.yml in tasks:<\/p>\n<pre>---\n# tasks file for haproxy\n- name: Install HAProxy\n  yum:\n    name: haproxy\n    state: latest\n- name: Config\n  template:\n    src: haproxy.j2\n    dest: \/etc\/haproxy\/haproxy.cfg\n- name: Set Service\n  service:\n    name: haproxy\n    state: started\n    enabled: yes\n- name: Disable SELinux\n  selinux:\n    state: disabled\n- name: Disable Firewall\n  service: \n    name: firewalld\n    state: stopped\n  ignore_errors: true\n<\/pre>\n<p>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:<\/p>\n<pre>#---------------------------------------------------------------------\n# Global settings\n#---------------------------------------------------------------------\nglobal\n    log         127.0.0.1 local2     #Log configuration\n \n    chroot      \/var\/lib\/haproxy\n    pidfile     \/var\/run\/haproxy.pid\n    maxconn     4000                \n    user        haproxy             #Haproxy running under user and group \"haproxy\"\n    group       haproxy\n    daemon\n \n    # turn on stats unix socket\n    stats socket \/var\/lib\/haproxy\/stats\n#---------------------------------------------------------------------\n# common defaults that all the 'listen' and 'backend' sections will\n# use if not designated in their block\n#---------------------------------------------------------------------\ndefaults\n    mode                    http\n    log                     global\n    option                  httplog\n    option                  dontlognull\n    option http-server-close\n    option forwardfor       except 127.0.0.0\/8\n    option                  redispatch\n    retries                 3\n    timeout http-request    10s\n    timeout queue           1m\n    timeout connect         10s\n    timeout client          1m\n    timeout server          1m\n    timeout http-keep-alive 10s\n    timeout check           10s\n    maxconn                 3000  \n#---------------------------------------------------------------------\n#HAProxy Monitoring Config\n#---------------------------------------------------------------------\nlisten haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080\n    mode http\n    option forwardfor\n    option httpclose\n    stats enable\n    stats show-legends\n    stats refresh 5s\n    stats uri \/stats                             #URL for HAProxy monitoring\n    stats realm Haproxy\\ Statistics\n    stats auth howtoforge:howtoforge            #User and Password for login to the monitoring dashboard\n    stats admin if TRUE\n    default_backend app-main                    #This is optionally for monitoring backend\n#---------------------------------------------------------------------\n# FrontEnd Configuration\n#---------------------------------------------------------------------\nfrontend main\n    bind *:80\n    option http-server-close\n    option forwardfor\n    default_backend app-main\n \n#---------------------------------------------------------------------\n# BackEnd roundrobin as balance algorithm\n#---------------------------------------------------------------------\nbackend app-main\n    balance roundrobin                                     #Balance algorithm\n    option httpchk HEAD \/ HTTP\/1.1\\r\\nHost:\\ localhost    #Check the server application is up and healty - 200 status code\n    {% for item in ipservers %}\n    server {{ item }} check                 #Nginx1 \n    {% endfor %} \n<\/pre>\n<p>In dit bestand staat de inlognaam en het wachtwoord plain in. Eventueel kan je dat met ansible-vault nog beveiligen.<br \/>\nOok 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:<\/p>\n<pre>---\n# vars file for haproxy\nipservers:\n  - ansibletest1 192.168.57.101:80\n  - ansibletest2 192.168.57.102:80\n<\/pre>\n<p>Dit bestand kunnen we aanpassen naar gelang er server bijkomen of af gaan.<br \/>\nTenslotte moeten we nog een playbook aanmaken in ~\/ansible\/haproxy.yml:<\/p>\n<pre>---\n- hosts: test3\n  become: yes\n  name: Install haproxy\n  roles: \n    - role: haproxy\n<\/pre>\n<p>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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00efnstalleerd 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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,3],"tags":[],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-ansible","category-open-source"],"_links":{"self":[{"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=156"}],"version-history":[{"count":7,"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":167,"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts\/156\/revisions\/167"}],"wp:attachment":[{"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}