Saltstack Official Home Assistant Formula
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
3.0KB

  1. {%- from "home_assistant/map.jinja" import server with context %}
  2. {%- if server.enabled %}
  3. home_assistant_packages:
  4. pkg.installed:
  5. - names: {{ server.pkgs }}
  6. {{ server.dir.base }}:
  7. virtualenv.manage:
  8. - system_site_packages: True
  9. - requirements: salt://home_assistant/files/requirements.txt
  10. - python: /usr/bin/python3
  11. - require:
  12. - pkg: home_assistant_packages
  13. home_assistant_install:
  14. pip.installed:
  15. {%- if server.source is defined and server.source.get("engine", "git") %}
  16. - editable: git+{{ server.source.address }}@{{ server.source.version }}#egg=homeassistant
  17. {%- else %}
  18. - name: homeassistant{%- if server.get('source', {}).version is defined %}=={{ server.source.version }}{%- endif %}
  19. {%- endif %}
  20. - pre_releases: True
  21. - bin_env: {{ server.dir.base }}
  22. - exists_action: w
  23. - require:
  24. - virtualenv: {{ server.dir.base }}
  25. - pkg: home_assistant_packages
  26. home_assistant_user:
  27. user.present:
  28. - name: home_assistant
  29. - system: true
  30. - home: {{ server.dir.base }}
  31. - require:
  32. - virtualenv: {{ server.dir.base }}
  33. home_assistant_dir:
  34. file.directory:
  35. - names:
  36. - /etc/home_assistant
  37. - /var/log/home_assistant
  38. - mode: 700
  39. - makedirs: true
  40. - user: home_assistant
  41. - require:
  42. - virtualenv: {{ server.dir.base }}
  43. {%- if server.config.engine == 'git' %}
  44. home_assistant_config:
  45. git.latest:
  46. - name: {{ server.config.address }}
  47. - target: /etc/home_assistant
  48. - rev: {{ server.config.revision|default(server.config.branch) }}
  49. {%- if grains.saltversion >= "2015.8.0" %}
  50. - branch: {{ server.config.branch|default(server.config.revision) }}
  51. {%- endif %}
  52. - force_reset: {{ server.config.force_reset|default(False) }}
  53. {%- else %}
  54. home_assistant_config_dir:
  55. file.directory:
  56. - name: /etc/home_assistant
  57. - mode: 700
  58. - makedirs: true
  59. - user: home_assistant
  60. - require:
  61. - virtualenv: {{ server.dir.base }}
  62. home_assistant_config:
  63. file.managed:
  64. - name: /etc/home_assistant/configuration.yaml
  65. - source: salt://home_assistant/files/configuration.yaml
  66. - template: jinja
  67. - user: home_assistant
  68. - mode: 600
  69. - require:
  70. - file: home_assistant_config_dir
  71. {%- if server.known_device is defined %}
  72. home_assistant_know_devices:
  73. file.managed:
  74. - name: /etc/home_assistant/known_devices.yaml
  75. - source: salt://home_assistant/files/known_devices.yaml
  76. - template: jinja
  77. - user: home_assistant
  78. - mode: 600
  79. - require:
  80. - file: home_assistant_dir
  81. {%- endif %}
  82. {%- endif %}
  83. home_assistant_service_script:
  84. file.managed:
  85. - name: /etc/systemd/system/home-assistant.service
  86. - source: salt://home_assistant/files/home-assistant.service
  87. - template: jinja
  88. - user: root
  89. - mode: 644
  90. - watch_in:
  91. - module: home_assistant_restart_systemd
  92. home_assistant_service:
  93. service.running:
  94. - name: home-assistant
  95. - enable: true
  96. - watch:
  97. - module: home_assistant_restart_systemd
  98. - file: home_assistant_service_script
  99. home_assistant_restart_systemd:
  100. module.wait:
  101. - name: service.systemctl_reload
  102. {%- endif %}