Containers and services defined on pools
diff --git a/README.rst b/README.rst
index 3d4a016..fbd3555 100644
--- a/README.rst
+++ b/README.rst
@@ -16,6 +16,35 @@
Sample pillars
==============
+Containers on pool definitions in pool.service.local
+
+parameters:
+ kubernetes:
+ pool:
+ service:
+ local:
+ enabled: False
+ service: libvirt
+ cluster: openstack-compute
+ namespace: default
+ role: ${linux:system:name}
+ type: LoadBalancer
+ kind: Deployment
+ apiVersion: extensions/v1beta1
+ replicas: 1
+ host_pid: True
+ nodeSelector:
+ - key: openstack
+ value: ${linux:system:name}
+ hostNetwork: True
+ container:
+ libvirt-compute:
+ privileged: True
+ image: ${_param:docker_repository}/libvirt-compute
+ tag: ${_param:openstack_container_tag}
+
+Master definition
+
.. code-block:: yaml
kubernetes:
@@ -356,7 +385,7 @@
path: /etc/certs
emptyDir
-===========
+========
.. code-block:: yaml
diff --git a/kubernetes/control/cluster.sls b/kubernetes/control/cluster.sls
index d0d7ac0..e9e325d 100644
--- a/kubernetes/control/cluster.sls
+++ b/kubernetes/control/cluster.sls
@@ -7,7 +7,8 @@
{%- for service_name, service in control.service.iteritems() %}
-{%- if service.enabled == true %}
+{%- if service.enabled %}
+
/srv/kubernetes/services/{{ service_name }}-svc.yml:
file.managed:
- source: salt://kubernetes/files/svc.yml
@@ -19,6 +20,7 @@
- file: /srv/kubernetes
- defaults:
service: {{ service|yaml }}
+
{%- endif %}
/srv/kubernetes/{{ service.cluster }}/{{ service_name }}-{{ service.kind }}.yml:
@@ -35,4 +37,42 @@
{%- endfor %}
+{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
+
+{%- if node_grains.get('kubernetes', {}).service is defined %}
+
+{%- set service = node_grains.get('kubernetes', {}).get('service', {}) %}
+
+{%- if service.enabled %}
+
+/srv/kubernetes/services/{{ node_name }}-svc.yml:
+ file.managed:
+ - source: salt://kubernetes/files/svc.yml
+ - user: root
+ - group: root
+ - template: jinja
+ - makedirs: true
+ - require:
+ - file: /srv/kubernetes
+ - defaults:
+ service: {{ service|yaml }}
+
+{%- endif %}
+
+/srv/kubernetes/{{ service.cluster }}/{{ node_name }}-{{ service.kind }}.yml:
+ file.managed:
+ - source: salt://kubernetes/files/rc.yml
+ - user: root
+ - group: root
+ - template: jinja
+ - makedirs: true
+ - require:
+ - file: /srv/kubernetes
+ - defaults:
+ service: {{ service|yaml }}
+
+{%- endif %}
+
+{%- endfor %}
+
{%- endif %}
\ No newline at end of file
diff --git a/kubernetes/files/kubernetes.grain b/kubernetes/files/kubernetes.grain
new file mode 100644
index 0000000..a053883
--- /dev/null
+++ b/kubernetes/files/kubernetes.grain
@@ -0,0 +1,3 @@
+{%- from "kubernetes/map.jinja" import pool with context -%}
+{%- set service_grains = {'kubernetes': {'service': pool.get('service', {}).get('local', {})}} -%}
+{{ service_grains|yaml(False) }}
\ No newline at end of file
diff --git a/kubernetes/pool/service.sls b/kubernetes/pool/service.sls
index 743bee4..6abce3c 100644
--- a/kubernetes/pool/service.sls
+++ b/kubernetes/pool/service.sls
@@ -5,4 +5,20 @@
include:
- kubernetes._common
+kubernetes_pool_container_grains_dir:
+ file.directory:
+ - name: /etc/salt/grains.d
+ - mode: 700
+ - makedirs: true
+ - user: root
+
+kubernetes_pool_container_grain:
+ file.managed:
+ - name: /etc/salt/grains.d/kubernetes
+ - source: salt://kubernetes/files/kubernetes.grain
+ - template: jinja
+ - mode: 600
+ - require:
+ - file: kubernetes_pool_container_grains_dir
+
{%- endif %}
\ No newline at end of file