I have an issue concerning Ansible role for node exporter installation.
So, here is my playbook
- name: install node-exporter
hosts: all
become: yes
roles:
- node-exporter
00_inventory.yaml
#all:
# children:
# nodes:
# hosts:
# ***.***.***.***:
#***.***.***.*** ansible_ssh_private_key_file=path_to_the_private_key
roles/node-exporter/defaults/main.yml
node_exporter_version: "1.3.1"
node_exporter_bin: /usr/local/bin/node_exporter
node_exporter_user: node-exporter
node_exporter_group: "{{ node_exporter_user }}"
node_exporter_dir_conf: /etc/node_exporter
# defaults file for roles/node-exporter
roles/node-exporter/handlers/main.yml
- name: reload_daemon_and_restart_node_exporter
systemd:
name: node_exporter
state: started
daemon_reload: yes
enabled: yes
# handlers file for roles/node-exporter
roles/node-exporter/tasks/main.yml
- name: check if node exporter exist
stat:
path: "{{ node_exporter_bin }}"
register: __check_node_exporter_present
- name: create node exporter user
user:
name: "{{ node_exporter_user }}"
append: true
shell: /usr/sbin/nologin
system: true
create_home: false
- name: create node exporter config dir
file:
path: "{{ node_exporter_dir_conf }}"
state: directory
owner: "{{ node_exporter_user }}"
group: "{{ node_exporter_group }}"
- name: if node exporter exist get version
shell: "cat /etc/systemd/system/node_exporter.service | grep Version | sed s/'.*Version '//g"
when: __check_node_exporter_present.stat.exists == true
changed_when: false
register: __get_node_exporter_version
- name: download and unzip node exporter if not exist
unarchive:
src: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz"
dest: /tmp/
remote_src: yes
validate_certs: no
- name: move the binary to the final destination
copy:
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64/node_exporter"
dest: "{{ node_exporter_bin }}"
owner: "{{ node_exporter_user }}"
group: "{{ node_exporter_group }}"
mode: 0755
remote_src: yes
when: __check_node_exporter_present.stat.exists == false or not __get_node_exporter_version.stdout == node_exporter_version
- name: clean
file:
path: /tmp/node_exporter-{{ node_exporter_version }}.linux-amd64/
state: absent
- name: install service
template:
src: node_exporter.service.j2
dest: /etc/systemd/system/node_exporter.service
owner: root
group: root
mode: 0755
notify: reload_daemon_and_restart_node_exporter
- meta: flush_handlers
- name: service always started
systemd:
name: node_exporter
state: started
enabled: yes
roles/node-exporter/templates/node.exporter.service.j2
[Unit]
Description=Node Exporter Version {{ node_exporter_version }}
After=network-online.target[Service]
User={{ node_exporter_user }}
Group={{ node_exporter_user }}
Type=simple
ExecStart={{ node_exporter_bin }}[Install]
WantedBy=multi-user.target
roles/node-exporter/vars/main.yml
node_exporter_version: "1.3.1"
node_exporter_bin: /usr/local/bin/node_exporter
node_exporter_user: node-exporter
node_exporter_group: "{{ node_exporter_user }}"
node_exporter_dir_conf: /etc/node_exporter---
# vars file for roles/node-exporter
So, there is the structure of the role. But the problem is below:
root@monitoring:/etc/ans_scripts# ansible-playbook -i 00_inventory.yaml playbook.yml
PLAY [install node-exporter] ***************************************************
TASK [Gathering Facts] *********************************************************
ok: [***.**.**.***]
TASK [node-exporter : check if node exporter exist] ****************************
ok: [***.**.**.***]
TASK [node-exporter : create node exporter user] *******************************
ok: [***.**.**.***]
TASK [node-exporter : create node exporter config dir] *************************
ok: [***.**.**.***]
TASK [node-exporter : if node exporter exist get version] **********************
ok: [***.**.**.***]
TASK [node-exporter : download and unzip node exporter if not exist] ***********
changed: [***.**.**.***]
TASK [node-exporter : move the binary to the final destination] ****************
skipping: [***.**.**.***]
TASK [node-exporter : clean] ***************************************************
changed: [***.**.**.***]
TASK [node-exporter : install service] *****************************************
ok: [***.**.**.***]
TASK [node-exporter : service always started] **********************************
fatal: [***.**.**.***]: FAILED! => {"changed": false, "msg": "Error loading unit file 'node_exporter': org.freedesktop.systemd1.BadUnitSetting \"Unit node_exporter.service has a bad unit file setting.\""}
PLAY RECAP *********************************************************************
***.**.**.*** : ok=8 changed=2 unreachable=0 failed=1 skipped=1 rescued=0 ignored=0
Could you please advice, how to resolve it?