mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Fix check-mode failures (#168)
* feat: Fix check-mode * ci: Add "check-mode" runs to tests * feat: Ensure check-mode works for repo-based installs
This commit is contained in:
committed by
GitHub
parent
adb678a9e5
commit
5066c5c7f9
8
.github/workflows/telegraf.yml
vendored
8
.github/workflows/telegraf.yml
vendored
@ -60,6 +60,14 @@ jobs:
|
|||||||
curl -so requirements.txt 'https://raw.githubusercontent.com/dj-wasabi/dj-wasabi-release/main/requirements.txt'
|
curl -so requirements.txt 'https://raw.githubusercontent.com/dj-wasabi/dj-wasabi-release/main/requirements.txt'
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Run role tests on empty systems in check-mode
|
||||||
|
run: >-
|
||||||
|
MY_MOLECULE_CONTAINER=${{ matrix.molecule_distro.container }}
|
||||||
|
MY_MOLECULE_IMAGE=${{ matrix.molecule_distro.image }}
|
||||||
|
MY_MOLECULE_GROUP=${{ matrix.molecule_distro.group }}
|
||||||
|
MY_MOLECULE_DOCKER_COMMAND=${{ matrix.molecule_distro.command }}
|
||||||
|
molecule test -s empty-checkmode
|
||||||
|
|
||||||
- name: Run role tests
|
- name: Run role tests
|
||||||
run: >-
|
run: >-
|
||||||
MY_MOLECULE_CONTAINER=${{ matrix.molecule_distro.container }}
|
MY_MOLECULE_CONTAINER=${{ matrix.molecule_distro.container }}
|
||||||
|
4
molecule/empty-checkmode/converge.yml
Normal file
4
molecule/empty-checkmode/converge.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
- hosts: telegraf
|
||||||
|
roles:
|
||||||
|
- role: ansible-telegraf
|
70
molecule/empty-checkmode/molecule.yml
Normal file
70
molecule/empty-checkmode/molecule.yml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: telegraf-${MY_MOLECULE_CONTAINER:-centos8}
|
||||||
|
image: ${MY_MOLECULE_IMAGE:-"geerlingguy/docker-centos8-ansible"}
|
||||||
|
command: ${MY_MOLECULE_DOCKER_COMMAND:-""}
|
||||||
|
privileged: True
|
||||||
|
pre_build_image: True
|
||||||
|
networks:
|
||||||
|
- name: telegraf
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
groups:
|
||||||
|
- telegraf
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
lint:
|
||||||
|
name: ansible-lint
|
||||||
|
inventory:
|
||||||
|
group_vars:
|
||||||
|
debian:
|
||||||
|
telegraf_agent_package_method: online
|
||||||
|
all:
|
||||||
|
telegraf_agent_package_state: latest
|
||||||
|
telegraf_agent_output:
|
||||||
|
- type: influxdb
|
||||||
|
config:
|
||||||
|
- urls = ["http://influxdb:8086"]
|
||||||
|
- database = "telegraf"
|
||||||
|
- precision = "s"
|
||||||
|
telegraf_plugins_extra:
|
||||||
|
logparser:
|
||||||
|
plugin: logparser
|
||||||
|
config:
|
||||||
|
- files = ["/var/log/messages"]
|
||||||
|
- from_beginning = false
|
||||||
|
filter:
|
||||||
|
name: grok
|
||||||
|
config:
|
||||||
|
- patterns = ["invoked oom-killer"]
|
||||||
|
telegraf_aggregators:
|
||||||
|
- aggregator: basicstats
|
||||||
|
config:
|
||||||
|
- drop_original = false
|
||||||
|
- stats = ['mean']
|
||||||
|
tagpass:
|
||||||
|
- cpu = ["cpu-total"]
|
||||||
|
|
||||||
|
scenario:
|
||||||
|
name: empty-checkmode
|
||||||
|
test_sequence:
|
||||||
|
- dependency
|
||||||
|
- cleanup
|
||||||
|
- destroy
|
||||||
|
- syntax
|
||||||
|
- create
|
||||||
|
- prepare
|
||||||
|
- check
|
||||||
|
- verify
|
||||||
|
- cleanup
|
||||||
|
- destroy
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
lint:
|
||||||
|
name: flake8
|
46
molecule/empty-checkmode/prepare.yml
Normal file
46
molecule/empty-checkmode/prepare.yml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- hosts: telegraf
|
||||||
|
tasks:
|
||||||
|
- name: "Installing packages on CentOS"
|
||||||
|
yum:
|
||||||
|
name: which
|
||||||
|
state: present
|
||||||
|
when:
|
||||||
|
- ansible_os_family == 'RedHat'
|
||||||
|
|
||||||
|
- name: "Apt get update"
|
||||||
|
shell: apt-get update
|
||||||
|
when:
|
||||||
|
- ansible_os_family == 'Debian'
|
||||||
|
|
||||||
|
- name: "Installing packages on Debian"
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- wget
|
||||||
|
- "{{ 'gnupg-agent' if ansible_distribution_major_version in ['8', '18', '16'] else 'gpg-agent' }}"
|
||||||
|
update_cache: True
|
||||||
|
state: present
|
||||||
|
when:
|
||||||
|
- ansible_os_family == 'Debian'
|
||||||
|
- ansible_distribution_major_version not in [9, 10]
|
||||||
|
|
||||||
|
- name: "Installing packages on Debian"
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- wget
|
||||||
|
- python-apt
|
||||||
|
- "{{ 'gnupg-agent' if ansible_distribution_major_version in ['8', '18', '16'] else 'gpg-agent' }}"
|
||||||
|
update_cache: True
|
||||||
|
state: present
|
||||||
|
when:
|
||||||
|
- ansible_os_family == 'Debian'
|
||||||
|
- ansible_distribution_major_version in [9, 10]
|
||||||
|
|
||||||
|
- name: "Installing packages on Suse"
|
||||||
|
zypper:
|
||||||
|
name:
|
||||||
|
- aaa_base
|
||||||
|
state: present
|
||||||
|
when:
|
||||||
|
- ansible_os_family == 'Suse'
|
32
molecule/empty-checkmode/tests/test_default.py
Normal file
32
molecule/empty-checkmode/tests/test_default.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import testinfra.utils.ansible_runner
|
||||||
|
|
||||||
|
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||||
|
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('telegraf')
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_running_and_enabled(host):
|
||||||
|
telegraf = host.service("telegraf")
|
||||||
|
if host.system_info.distribution not in ['opensuse-leap']:
|
||||||
|
assert not telegraf.is_enabled
|
||||||
|
assert not telegraf.is_running
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_dot_conf(host):
|
||||||
|
telegraf = host.file("/etc/telegraf/telegraf.conf")
|
||||||
|
assert not telegraf.exists
|
||||||
|
|
||||||
|
def test_telegraf_dot_d_dir(host):
|
||||||
|
telegraf = host.file("/etc/telegraf/telegraf.d")
|
||||||
|
assert not telegraf.exists
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_dot_d(host):
|
||||||
|
telegraf = host.file("/etc/telegraf/telegraf.d/logparser.conf")
|
||||||
|
assert not telegraf.exists
|
||||||
|
|
||||||
|
|
||||||
|
def test_telegraf_package(host):
|
||||||
|
telegraf = host.package('telegraf')
|
||||||
|
assert not telegraf.is_installed
|
@ -91,6 +91,7 @@
|
|||||||
become: yes
|
become: yes
|
||||||
when:
|
when:
|
||||||
- telegraf_agent_package_method == "repo"
|
- telegraf_agent_package_method == "repo"
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
|
||||||
- name: "Debian | Install Telegraf package (online)"
|
- name: "Debian | Install Telegraf package (online)"
|
||||||
apt:
|
apt:
|
||||||
@ -103,6 +104,7 @@
|
|||||||
become: yes
|
become: yes
|
||||||
when:
|
when:
|
||||||
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"
|
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
|
||||||
- name: "Debian | Remove repository (online/offline install)"
|
- name: "Debian | Remove repository (online/offline install)"
|
||||||
file:
|
file:
|
||||||
|
@ -43,3 +43,4 @@
|
|||||||
until: is_telegraf_package_installed is succeeded
|
until: is_telegraf_package_installed is succeeded
|
||||||
become: yes
|
become: yes
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
register: is_telegraf_package_installed
|
register: is_telegraf_package_installed
|
||||||
until: is_telegraf_package_installed is succeeded
|
until: is_telegraf_package_installed is succeeded
|
||||||
become: yes
|
become: yes
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
|
||||||
- name: "Suse | Create directories for telegraf"
|
- name: "Suse | Create directories for telegraf"
|
||||||
file:
|
file:
|
||||||
|
@ -128,6 +128,7 @@
|
|||||||
enabled: "{{ telegraf_enabled }}"
|
enabled: "{{ telegraf_enabled }}"
|
||||||
become: yes
|
become: yes
|
||||||
when: not telegraf_agent_docker
|
when: not telegraf_agent_docker
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
|
||||||
- name: Configure system for for docker plugin
|
- name: Configure system for for docker plugin
|
||||||
block:
|
block:
|
||||||
|
@ -126,3 +126,4 @@
|
|||||||
register: brew_services_start_telegraf
|
register: brew_services_start_telegraf
|
||||||
changed_when: '"Successfully started `telegraf`" in brew_services_start_telegraf.stdout'
|
changed_when: '"Successfully started `telegraf`" in brew_services_start_telegraf.stdout'
|
||||||
when: not telegraf_agent_docker
|
when: not telegraf_agent_docker
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
Reference in New Issue
Block a user