Skip to content
This repository was archived by the owner on Mar 6, 2023. It is now read-only.

Commit efd7bc1

Browse files
DaazKupaulfantom
authored andcommitted
add option to propagate binaries without access to internet (#126)
* add option to propagate binaries without access to internet Same as cloudalchemy/ansible-alertmanager#83 and cloudalchemy/ansible-prometheus#239 but for Node exporter. * Fix typo * Fix molecule/alternative/prepare.yml * Fix molecule/alternative/prepare.yml again :D * Fix _checksum not being defined * Use double quotes for consistency * Fix typo... * Fix c/p error
1 parent c4d8c0e commit efd7bc1

File tree

6 files changed

+87
-35
lines changed

6 files changed

+87
-35
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ All variables which can be overridden are stored in [defaults/main.yml](defaults
2424
| Name | Default Value | Description |
2525
| -------------- | ------------- | -----------------------------------|
2626
| `node_exporter_version` | 0.18.1 | Node exporter package version. Also accepts latest as parameter. |
27+
| `node_exporter_binaries_local_dir` | "" | Allows to use local packages instead of ones distributed on github. As parameter it takes a directory where `node_exporter` binary is stored on host on which ansible is ran. This overrides `node_exporter_version` parameter |
2728
| `node_exporter_web_listen_address` | "0.0.0.0:9100" | Address on which node exporter will listen |
2829
| `node_exporter_system_group` | "node-exp" | System group used to run node_exporter |
2930
| `node_exporter_system_user` | "node-exp" | System user used to run node_exporter |

defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
22
node_exporter_version: 0.18.1
3+
node_exporter_binary_local_dir: ""
34
node_exporter_web_listen_address: "0.0.0.0:9100"
45

56
node_exporter_system_group: "node-exp"

molecule/alternative/playbook.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
roles:
66
- ansible-node-exporter
77
vars:
8+
node_exporter_binary_local_dir: "/tmp/node_exporter-linux-amd64"
89
node_exporter_system_group: "root"
910
node_exporter_system_user: "root"
1011
node_exporter_textfile_dir: ""

molecule/alternative/prepare.yml

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,37 @@
11
---
22
- name: Prepare
3-
hosts: all
3+
hosts: localhost
44
gather_facts: false
5-
tasks: []
5+
vars:
6+
go_arch: amd64
7+
node_exporter_version: 0.18.1
8+
tasks:
9+
- name: Download node_exporter binary to local folder
10+
become: false
11+
get_url:
12+
url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
13+
dest: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
14+
register: _download_binary
15+
until: _download_binary is succeeded
16+
retries: 5
17+
delay: 2
18+
run_once: true
19+
check_mode: false
20+
21+
- name: Unpack node_exporter binary
22+
become: false
23+
unarchive:
24+
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
25+
dest: "/tmp"
26+
creates: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
27+
run_once: true
28+
check_mode: false
29+
30+
- name: link to node_exporter binaries directory
31+
become: false
32+
file:
33+
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64"
34+
dest: "/tmp/node_exporter-linux-amd64"
35+
state: link
36+
run_once: true
37+
check_mode: false

tasks/install.yml

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,46 @@
2727
home: /
2828
when: node_exporter_system_user != "root"
2929

30-
- name: Download node_exporter binary to local folder
31-
become: false
32-
get_url:
33-
url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
34-
dest: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
35-
checksum: "sha256:{{ node_exporter_checksum }}"
36-
register: _download_binary
37-
until: _download_binary is succeeded
38-
retries: 5
39-
delay: 2
40-
delegate_to: localhost
41-
check_mode: false
30+
- block:
31+
- name: Download node_exporter binary to local folder
32+
become: false
33+
get_url:
34+
url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
35+
dest: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
36+
checksum: "sha256:{{ node_exporter_checksum }}"
37+
register: _download_binary
38+
until: _download_binary is succeeded
39+
retries: 5
40+
delay: 2
41+
delegate_to: localhost
42+
check_mode: false
43+
44+
- name: Unpack node_exporter binary
45+
become: false
46+
unarchive:
47+
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
48+
dest: "/tmp"
49+
creates: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
50+
delegate_to: localhost
51+
check_mode: false
4252

43-
- name: Unpack node_exporter binary
44-
become: false
45-
unarchive:
46-
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
47-
dest: "/tmp"
48-
creates: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
49-
delegate_to: localhost
50-
check_mode: false
53+
- name: Propagate node_exporter binaries
54+
copy:
55+
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
56+
dest: "/usr/local/bin/node_exporter"
57+
mode: 0755
58+
owner: root
59+
group: root
60+
notify: restart node_exporter
61+
when: not ansible_check_mode
62+
when: node_exporter_binary_local_dir | length == 0
5163

52-
- name: Propagate node_exporter binaries
64+
- name: propagate locally distributed node_exporter binary
5365
copy:
54-
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
66+
src: "{{ node_exporter_binary_local_dir }}/node_exporter"
5567
dest: "/usr/local/bin/node_exporter"
5668
mode: 0755
5769
owner: root
5870
group: root
71+
when: node_exporter_binary_local_dir | length > 0
5972
notify: restart node_exporter
60-
when: not ansible_check_mode

tasks/preflight.yml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,22 @@
6666
- name: "Set node_exporter version to {{ _latest_release.json.tag_name[1:] }}"
6767
set_fact:
6868
node_exporter_version: "{{ _latest_release.json.tag_name[1:] }}"
69-
when: node_exporter_version == "latest"
69+
when:
70+
- node_exporter_version == "latest"
71+
- node_exporter_binary_local_dir | length == 0
7072
delegate_to: localhost
7173
run_once: true
7274

73-
- name: Get checksum list from github
74-
set_fact:
75-
_checksums: "{{ lookup('url', 'https://github.com/prometheus/node_exporter/releases/download/v' + node_exporter_version + '/sha256sums.txt', wantlist=True) | list }}"
76-
run_once: true
75+
- block:
76+
- name: Get checksum list from github
77+
set_fact:
78+
_checksums: "{{ lookup('url', 'https://github.com/prometheus/node_exporter/releases/download/v' + node_exporter_version + '/sha256sums.txt', wantlist=True) | list }}"
79+
run_once: true
7780

78-
- name: "Get checksum for {{ go_arch }} architecture"
79-
set_fact:
80-
node_exporter_checksum: "{{ item.split(' ')[0] }}"
81-
with_items: "{{ _checksums }}"
82-
when: "('linux-' + go_arch + '.tar.gz') in item"
81+
- name: "Get checksum for {{ go_arch }} architecture"
82+
set_fact:
83+
node_exporter_checksum: "{{ item.split(' ')[0] }}"
84+
with_items: "{{ _checksums }}"
85+
when:
86+
- "('linux-' + go_arch + '.tar.gz') in item"
87+
when: node_exporter_binary_local_dir | length == 0

0 commit comments

Comments
 (0)