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'
|
||||
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
|
||||
run: >-
|
||||
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
|
||||
when:
|
||||
- telegraf_agent_package_method == "repo"
|
||||
ignore_errors: "{{ ansible_check_mode }}"
|
||||
|
||||
- name: "Debian | Install Telegraf package (online)"
|
||||
apt:
|
||||
@ -103,6 +104,7 @@
|
||||
become: yes
|
||||
when:
|
||||
- telegraf_agent_package_method == "online" or telegraf_agent_package_method == "offline"
|
||||
ignore_errors: "{{ ansible_check_mode }}"
|
||||
|
||||
- name: "Debian | Remove repository (online/offline install)"
|
||||
file:
|
||||
|
@ -43,3 +43,4 @@
|
||||
until: is_telegraf_package_installed is succeeded
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
ignore_errors: "{{ ansible_check_mode }}"
|
||||
|
@ -62,6 +62,7 @@
|
||||
register: is_telegraf_package_installed
|
||||
until: is_telegraf_package_installed is succeeded
|
||||
become: yes
|
||||
ignore_errors: "{{ ansible_check_mode }}"
|
||||
|
||||
- name: "Suse | Create directories for telegraf"
|
||||
file:
|
||||
|
@ -128,6 +128,7 @@
|
||||
enabled: "{{ telegraf_enabled }}"
|
||||
become: yes
|
||||
when: not telegraf_agent_docker
|
||||
ignore_errors: "{{ ansible_check_mode }}"
|
||||
|
||||
- name: Configure system for for docker plugin
|
||||
block:
|
||||
|
@ -126,3 +126,4 @@
|
||||
register: brew_services_start_telegraf
|
||||
changed_when: '"Successfully started `telegraf`" in brew_services_start_telegraf.stdout'
|
||||
when: not telegraf_agent_docker
|
||||
ignore_errors: "{{ ansible_check_mode }}"
|
||||
|
Reference in New Issue
Block a user