New version of salt-formula from Saltstack
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

148 行
4.6KB

  1. {%- from "salt/map.jinja" import minion with context %}
  2. {%- from "linux/map.jinja" import system with context %}
  3. {%- if minion.masters is defined %}
  4. master:
  5. {%- for master in minion.masters %}
  6. - {{ master.host }}
  7. {%- endfor %}
  8. {%- else %}
  9. master: {{ minion.master.host }}
  10. {%- endif %}
  11. id: {{ system.name }}.{{ system.domain }}
  12. grains:
  13. {%- if minion.get('manage_roles', True) %}
  14. roles:
  15. {%- for key, value in pillar.items() %}
  16. {%- if key != 'master' and key != 'system' and key != 'public_keys' and key != 'private_keys' and key != 'known_hosts' and key != '__reclass__' and key != '_secret' %}
  17. {%- for subkey, subvalue in value.iteritems() %}
  18. {%- if subvalue.enabled is defined %}
  19. {%- if subvalue.enabled %}
  20. - {{key}}.{{ subkey }}
  21. {%- endif %}
  22. {%- endif %}
  23. {%- endfor %}
  24. {%- endif %}
  25. {%- endfor %}
  26. {%- endif %}
  27. services:
  28. {%- for key in pillar.__reclass__.applications %}
  29. - {{key}}
  30. {%- endfor %}
  31. grains_dirs:
  32. - /var/lib/salt/grains
  33. {%- if minion.mine is defined %}
  34. mine_functions:
  35. {%- for salt_module, salt_functions in minion.mine.module.iteritems() %}
  36. {{ salt_module }}: {{ salt_functions }}
  37. {%- endfor %}
  38. mine_interval: {{ minion.mine.get('interval', 30) }}
  39. {%- endif %}
  40. {%- if minion.sentry is defined %}
  41. sentry_handler:
  42. {% for server in minion.sentry.servers %}
  43. servers:
  44. - {{ server }}
  45. {% endfor %}
  46. project: {{ pillar.salt.minion.sentry.project }}
  47. public_key: {{ pillar.salt.minion.sentry.public_key }}
  48. secret_key: {{ pillar.salt.minion.sentry.secret_key }}
  49. {% if pillar.salt.minion.sentry.log_level is defined %}
  50. log_level: {{ pillar.salt.minion.sentry.log_level }}
  51. {%- endif %}
  52. {%- endif %}
  53. {%- if pillar.get('galera', {}).master is defined %}
  54. {%- from "galera/map.jinja" import master with context %}
  55. mysql.unix_socket: {{ master.socket }}
  56. mysql.user: '{{ pillar.galera.master.admin.user }}'
  57. mysql.pass: '{{ pillar.galera.master.admin.password }}'
  58. mysql.db: 'mysql'
  59. mysql.charset: 'utf8'
  60. {%- elif pillar.get('mysql', {}).server is defined %}
  61. mysql.unix_socket: /var/run/mysqld/mysqld.sock
  62. {%- if pillar.mysql.server.admin is defined %}
  63. mysql.user: '{{ pillar.mysql.server.admin.user }}'
  64. mysql.pass: '{{ pillar.mysql.server.admin.password }}'
  65. {%- else %}
  66. mysql.user: 'root'
  67. mysql.pass: ''
  68. {%- endif %}
  69. mysql.db: 'mysql'
  70. mysql.charset: 'utf8'
  71. {%- endif %}
  72. {%- endif %}
  73. {%- if pillar.get('mongodb', {}).server is defined %}
  74. mongodb.host: 'localhost'
  75. mongodb.port: {{ pillar.mongodb.server.bind.port }}
  76. mongodb.user: '{{ pillar.mongodb.server.admin.user }}'
  77. mongodb.password: '{{ pillar.mongodb.server.admin.password }}'
  78. {%- endif %}
  79. {%- if pillar.get('galera', {}).slave is defined %}
  80. mysql.unix_socket: /var/run/mysqld/mysqld.sock
  81. mysql.user: '{{ pillar.galera.slave.admin.user }}'
  82. mysql.pass: '{{ pillar.galera.slave.admin.password }}'
  83. mysql.db: 'mysql'
  84. mysql.charset: 'utf8'
  85. {%- endif %}
  86. {%- if pillar.get('postgresql', {}).server is defined %}
  87. postgres.user: 'postgres'
  88. postgres.pass: ''
  89. postgres.db: 'template1'
  90. {%- endif %}
  91. {%- if pillar.get('gitlab', {}).client is defined %}
  92. gitlab.url: 'https://{{ pillar.gitlab.client.server.host }}/'
  93. gitlab.token: '{{ pillar.gitlab.client.server.token }}'
  94. {%- elif pillar.get('gitlab', {}).server is defined %}
  95. gitlab.url: 'https://{{ pillar.gitlab.server.server_name }}/'
  96. gitlab.token: '{{ pillar.gitlab.server.token }}'
  97. {%- endif %}
  98. {%- if pillar.get('keystone', {}).get('server', {'enabled': False } ).enabled %}
  99. keystone.token: '{{ pillar.keystone.server.service_token }}'
  100. keystone.endpoint: 'http://{{ pillar.keystone.server.bind.private_address }}:{{ pillar.keystone.server.bind.private_port }}/v2.0'
  101. {%- elif pillar.get('keystone', {}).get('client', {'enabled': False } ).enabled %}
  102. {%- if pillar.keystone.client.server.service_token is defined %}
  103. keystone.token: '{{ pillar.keystone.client.server.service_token }}'
  104. keystone.endpoint: 'http://{{ pillar.keystone.client.server.host }}:{{ pillar.keystone.client.server.private_port }}/v2.0'
  105. {%- else %}
  106. keystone.user: '{{ pillar.keystone.client.server.user }}'
  107. keystone.password: '{{ pillar.keystone.client.server.password }}'
  108. keystone.tenant: '{{ pillar.keystone.client.server.tenant }}'
  109. keystone.auth_url: 'http://{{ pillar.keystone.client.server.host }}:{{ pillar.keystone.client.server.public_port }}/v2.0/'
  110. {%- endif %}
  111. {%- endif %}
  112. {%- for handler in pillar.salt.minion.get("handlers", []) %}
  113. {%- if handler.engine == "udp"%}
  114. logstash_udp_handler:
  115. host: {{ handler.host }}
  116. port: {{ handler.port }}
  117. version: 1
  118. {%- endif %}
  119. {%- if handler.engine == "zmq"%}
  120. logstash_zmq_handler:
  121. address: tcp://{{ handler.host }}:{{ handler.port }}
  122. version: 1
  123. {%- endif %}
  124. {%- endfor %}