| {%- from "etcd/map.jinja" import server with context %} |
| {%- if server.enabled %} |
| |
| {%- if server.get('source', {}).get('engine', 'pkg') == 'pkg' %} |
| |
| etcd_packages: |
| pkg.installed: |
| - names: {{ server.pkgs }} |
| {%- if server.get('engine', 'systemd') %} |
| - require: |
| - file: /etc/default/etcd |
| {% if not grains.get('noservices', False) %} |
| - watch_in: |
| - service: etcd |
| {% endif %} |
| {%- endif %} |
| |
| |
| {% elif server.get('source', {}).get('engine') == 'docker_hybrid' %} |
| |
| {%- if grains.os_family == 'RedHat' %} |
| etcd_enable_epel: |
| pkg.installed: |
| - name: epel-release |
| |
| etcd_install_pip: |
| pkg.installed: |
| - name: python2-pip |
| |
| etcd_python_etcd_from_pip: |
| pip.installed: |
| - name: python-etcd |
| |
| {%- endif %} |
| |
| |
| {%- set _support_pkgs = [] %} |
| {%- for pkg in server.pkgs %} |
| {%- if pkg != 'etcd' %} |
| {%- do _support_pkgs.append(pkg) %} |
| {%- endif %} |
| {%- endfor %} |
| |
| {%- if _support_pkgs|length >= 1 %} |
| etcd_support_packages: |
| pkg.installed: |
| - pkgs: |
| {%- for pkg in _support_pkgs %} |
| - {{ pkg }} |
| {%- endfor %} |
| |
| {%- endif %} |
| |
| user_etcd: |
| user.present: |
| - name: etcd |
| - shell: /bin/false |
| - home: /var/lib/etcd |
| - gid_from_name: True |
| |
| /tmp/etcd: |
| file.directory: |
| - user: root |
| - group: root |
| |
| copy-etcd-binaries: |
| dockerng.running: |
| - image: {{ server.get('image', 'quay.io/coreos/etcd:latest') }} |
| - entrypoint: cp |
| - command: -vr /usr/local/bin/ /tmp/etcd/ |
| - binds: |
| - /tmp/etcd/:/tmp/etcd/ |
| - force: True |
| - require: |
| - file: /tmp/etcd |
| |
| {%- for filename in ['etcd', 'etcdctl'] %} |
| |
| /usr/local/bin/{{ filename }}: |
| file.managed: |
| - source: /tmp/etcd/bin/{{ filename }} |
| - mode: 755 |
| - user: root |
| - group: root |
| - require: |
| - dockerng: copy-etcd-binaries |
| {% if not grains.get('noservices', False) %} |
| - watch_in: |
| - service: etcd |
| {% endif %} |
| |
| {% endfor %} |
| |
| /etc/systemd/system/etcd.service: |
| file.managed: |
| - source: salt://etcd/files/systemd/etcd.service |
| - template: jinja |
| - user: root |
| - group: root |
| |
| {% endif %} |
| |
| {%- if server.get('engine', 'systemd') == 'kubernetes' %} |
| |
| etcd_service: |
| service.dead: |
| - name: etcd |
| - enable: False |
| |
| /var/log/etcd.log: |
| file.managed: |
| - user: etcd |
| - group: root |
| - mode: 644 |
| |
| /etc/kubernetes/manifests/etcd.manifest: |
| file.managed: |
| - source: salt://etcd/files/etcd.manifest |
| - template: jinja |
| - user: root |
| - group: root |
| - mode: 644 |
| - makedirs: true |
| - dir_mode: 755 |
| |
| {%- else %} |
| |
| /etc/default/etcd: |
| file.managed: |
| - source: salt://etcd/files/default |
| - template: jinja |
| - defaults: |
| {%- if salt['cmd.run']('. /var/lib/etcd/configenv; etcdctl cluster-health > /dev/null 2>&1; echo $?') != '0' %} |
| initial_cluster_state: new |
| {%- else %} |
| initial_cluster_state: existing |
| {%- endif %} |
| {% if not grains.get('noservices', False) %} |
| - watch_in: |
| - service: etcd |
| {% endif %} |
| |
| /var/lib/etcd/: |
| file.directory: |
| - user: etcd |
| - recurse: |
| - user |
| |
| /var/lib/etcd/configenv: |
| file.managed: |
| - source: salt://etcd/files/configenv |
| - template: jinja |
| - user: etcd |
| - require: |
| - file: /var/lib/etcd/ |
| |
| {% if not grains.get('noservices', False) %} |
| |
| etcd: |
| service.running: |
| - enable: True |
| - name: {{ server.services }} |
| |
| {%- endif %} |
| |
| {%- endif %} |
| |
| {%- endif %} |