start od deployment

This commit is contained in:
2025-11-20 18:13:43 +01:00
parent 77badc1d74
commit 5ca8d0defd
4 changed files with 101 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
## Quick context for AI coding agents
This repository contains simple Ansible playbooks and Nagios check scripts.
Keep guidance tightly focused on discoverable patterns so contributors can be productive immediately.
Key files and layout
- `site.yml` — the top-level Ansible play that applies the `pips` role to hosts.
- `roles/pips/files/` — place for executable check scripts (e.g. `memory_usage.py`).
- `roles/pips/tasks/main.yml` — role tasks (currently empty); add tasks here to deploy and configure scripts.
- `roles/pips/vars/main.yml` — role-scoped variables (currently empty).
- `README.md` — short Dutch summary: "Scripts voor nagios services".
Big-picture architecture
- This repo is a small Ansible-based deployment of Nagios/NRPE checks. The pattern is:
1. Author a script under `roles/pips/files/` (executable, Python3-friendly).
2. Add Ansible tasks in `roles/pips/tasks/main.yml` to copy/install the script on target hosts and ensure runtime deps (e.g. `psutil`) are present.
3. Configure Nagios/NRPE on the host to call the deployed script.
-Project-specific conventions
- Keep scripts in `roles/pips/files/`. Scripts should include a shebang (for example, use `/usr/bin/env python3` on the first line) and be executable.
- Use `roles/pips/tasks/main.yml` for deployment tasks; do not add ad-hoc tasks at the repo root.
- Put per-role variables in `roles/pips/vars/main.yml`.
Dependencies & integration points
- `roles/pips/files/memory_usage.py` imports `psutil`. Ensure `python3` and the `psutil` package are installed on target hosts (via distro package `python3-psutil` or `pip3 install psutil`).
- Scripts are intended to be run by Nagios or NRPE; be mindful of expected stdout/exit codes for Nagios plugins (0 OK, 1 WARNING, 2 CRITICAL, 3 UNKNOWN).
Example actionable tasks (add to `roles/pips/tasks/main.yml`):
```yaml
- name: Deploy memory_usage check
copy:
src: memory_usage.py
dest: /usr/local/bin/memory_usage.py
mode: '0755'
owner: root
group: root
- name: Ensure psutil is installed (Debian/Ubuntu)
apt:
name: python3-psutil
state: present
become: yes
```
Debugging & developer workflows
- Run the Ansible playbook locally against an inventory: `ansible-playbook -i <hosts> site.yml -u <user> --ask-become-pass`.
- To test a script locally on a host, run `python3 roles/pips/files/memory_usage.py` (or copy it to the host and run it with the same python interpreter Nagios will use).
- If adding or changing a script, ensure it's executable and returns Nagios-compatible exit codes and concise output.
What to avoid / common mistakes
- Dont add runtime installation tasks outside `roles/pips/tasks/main.yml` — keep role self-contained.
- Dont assume `psutil` exists on the host; document and/or install it in the role tasks.
When merging or extending
- If a `.github/copilot-instructions.md` already exists, preserve any project-specific notes and only append or update sections that are stale.
- Keep instructions concise (2050 lines). Use exact filenames and short code snippets (as above) to illustrate patterns.
If anything is unclear about runtime expectations (NRPE config, target paths, or packaging), ask a human: indicate the host OS and desired plugin location and the agent will propose exact task snippets.
Files referenced while drafting these instructions: `README.md`, `site.yml`, `roles/pips/files/memory_usage.py`, `roles/pips/tasks/main.yml`, `roles/pips/vars/main.yml`.
Next step: I can merge this into the repo now. Tell me if you want different default install paths (e.g. `/usr/lib/nagios/plugins`) or an explicit `requirements.txt` for script dependencies.
+1
View File
@@ -0,0 +1 @@
psutil
+36
View File
@@ -0,0 +1,36 @@
# Example: Check if /opt/app exists on remote hosts
- name: Check if /opt/app directory exists
stat:
path: /opt/ansible_workdir
register: app_dir
- name: Debug app_dir result
debug:
var: app_dir.stat.exists
- name: Ensure /opt/app directory exists
file:
path: {{ app_dir.stat.path }}
state: directory
owner: root
group: root
mode: '0755'
when: app_dir.stat.exists == false
- name: Ensure python requirements file is present
ansible.builtin.copy:
src: requirements.txt
dest: "{{ app_dir.stat.path }}/requirements.txt"
mode: '0644'
when: app_dir.stat.exists == true and python_requirements is defined
- name: Install specified python requirements
ansible.builtin.pip:
requirements: "{{ app_dir.stat.path }}/requirements.txt"
when: app_dir.stat.exists == true and python_requirements is defined
- name: Deploy custom Nagios/NRPE script
ansible.builtin.copy:
src: memory_usage_check.py
dest: /usr/local/nagios/libexec/my_custom_check.py
mode: '0755'
+1
View File
@@ -0,0 +1 @@
python_requirements: true