Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nens/serverscripts
Python scripts for sysadmin tasks on every linux server
https://github.com/nens/serverscripts
Last synced: 4 days ago
JSON representation
Python scripts for sysadmin tasks on every linux server
- Host: GitHub
- URL: https://github.com/nens/serverscripts
- Owner: nens
- License: mit
- Created: 2015-12-29T11:17:45.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-01-11T10:29:47.000Z (10 months ago)
- Last Synced: 2024-04-12T01:12:29.664Z (7 months ago)
- Language: Roff
- Size: 719 KB
- Stars: 6
- Watchers: 11
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE.rst
Awesome Lists containing this project
README
Serverscripts: python scripts for sysadmin tasks on every linux server
======================================================================This is a dependency-less python package that should be installed on all the
N&S linux servers. It contains python scripts for sysadmin tasks.All scripts should be reasonably well-behaved including ``-h/--help``,
``--version`` and ``-v/--verbose`` options.Local development and testing
-----------------------------To ensure we can test with various python 3 versions, we use "tox". To get our
hands on those python versions, we use
docker. https://github.com/fkrull/docker-multi-python has a handy dockerfile
with lots of python versions (thanks to the "deadsnakes" repository). So to
test everything::$ docker compose build
$ docker compose run --rm script toxNote that if you change something in the dependencies, you'll have to
re-create the virtualenvs::$ docker compose run --rm script tox --recreate
If you want to test agains just one of the environments, run something like
this::$ docker compose run --rm script tox -e py38
Installation on servers
-----------------------We're installed by an ansible script (see the private "sysadminsable"
repository).If you need to do it manually, pip-install it *as root* (with the correct
version number).# pip install https://github.com/nens/serverscripts/archive/1.6.0.tar.gz
Prerequisite: ``apt-get install python-pip``.
Cifsfixer
---------Script that monitors the cifs mounts. If one isn't mounted, it mounts it. If
one isn't listable, it unmounts it (lazily if needed) and later tries to
re-mount it.Should be installed in a cronjob. Suggestion for the crontab (note: it needs
to run as root)::*/5 * * * * /usr/local/bin/cifsfixer > /dev/null 2>&1
It logs to ``/var/log/cifsfixer.log``. It automatically rotates the file
itself if it gets too large. Note: if everything is OK, there is no output in
the logfile. If you want to check if the tool runs OK, run it with
``--verbose``.Checkout-info
-------------``bin/checkout-info`` collects info on git checkouts and saves it as
``/var/local/serverinfo-facts/checkouts.fact``. This is used by serverinfo. It
contains information like git repo url, python packages+versions, master or
tag checkout and so on.Should be installed in a cronjob. Suggestion for the crontab (note: it needs
to run as root)::*/5 * * * * /usr/local/bin/checkout-info > /dev/null 2>&1
Docker-info
------------``bin/docker-info`` collects info on dockers and saves availability/activity to
``/var/local/serverinfo-facts/dockers.fact``. This is used by the serverinfo
website.It also prepares info for zabbix: the number of active images, containers and
volumes.Should be installed in a cronjob. Suggestion for the crontab (note: it needs
to run as root)::*/5 * * * * /usr/local/bin/docker-info > /dev/null 2>&1
Database-info
-------------``bin/database-info`` collects info on databases. Size, number of logins,
etc.It used to include info on bloated tables, but that's disabled for now. The
query itself was pretty heavy on some databases and we don't really use the
info. Originally, it *was* useful to get a feel for how autovacuuming worked
and how it impacted everything.Geoserver-info
--------------``bin/geoserver-info`` collects info on geoserver workspaces, their usage and
the databases they connect to.To enable it, add an ``/etc/serverscripts/geoserver.json`` file with contents
like this::[{"geoserver_name": "geoserver9.lizard.net",
"logfile": "/var/log/nginx/access.log",
"data_dir": "/mnt/geoserver/data/"
}
]