Skip to content

Instantly share code, notes, and snippets.

@quantonganh
Created December 13, 2013 18:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quantonganh/7948734 to your computer and use it in GitHub Desktop.
Save quantonganh/7948734 to your computer and use it in GitHub Desktop.
include:
- graphite.common
- logrotate
- pip
- python.dev
/etc/logrotate.d/carbon:
file:
- managed
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://carbon/logrotate.jinja2
- require:
- pkg: logrotate
/var/log/graphite/carbon:
file:
- directory
- user: graphite
- group: graphite
- mode: 770
- makedirs: True
- require:
- user: graphite
- file: /var/log/graphite
{% if 'file-max' in pillar['graphite'] %}
fs.file-max:
sysctl:
- present
- value: {{ pillar['graphite']['file-max'] }}
{% endif %}
/etc/graphite/storage-schemas.conf:
file:
- managed
- template: jinja
- user: graphite
- group: graphite
- mode: 440
- source: salt://carbon/storage.jinja2
- require:
- user: graphite
- file: /etc/graphite
stop_old_instance:
service:
- name: carbon-a
- dead
- enable: False
file:
- name: /etc/init.d/carbon-a
- absent
- require:
- service: stop_old_instance
cmd:
- run
- name: mv /var/lib/graphite/whisper/ /var/lib/graphite/old
- onlyif: test -d /var/lib/graphite/whisper/carbon
- user: graphite
- group: graphite
- require:
- file: stop_old_instance
- require_in:
- file: /var/lib/graphite/whisper
move_old_data_to_first_instance:
cmd:
- run
- name: mv /var/lib/graphite/old /var/lib/graphite/whisper/0
- onlyif: test -d /var/lib/graphite/old
- require:
- file: /var/lib/graphite/whisper/0
- cmd: stop_old_instance
- require_in:
- file: carbon
carbon:
file:
- managed
- name: /usr/local/graphite/salt-carbon-requirements.txt
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://carbon/requirements.jinja2
- require:
- virtualenv: graphite
module:
- wait
- name: pip.install
- upgrade: True
- bin_env: /usr/local/graphite/bin/pip
- requirements: /usr/local/graphite/salt-carbon-requirements.txt
- install_options:
- "--prefix=/usr/local/graphite"
- "--install-lib=/usr/local/graphite/lib/python{{ grains['pythonversion'][0] }}.{{ grains['pythonversion'][1] }}/site-packages"
- watch:
- file: carbon
- pkg: python-dev
cmd:
- wait
- name: find /usr/local/graphite -name '*.pyc' -delete
- stateful: False
- watch:
- module: carbon
/etc/graphite/carbon.conf:
file:
- managed
- template: jinja
- user: root
- group: root
- mode: 440
- source: salt://carbon/config.jinja2
- require:
- file: /etc/graphite
{%- set instances_count = pillar['graphite']['carbon']['instances'] %}
{% for instance in range(instances_count) %}
carbon-cache-{{ instance }}:
file:
- managed
- name: /etc/init.d/carbon-cache-{{ instance }}
- template: jinja
- user: root
- group: root
- mode: 550
- source: salt://carbon/init.jinja2
- context:
instance: {{ instance }}
service:
- running
- enable: True
- order: 50
{# until https://github.com/saltstack/salt/issues/5027 is fixed, this is required #}
- sig: /usr/local/graphite/bin/python /usr/local/graphite/bin/carbon-cache.py --config=/etc/graphite/carbon.conf --instance={{ instance }} start
- name: carbon-cache-{{ instance }}
- require:
- user: graphite
- file: /var/log/graphite/carbon
- file: /var/lib/graphite/whisper/{{ instance }}
- watch:
- module: carbon
- cmd: carbon
- file: /etc/graphite/carbon.conf
- file: /etc/graphite/storage-schemas.conf
- file: carbon-cache-{{ instance }}
- cmd: carbon
{% endfor %}
{% set prefix = '/etc/init.d/' %}
{% for filename in salt['file.find'](prefix, name='carbon-cache-*', type='f') %}
{% set instance = filename.replace(prefix + 'carbon-cache-', '') %}
# get not_in_use_instance
{%- if instance|int >= instances_count|int %}
remove_not_in_use_instance_{{ instance }}:
service:
- dead
- name: carbon-cache-{{ instance }}
file:
- absent
- name: {{ prefix }}carbon-cache-{{ instance }}
- require:
- service: remove_not_in_use_instance_{{ instance }}
/var/log/graphite/carbon/carbon-cache-{{ instance }}:
file:
- absent
- require:
- service: remove_not_in_use_instance_{{ instance }}
/var/lib/graphite/whisper/{{ instance }}:
file:
- absent
- require:
- service: remove_not_in_use_instance_{{ instance }}
{%- endif %}
{% endfor %}
carbon-relay:
file:
- managed
- name: /etc/init.d/carbon-relay
- template: jinja
- user: root
- group: root
- mode: 550
- source: salt://carbon/init.jinja2
service:
- running
- enable: True
- order: 50
{# until https://github.com/saltstack/salt/issues/5027 is fixed, this is required #}
- sig: /usr/local/graphite/bin/python /usr/local/graphite/bin/carbon-relay.py --config=/etc/graphite/carbon.conf start
- name: carbon-relay
- require:
- user: graphite
- file: /var/log/graphite/carbon
- file: /var/lib/graphite
- watch:
- module: carbon
- cmd: carbon
- file: /etc/graphite/carbon.conf
- file: /etc/graphite/storage-schemas.conf
- file: carbon-relay
- file: /etc/graphite/relay-rules.conf
- cmd: carbon
/etc/graphite/relay-rules.conf:
file:
- managed
- source: salt://carbon/relay-rules.jinja2
- template: jinja
- user: graphite
- group: graphite
- mode: 440
- require:
- user: graphite
- file: /etc/graphite
{%- if 'whitelist' in salt['pillar.get']('graphite:carbon', False) %}
/etc/graphite/whitelist.conf:
file:
- managed
- user: graphite
- group: graphite
- mode: 440
- contents: |
{%- for rule in pillar['graphite']['carbon']['whitelist'] %}
{{ rule }}
{%- endfor %}
- require:
- user: graphite
- file: /etc/graphite
- file: /var/lib/graphite/lists
- watch_in:
{%- for instance in range(instances_count) %}
- service: carbon-cache-{{ instance }}
{%- endfor -%}
/var/lib/graphite/lists:
file:
- directory
- user: graphite
- group: graphite
- mode: 550
- require:
- file: /var/lib/graphite
{%- endif %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment