summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
authorAndrew Butcher <abutcher@redhat.com>2016-05-16 11:45:32 -0400
committerAndrew Butcher <abutcher@redhat.com>2016-05-26 13:45:09 -0400
commit57abf26c30e306d1527e92a61a94088e542bb006 (patch)
treeab2f4d9f5e675e9e02ff05a22412878b5f9b9550 /roles
parent643b9b30066f0130f35e9ce7b1a8a7c24a244cc7 (diff)
downloadopenshift-57abf26c30e306d1527e92a61a94088e542bb006.tar.gz
openshift-57abf26c30e306d1527e92a61a94088e542bb006.tar.bz2
openshift-57abf26c30e306d1527e92a61a94088e542bb006.tar.xz
openshift-57abf26c30e306d1527e92a61a94088e542bb006.zip
Separate master and haproxy config playbooks.
* Move haproxy configuration to a separate openshift-loadbalancer play. * Move the haproxy role to openshift_loadbalancer. * Add openshift_loadbalancer* facts which drive haproxy configuration.
Diffstat (limited to 'roles')
-rw-r--r--roles/haproxy/tasks/main.yml43
-rwxr-xr-xroles/openshift_facts/library/openshift_facts.py8
-rw-r--r--roles/openshift_loadbalancer/README.md (renamed from roles/haproxy/README.md)4
-rw-r--r--roles/openshift_loadbalancer/defaults/main.yml (renamed from roles/haproxy/defaults/main.yml)0
-rw-r--r--roles/openshift_loadbalancer/handlers/main.yml (renamed from roles/haproxy/handlers/main.yml)0
-rw-r--r--roles/openshift_loadbalancer/meta/main.yml (renamed from roles/haproxy/meta/main.yml)7
-rw-r--r--roles/openshift_loadbalancer/tasks/main.yml73
-rw-r--r--roles/openshift_loadbalancer/templates/haproxy.cfg.j2 (renamed from roles/haproxy/templates/haproxy.cfg.j2)8
8 files changed, 91 insertions, 52 deletions
diff --git a/roles/haproxy/tasks/main.yml b/roles/haproxy/tasks/main.yml
deleted file mode 100644
index 837fa67db..000000000
--- a/roles/haproxy/tasks/main.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-- name: Install haproxy
- action: "{{ ansible_pkg_mgr }} name=haproxy state=present"
- when: not openshift.common.is_containerized | bool
-
-- name: Configure systemd service directory for haproxy
- file:
- path: /etc/systemd/system/haproxy.service.d
- state: directory
- when: haproxy_limit_nofile is defined
-
-- name: Configure the nofile limits for haproxy
- ini_file:
- dest: /etc/systemd/system/haproxy.service.d/limits.conf
- section: Service
- option: LimitNOFILE
- value: "{{ haproxy_limit_nofile }}"
- when: haproxy_limit_nofile is defined
- notify: restart haproxy
- register: nofile_limit_result
-
-- name: Reload systemd if needed
- command: systemctl daemon-reload
- when: nofile_limit_result | changed
-
-- name: Configure haproxy
- template:
- src: haproxy.cfg.j2
- dest: /etc/haproxy/haproxy.cfg
- owner: root
- group: root
- mode: 0644
- notify: restart haproxy
-
-- name: Enable and start haproxy
- service:
- name: haproxy
- state: started
- enabled: yes
- register: start_result
-
-- set_fact:
- haproxy_start_result_changed: "{{ start_result | changed }}"
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py
index b13343776..11203de17 100755
--- a/roles/openshift_facts/library/openshift_facts.py
+++ b/roles/openshift_facts/library/openshift_facts.py
@@ -1554,6 +1554,7 @@ class OpenShiftFacts(object):
'docker',
'etcd',
'hosted',
+ 'loadbalancer',
'master',
'node']
@@ -1763,6 +1764,13 @@ class OpenShiftFacts(object):
router=dict()
)
+ if 'loadbalancer' in roles:
+ loadbalancer = dict(frontend_port='8443',
+ default_maxconn='20000',
+ global_maxconn='20000',
+ limit_nofile='100000')
+ defaults['loadbalancer'] = loadbalancer
+
return defaults
def guess_host_provider(self):
diff --git a/roles/haproxy/README.md b/roles/openshift_loadbalancer/README.md
index 5bc415066..81fc282be 100644
--- a/roles/haproxy/README.md
+++ b/roles/openshift_loadbalancer/README.md
@@ -1,5 +1,5 @@
-HAProxy
-=======
+OpenShift HAProxy Loadbalancer
+==============================
TODO
diff --git a/roles/haproxy/defaults/main.yml b/roles/openshift_loadbalancer/defaults/main.yml
index a1524cfe1..a1524cfe1 100644
--- a/roles/haproxy/defaults/main.yml
+++ b/roles/openshift_loadbalancer/defaults/main.yml
diff --git a/roles/haproxy/handlers/main.yml b/roles/openshift_loadbalancer/handlers/main.yml
index 5b8691b26..5b8691b26 100644
--- a/roles/haproxy/handlers/main.yml
+++ b/roles/openshift_loadbalancer/handlers/main.yml
diff --git a/roles/haproxy/meta/main.yml b/roles/openshift_loadbalancer/meta/main.yml
index 0fad106a9..fe336acf7 100644
--- a/roles/haproxy/meta/main.yml
+++ b/roles/openshift_loadbalancer/meta/main.yml
@@ -1,7 +1,7 @@
---
galaxy_info:
author: Jason DeTiberus
- description: HAProxy
+ description: OpenShift haproxy loadbalancer
company: Red Hat, Inc.
license: Apache License, Version 2.0
min_ansible_version: 1.9
@@ -10,5 +10,6 @@ galaxy_info:
versions:
- 7
dependencies:
-- { role: os_firewall }
-- { role: openshift_repos }
+- role: openshift_facts
+- role: os_firewall
+- role: openshift_repos
diff --git a/roles/openshift_loadbalancer/tasks/main.yml b/roles/openshift_loadbalancer/tasks/main.yml
new file mode 100644
index 000000000..5514aa70b
--- /dev/null
+++ b/roles/openshift_loadbalancer/tasks/main.yml
@@ -0,0 +1,73 @@
+---
+- name: Set haproxy frontend port
+ openshift_facts:
+ role: loadbalancer
+ local_facts:
+ frontend_port: "{{ openshift_master_api_port | default(None) }}"
+
+- name: Set loadbalancer facts
+ openshift_facts:
+ role: loadbalancer
+ local_facts:
+ limit_nofile: "{{ openshift_loadbalancer_limit_nofile | default(None) }}"
+ default_maxconn: "{{ openshift_loadbalancer_default_maxconn | default(None) }}"
+ global_maxconn: "{{ openshift_loadbalancer_global_maxconn | default(None) }}"
+ frontends:
+ - name: atomic-openshift-api
+ mode: tcp
+ options:
+ - tcplog
+ binds:
+ - "*:{{ openshift.loadbalancer.frontend_port }}"
+ default_backend: atomic-openshift-api
+ backends:
+ - name: atomic-openshift-api
+ mode: tcp
+ option: tcplog
+ balance: source
+ servers: "{{ hostvars
+ | oo_select_keys(groups['oo_masters'])
+ | oo_haproxy_backend_masters(openshift.loadbalancer.frontend_port) }}"
+
+- name: Install haproxy
+ action: "{{ ansible_pkg_mgr }} name=haproxy state=present"
+ when: not openshift.common.is_containerized | bool
+
+- name: Configure systemd service directory for haproxy
+ file:
+ path: /etc/systemd/system/haproxy.service.d
+ state: directory
+ when: "'limit_nofile' in openshift.loadbalancer"
+
+- name: Configure the nofile limits for haproxy
+ ini_file:
+ dest: /etc/systemd/system/haproxy.service.d/limits.conf
+ section: Service
+ option: LimitNOFILE
+ value: "{{ openshift.loadbalancer.limit_nofile }}"
+ when: "'limit_nofile' in openshift.loadbalancer"
+ notify: restart haproxy
+ register: nofile_limit_result
+
+- name: Reload systemd if needed
+ command: systemctl daemon-reload
+ when: nofile_limit_result | changed
+
+- name: Configure haproxy
+ template:
+ src: haproxy.cfg.j2
+ dest: /etc/haproxy/haproxy.cfg
+ owner: root
+ group: root
+ mode: 0644
+ notify: restart haproxy
+
+- name: Enable and start haproxy
+ service:
+ name: haproxy
+ state: started
+ enabled: yes
+ register: start_result
+
+- set_fact:
+ haproxy_start_result_changed: "{{ start_result | changed }}"
diff --git a/roles/haproxy/templates/haproxy.cfg.j2 b/roles/openshift_loadbalancer/templates/haproxy.cfg.j2
index cb4380971..05e360d3b 100644
--- a/roles/haproxy/templates/haproxy.cfg.j2
+++ b/roles/openshift_loadbalancer/templates/haproxy.cfg.j2
@@ -3,7 +3,7 @@
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
- maxconn {{ haproxy_global_maxconn | default('4000') }}
+ maxconn {{ openshift.loadbalancer.global_maxconn }}
user haproxy
group haproxy
daemon
@@ -31,14 +31,14 @@ defaults
timeout server 300s
timeout http-keep-alive 10s
timeout check 10s
- maxconn {{ haproxy_default_maxconn | default('3000') }}
+ maxconn {{ openshift.loadbalancer.default_maxconn }}
listen stats :9000
mode http
stats enable
stats uri /
-{% for frontend in haproxy_frontends %}
+{% for frontend in openshift.loadbalancer.frontends %}
frontend {{ frontend.name }}
{% for bind in frontend.binds %}
bind {{ bind }}
@@ -59,7 +59,7 @@ frontend {{ frontend.name }}
{% endif %}
{% endfor %}
-{% for backend in haproxy_backends %}
+{% for backend in openshift.loadbalancer.backends %}
backend {{ backend.name }}
balance {{ backend.balance }}
{% if 'mode' in backend %}