@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
92 lines (79 loc) • 2.77 kB
YAML
- name: Ensure Megabyte Labs configuration directory exists
file:
mode: 0700
path: "{{ item }}"
state: directory
loop:
- ~/.config
- ~/.config/megabytelabs
- name: Download the netdata kickstart.sh file
get_url:
url: https://my-netdata.io/kickstart.sh
dest: ~/.config/megabytelabs/netdata-kickstart.sh
register: kickstart_file
- name: "Ensure {{ app_name }} is installed and up-to-date" # noqa 301 503
command: bash ~/.config/megabytelabs/netdata-kickstart.sh --dont-wait --stable-channel --disable-telemetry
register: netdata_install
when: kickstart_file.changed
- name: Determine whether or not to add kernel optimizations for netdata
set_fact:
kernel_deduper: "{{ (netdata_install is defined) and (netdata_install.stdout is defined) \
and ('You have a kernel memory de-duper' in netdata_install.stdout) }}"
- name: "Add optimization for kernel memory de-duper (/sys/kernel/mm/ksm/run)"
command: echo 1 >/sys/kernel/mm/ksm/run
when: kernel_deduper
- name: "Add optimization for kernel memory de-duper (/sys/kernel/mm/ksm/sleep_millisecs)"
command: echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
when: kernel_deduper
- name: Ensure JOBS section is enabled in the config file
lineinfile:
path: /etc/netdata/go.d/wmi.conf
regex: "^ [JOBS]"
line: " [JOBS]"
when: monitor_windows
- name: Configure WMI to add Windows servers to monitoring
blockinfile:
path: /etc/netdata/go.d/wmi.conf
insertafter: "^ [ JOBS ]"
block: |
jobs:
{% for item in netdata_win_setting %}
- name: {{ item.name }}
url: http://{{ item.ip }}:9182/metrics"
{% endfor %}
when: monitor_windows
- name: Restart netdata
service:
name: netdata
state: restarted
when: kernel_deduper
- name: Check if netdata instance was claimed by netdata.cloud
stat:
path: ~/.config/megabytelabs/netdata-claimed
register: netdata_claim
- name: Wait for netdata to stabilize
wait_for:
timeout: 3
when:
- not netdata_claim.stat.exists
- netdata_room is defined
- netdata_token is defined
- name: Add instance to netdata cloud
command: "netdata-claim.sh -token={{ netdata_token }} -rooms={{ netdata_room }} -url={{ netdata_claim_url }}"
args:
creates: ~/.config/megabytelabs/netdata-claimed
ignore_errors: true
register: netdata_claimed_status
when:
- not netdata_claim.stat.exists
- netdata_room is defined
- netdata_token is defined
- name: Create configuration if the netdata claim was successful
file:
mode: 0600
path: ~/.config/megabytelabs/netdata-claimed
state: touch
when:
- not (netdata_claimed_status.failed | default(false))
- not (netdata_claimed_status.skipped | default(false))