Challenge
The salt-minion
client-side agent is still a bit hefty due to its dependencies and SUSE's strange Python packaging. Let's see how to create a minimal salt-minion packaging.
Results
Just by splitting off the .py
files, I achieved a dramatic saving from 32.7 MB to 18.7 MB (14 MB less !).
See here for packages.
See mipy for a python-spec minimizer.
Normal (32.7 MB)
> sudo zypper in salt-minion
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 15 NEW packages are going to be installed:
libpgm-5_2-0 libsodium17 libzmq5 python-backports.ssl_match_hostname python-futures python-Jinja2 python-MarkupSafe python-msgpack-python python-psutil python-PyYAML python-pyzmq python-requests python-tornado salt salt-minion
The following 2 recommended packages were automatically selected:
python-futures python-tornado
15 new packages to install.
Overall download size: 6,4 MiB. Already cached: 0 B. After the operation, additional 32,7 MiB will be used.
Minified (18.8 MB)
> sudo zypper in salt-minion
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 15 NEW packages are going to be installed:
libpgm-5_2-0 libsodium17 libzmq5 python-backports.ssl_match_hostname python-futures python-Jinja2 python-MarkupSafe python-msgpack-python python-psutil python-PyYAML python-pyzmq python-requests python-tornado salt salt-minion
The following 2 recommended packages were automatically selected:
python-futures python-tornado
15 new packages to install.
Overall download size: 4,6 MiB. Already cached: 0 B. After the operation, additional 18,8 MiB will be used.
This project is part of:
Hack Week 13
Activity
Comments
-
over 9 years ago by kwk | Reply
Ubuntu Server 15.10 Standard Install
sudo apt-get install salt-minion Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: dctrl-tools debconf-utils libpgm-5.1-0 libpython-stdlib libsodium13 libyaml-0-2 libzmq3 python python-apt python-cffi python-cffi-backend python-chardet python-croniter python-crypto python-cryptography python-dateutil python-enum34 python-idna python-ipaddress python-jinja2 python-m2crypto python-markupsafe python-minimal python-msgpack python-ndg-httpsclient python-openssl python-pkg-resources python-ply python-pyasn1 python-pycparser python-requests python-six python-tz python-urllib3 python-yaml python-zmq python2.7 python2.7-minimal salt-common Suggested packages: debtags python-doc python-tk python-apt-dbg python-apt-doc python-dev python-crypto-dbg python-crypto-doc python-cryptography-doc python-cryptography-vectors python-enum34-doc python-jinja2-doc python-openssl-doc python-openssl-dbg python-setuptools python-ply-doc doc-base cpp python-ntlm python2.7-doc binutils binfmt-support salt-doc python-mako python-augeas The following NEW packages will be installed: dctrl-tools debconf-utils libpgm-5.1-0 libpython-stdlib libsodium13 libyaml-0-2 libzmq3 python python-apt python-cffi python-cffi-backend python-chardet python-croniter python-crypto python-cryptography python-dateutil python-enum34 python-idna python-ipaddress python-jinja2 python-m2crypto python-markupsafe python-minimal python-msgpack python-ndg-httpsclient python-openssl python-pkg-resources python-ply python-pyasn1 python-pycparser python-requests python-six python-tz python-urllib3 python-yaml python-zmq python2.7 python2.7-minimal salt-common salt-minion 0 upgraded, 40 newly installed, 0 to remove and 44 not upgraded. Need to get 6,710 kB of archives. After this operation, 29.3 MB of additional disk space will be used.
Similar Projects
Testing and adding GNU/Linux distributions on Uyuni by juliogonzalezgil
Join the Gitter channel! https://gitter.im/uyuni-project/hackweek
Uyuni is a configuration and infrastructure management tool that saves you time and headaches when you have to manage and update tens, hundreds or even thousands of machines. It also manages configuration, can run audits, build image containers, monitor and much more!
Currently there are a few distributions that are completely untested on Uyuni or SUSE Manager (AFAIK) or just not tested since a long time, and could be interesting knowing how hard would be working with them and, if possible, fix whatever is broken.
For newcomers, the easiest distributions are those based on DEB or RPM packages. Distributions with other package formats are doable, but will require adapting the Python and Java code to be able to sync and analyze such packages (and if salt does not support those packages, it will need changes as well). So if you want a distribution with other packages, make sure you are comfortable handling such changes.
No developer experience? No worries! We had non-developers contributors in the past, and we are ready to help as long as you are willing to learn. If you don't want to code at all, you can also help us preparing the documentation after someone else has the initial code ready, or you could also help with testing :-)
The idea is testing Salt and Salt-ssh clients, but NOT traditional clients, which are deprecated.
To consider that a distribution has basic support, we should cover at least (points 3-6 are to be tested for both salt minions and salt ssh minions):
- Reposync (this will require using spacewalk-common-channels and adding channels to the .ini file)
- Onboarding (salt minion from UI, salt minion from bootstrap scritp, and salt-ssh minion) (this will probably require adding OS to the bootstrap repository creator)
- Package management (install, remove, update...)
- Patching
- Applying any basic salt state (including a formula)
- Salt remote commands
- Bonus point: Java part for product identification, and monitoring enablement
- Bonus point: sumaform enablement (https://github.com/uyuni-project/sumaform)
- Bonus point: Documentation (https://github.com/uyuni-project/uyuni-docs)
- Bonus point: testsuite enablement (https://github.com/uyuni-project/uyuni/tree/master/testsuite)
If something is breaking: we can try to fix it, but the main idea is research how supported it is right now. Beyond that it's up to each project member how much to hack :-)
- If you don't have knowledge about some of the steps: ask the team
- If you still don't know what to do: switch to another distribution and keep testing.
This card is for EVERYONE, not just developers. Seriously! We had people from other teams helping that were not developers, and added support for Debian and new SUSE Linux Enterprise and openSUSE Leap versions :-)
Pending
FUSS
FUSS is a complete GNU/Linux solution (server, client and desktop/standalone) based on Debian for managing an educational network.
https://fuss.bz.it/
Seems to be a Debian 12 derivative, so adding it could be quite easy.
[W]
Reposync (this will require using spacewalk-common-channels and adding channels to the .ini file)[W]
Onboarding (salt minion from UI, salt minion from bootstrap script, and salt-ssh minion) (this will probably require adding OS to the bootstrap repository creator) --> Working for all 3 options (salt minion UI, salt minion bootstrap script and salt-ssh minion from the UI).[W]
Package management (install, remove, update...) --> Installing a new package works, needs to test the rest.[I]
Patching (if patch information is available, could require writing some code to parse it, but IIRC we have support for Ubuntu already). No patches detected. Do we support patches for Debian at all?[W]
Applying any basic salt state (including a formula)[W]
Salt remote commands[ ]
Bonus point: Java part for product identification, and monitoring enablement
Saline (state deployment control and monitoring tool for SUSE Manager/Uyuni) by vizhestkov
Project Description
Saline is an addition for salt used in SUSE Manager/Uyuni aimed to provide better control and visibility for states deploymend in the large scale environments.
In current state the published version can be used only as a Prometheus exporter and missing some of the key features implemented in PoC (not published). Now it can provide metrics related to salt events and state apply process on the minions. But there is no control on this process implemented yet.
Continue with implementation of the missing features and improve the existing implementation:
authentication (need to decide how it should be/or not related to salt auth)
web service providing the control of states deployment
Goal for this Hackweek
Implement missing key features
Implement the tool for state deployment control with CLI
Resources
https://github.com/openSUSE/saline
Saline (state deployment control and monitoring tool for SUSE Manager/Uyuni) by vizhestkov
Project Description
Saline is an addition for salt used in SUSE Manager/Uyuni aimed to provide better control and visibility for states deploymend in the large scale environments.
In current state the published version can be used only as a Prometheus exporter and missing some of the key features implemented in PoC (not published). Now it can provide metrics related to salt events and state apply process on the minions. But there is no control on this process implemented yet.
Continue with implementation of the missing features and improve the existing implementation:
authentication (need to decide how it should be/or not related to salt auth)
web service providing the control of states deployment
Goal for this Hackweek
Implement missing key features
Implement the tool for state deployment control with CLI
Resources
https://github.com/openSUSE/saline
Resurrect NWS CLI project by seanmarlow
Project Description
Many years back I created a simple python based CLI package that wrapped the NWS API to get weather forecasts, discussions and current conditions. Meanwhile I have not had time to keep it up-to-date so many pieces are broken or using deprecated features of the REST API. The package is useful to get weather information much quicker from CLI than clicking through the NWS website.
Goal for this Hackweek
The goal for this project is update and fix the package as well as add new features. Also, the documentation can be updated to be more thorough and useful.
Project URL: https://github.com/smarlowucf/wxcast
Tasks
- [x] Use Github actions instead of travis
- [x] Move metar to nws api
- [x] Convert string formatting to use F strings
- [x] Add get WFO info
- [x] Get a list of stations for wfo
- [x] Get station info
- [x] Fix 7 day forecast
- [x] Add temp unit option to metar
- [x] Add alias to metar for decoded version with conditions
- [x] Add/update documentation
- [x] Release new major version
Make more sense of openQA test results using AI by livdywan
Description
AI has the potential to help with something many of us spend a lot of time doing which is making sense of openQA logs when a job fails.
User Story
Allison Average has a puzzled look on their face while staring at log files that seem to make little sense. Is this a known issue, something completely new or maybe related to infrastructure changes?
Goals
- Leverage a chat interface to help Allison
- Create a model from scratch based on data from openQA
- Proof of concept for automated analysis of openQA test results
Bonus
- Use AI to suggest solutions to merge conflicts
- This would need a merge conflict editor that can suggest solving the conflict
- Use image recognition for needles
Resources
Timeline
Day 1
- Conversing with open-webui to teach me how to create a model based on openQA test results
- Asking for example code using TensorFlow in Python
- Discussing log files to explore what to analyze
- Drafting a new project called Testimony (based on Implementing a containerized Python action) - the project name was also suggested by the assistant
Day 2
- Using NotebookLLM (Gemini) to produce conversational versions of blog posts
- Researching the possibility of creating a project logo with AI
- Asking open-webui, persons with prior experience and conducting a web search for advice
Highlights
- I briefly tested compared models to see if they would make me more productive. Between llama, gemma and mistral there was no amazing difference in the results for my case.
- Convincing the chat interface to produce code specific to my use case required very explicit instructions.
- Asking for advice on how to use open-webui itself better was frustratingly unfruitful both in trivial and more advanced regards.
- Documentation on source materials used by LLM's and tools for this purpose seems virtually non-existent - specifically if a logo can be generated based on particular licenses
Outcomes
- Chat interface-supported development is providing good starting points and open-webui being open source is more flexible than Gemini. Although currently some fancy features such as grounding and generated podcasts are missing.
- Allison still has to be very experienced with openQA to use a chat interface for test review. Publicly available system prompts would make that easier, though.
ClusterOps - Easily install and manage your personal kubernetes cluster by andreabenini
Description
ClusterOps is a Kubernetes installer and operator designed to streamline the initial configuration
and ongoing maintenance of kubernetes clusters. The focus of this project is primarily on personal
or local installations. However, the goal is to expand its use to encompass all installations of
Kubernetes for local development purposes.
It simplifies cluster management by automating tasks and providing just one user-friendly YAML-based
configuration config.yml
.
Overview
- Simplified Configuration: Define your desired cluster state in a simple YAML file, and ClusterOps will handle the rest.
- Automated Setup: Automates initial cluster configuration, including network settings, storage provisioning, special requirements (for example GPUs) and essential components installation.
- Ongoing Maintenance: Performs routine maintenance tasks such as upgrades, security updates, and resource monitoring.
- Extensibility: Easily extend functionality with custom plugins and configurations.
- Self-Healing: Detects and recovers from common cluster issues, ensuring stability, idempotence and reliability. Same operation can be performed multiple times without changing the result.
- Discreet: It works only on what it knows, if you are manually configuring parts of your kubernetes and this configuration does not interfere with it you can happily continue to work on several parts and use this tool only for what is needed.
Features
- distribution and engine independence. Install your favorite kubernetes engine with your package
manager, execute one script and you'll have a complete working environment at your disposal.
- Basic config