No Description

init.sls 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. {% import 'globals.jinja' as globals %}
  2. # The if conditions below ensure that the CA already exists before trying to
  3. # create a deployment certificate or install consul on the primary admin server.
  4. # This requires initially running state.highstate twice on the primary admin
  5. # server in order to configure it fully.
  6. include:
  7. - dnsmasq
  8. - generic_packages.jq
  9. - generic_packages.m2crypto
  10. - generic_packages.sharutils
  11. - generic_packages.tcpdump
  12. - mount.data
  13. - root_user
  14. - saltstack.minion
  15. - screen
  16. - ssh.server
  17. {% if (grains['id'] != globals.primary_admin_host) or salt['file.file_exists']('/data/admin/pki/deployment/ca.crt') %}
  18. - consul
  19. {%- if grains['id'] in globals.admin_hosts %}
  20. - consul.server
  21. {%- endif %}
  22. deployment-keys:
  23. group.present:
  24. - system: True
  25. /etc/deployment:
  26. file.directory
  27. /etc/deployment/ssl:
  28. file.directory:
  29. - require:
  30. - file: /etc/deployment
  31. /etc/deployment/ssl/certs:
  32. file.directory:
  33. - require:
  34. - file: /etc/deployment/ssl
  35. /etc/deployment/ssl/private:
  36. file.directory:
  37. - mode: 750
  38. - group: deployment-keys
  39. - require:
  40. - group: deployment-keys
  41. - file: /etc/deployment/ssl
  42. /etc/deployment/ssl/private/deployment.key:
  43. x509.private_key_managed:
  44. - bits: 4096
  45. - backup: True
  46. - require:
  47. - file: /etc/deployment/ssl/private
  48. /etc/deployment/ssl/certs/deployment.crt:
  49. x509.certificate_managed:
  50. - ca_server: {{ globals.primary_admin_host }}
  51. - signing_policy: {{ 'deployment_server' if grains['id'] in globals.admin_hosts else 'deployment_client' }}
  52. - CN: {{ globals.private_fqdn }}
  53. - days_remaining: 30
  54. - backup: True
  55. - public_key: /etc/deployment/ssl/private/deployment.key
  56. - require:
  57. - file: /etc/deployment/ssl/certs
  58. - x509: /etc/deployment/ssl/private/deployment.key
  59. {% set ca_certs = salt['mine.get'](globals.primary_admin_host, 'x509.get_pem_entries')[globals.primary_admin_host] %}
  60. /etc/deployment/ssl/certs/ca-chain-deployment.crt:
  61. # x509.pem_managed only allows one certificate per file, so we don't use it.
  62. # It also seems redundant given the built-in abilities of file.managed and the
  63. # jinja2 indent function.
  64. file.managed:
  65. - contents: |
  66. {{ ca_certs['/data/admin/pki/cacerts/ca_root.crt']|indent(8) }}
  67. {{ ca_certs['/data/admin/pki/cacerts/ca_deployment.crt']|indent(8) }}
  68. - require:
  69. - file: /etc/deployment/ssl/certs
  70. {% if grains['os_family'] == 'Debian' %}
  71. fix_resolv_conf:
  72. file.managed:
  73. - name: /etc/network/if-pre-up.d/fix-resolv-conf
  74. - source: salt://bootstrap/files/debian/fix-resolv-conf
  75. - template: jinja
  76. - mode: 755
  77. # Ensure that the script gets run after it gets installed for the first time,
  78. # but only after dnsmasq is installed to redirect DNS lookups to consul.
  79. run_fix_resolv_conf:
  80. cmd.run:
  81. - name: /etc/network/if-pre-up.d/fix-resolv-conf
  82. - require:
  83. - pkg: dnsmasq
  84. - service: consul
  85. - onchanges:
  86. - file: /etc/network/if-pre-up.d/fix-resolv-conf
  87. {% endif %}
  88. {% endif %}