{%- from "home_assistant/map.jinja" import server with context %} {%- if server.enabled %} home_assistant_packages: pkg.installed: - names: {{ server.pkgs }} {{ server.dir.base }}: virtualenv.manage: - system_site_packages: True - requirements: salt://home_assistant/files/requirements.txt - python: /usr/bin/python3 - require: - pkg: home_assistant_packages home_assistant_install: pip.installed: {%- if server.source is defined and server.source.get("engine", "git") %} - editable: git+{{ server.source.address }}@{{ server.source.version }}#egg=homeassistant {%- else %} - name: homeassistant{%- if server.get('source', {}).version is defined %}=={{ server.source.version }}{%- endif %} {%- endif %} - pre_releases: True - bin_env: {{ server.dir.base }} - exists_action: w - require: - virtualenv: {{ server.dir.base }} - pkg: home_assistant_packages home_assistant_user: user.present: - name: home_assistant - system: true - home: {{ server.dir.base }} - require: - virtualenv: {{ server.dir.base }} home_assistant_dir: file.directory: - names: - /etc/home_assistant - /var/log/home_assistant - mode: 700 - makedirs: true - user: home_assistant - require: - virtualenv: {{ server.dir.base }} {%- if server.config.engine == 'git' %} home_assistant_config: git.latest: - name: {{ server.config.address }} - target: /etc/home_assistant - rev: {{ server.config.revision|default(server.config.branch) }} {%- if grains.saltversion >= "2015.8.0" %} - branch: {{ server.config.branch|default(server.config.revision) }} {%- endif %} - force_reset: {{ server.config.force_reset|default(False) }} {%- else %} home_assistant_config_dir: file.directory: - name: /etc/home_assistant - mode: 700 - makedirs: true - user: home_assistant - require: - virtualenv: {{ server.dir.base }} home_assistant_config: file.managed: - name: /etc/home_assistant/configuration.yaml - source: salt://home_assistant/files/configuration.yaml - template: jinja - user: home_assistant - mode: 600 - require: - file: home_assistant_config_dir {%- if server.known_device is defined %} home_assistant_know_devices: file.managed: - name: /etc/home_assistant/known_devices.yaml - source: salt://home_assistant/files/known_devices.yaml - template: jinja - user: home_assistant - mode: 600 - require: - file: home_assistant_dir {%- endif %} {%- endif %} home_assistant_service_script: file.managed: - name: /etc/systemd/system/home-assistant.service - source: salt://home_assistant/files/home-assistant.service - template: jinja - user: root - mode: 644 - watch_in: - module: home_assistant_restart_systemd home_assistant_service: service.running: - name: home-assistant - enable: true - watch: - module: home_assistant_restart_systemd - file: home_assistant_service_script home_assistant_restart_systemd: module.wait: - name: service.systemctl_reload {%- endif %}