<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SlyBlog</title>
	<atom:link href="http://blog.slyon.de/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.slyon.de</link>
	<description>Free and Open Source Software and Hardware.</description>
	<lastBuildDate>Mon, 24 Nov 2025 12:02:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.slyon.de/wp-content/uploads/2016/02/crystal-tux-chris-kempso-01-150x150.png</url>
	<title>SlyBlog</title>
	<link>https://blog.slyon.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Maximierung der Effizienz: Automatisierungstechniken in LibreOffice auf dedizierten Servern</title>
		<link>https://blog.slyon.de/2025/11/24/maximierung-der-effizienz-automatisierungstechniken-in-libreoffice-auf-dedizierten-servern/</link>
					<comments>https://blog.slyon.de/2025/11/24/maximierung-der-effizienz-automatisierungstechniken-in-libreoffice-auf-dedizierten-servern/#comments</comments>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Mon, 24 Nov 2025 12:02:17 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Sponsored]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[sponsored]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2438</guid>

					<description><![CDATA[Automatisierung ist der Schlüssel zur Effizienzsteigerung in der modernen Arbeitswelt. Besonders bei der Verwaltung großer Datenmengen oder sich wiederholender Aufgaben kann die Automatisierung erhebliche Vorteile bieten. LibreOffice, eine der führenden freien Office-Suiten, bietet vielfältige Möglichkeiten, um Arbeitsabläufe durch Automatisierung zu optimieren, insbesondere auf dedizierten Servern. Dieser Beitrag beleuchtet, wie erweiterte Automatisierungstechniken in LibreOffice eingesetzt werden ... <a title="Maximierung der Effizienz: Automatisierungstechniken in LibreOffice auf dedizierten Servern" class="read-more" href="https://blog.slyon.de/2025/11/24/maximierung-der-effizienz-automatisierungstechniken-in-libreoffice-auf-dedizierten-servern/" aria-label="Read more about Maximierung der Effizienz: Automatisierungstechniken in LibreOffice auf dedizierten Servern">Read more</a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://blog.slyon.de/wp-content/uploads/2025/11/image.png"><img fetchpriority="high" decoding="async" width="1024" height="585" src="https://blog.slyon.de/wp-content/uploads/2025/11/image-1024x585.png" alt="" class="wp-image-2439" srcset="https://blog.slyon.de/wp-content/uploads/2025/11/image-1024x585.png 1024w, https://blog.slyon.de/wp-content/uploads/2025/11/image-300x171.png 300w, https://blog.slyon.de/wp-content/uploads/2025/11/image-768x439.png 768w, https://blog.slyon.de/wp-content/uploads/2025/11/image-1536x878.png 1536w, https://blog.slyon.de/wp-content/uploads/2025/11/image.png 1792w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>Automatisierung ist der Schlüssel zur Effizienzsteigerung in der modernen Arbeitswelt. Besonders bei der Verwaltung großer Datenmengen oder sich wiederholender Aufgaben kann die Automatisierung erhebliche Vorteile bieten. LibreOffice, eine der führenden freien Office-Suiten, bietet vielfältige Möglichkeiten, um Arbeitsabläufe durch Automatisierung zu optimieren, insbesondere auf dedizierten Servern. Dieser Beitrag beleuchtet, wie erweiterte Automatisierungstechniken in LibreOffice eingesetzt werden können, um die Effizienz zu maximieren.</p>



<h2 class="wp-block-heading">Herausforderungen in der Büroautomatisierung</h2>



<p>In vielen Unternehmen sind <a href="https://it-nerd24.de/office-organisation/office-programme/"><u>Office-Programme</u></a> unverzichtbare Werkzeuge. Dennoch gibt es Herausforderungen, die die Effizienz beeinträchtigen können. Manuelle Datenverarbeitung ist zeitaufwändig und fehleranfällig. Wiederholte Eingaben und Formatierungen beanspruchen wertvolle Ressourcen und können die Produktivität erheblich senken. Diese Probleme werden noch komplexer, wenn große Datenmengen auf dedizierten Servern verarbeitet werden müssen, wo Geschwindigkeit und Zuverlässigkeit entscheidend sind.</p>



<h3 class="wp-block-heading">Die Rolle dedizierter Server</h3>



<p>Dedizierte Server bieten eine leistungsstarke Plattform zur Verarbeitung komplexer Aufgaben. Sie ermöglichen es, große Datenmengen effizient zu verwalten und zu verarbeiten. Doch ohne geeignete Automatisierungstechniken kann das volle Potenzial dieser Server nicht ausgeschöpft werden. Hier setzt die Automatisierung mit LibreOffice an, um diese Herausforderungen zu meistern und die Effizienz zu steigern.</p>



<h2 class="wp-block-heading">Automatisierungstechniken in LibreOffice</h2>



<p>LibreOffice bietet verschiedene Möglichkeiten zur Automatisierung, die von einfachen Makros bis hin zu komplexen Skripten reichen. Diese Techniken helfen, Routineaufgaben zu automatisieren und die Konsistenz der Datenverarbeitung zu gewährleisten.</p>



<h3 class="wp-block-heading">Makros und Skripte</h3>



<p>Makros sind eine der einfachsten Methoden zur Automatisierung in LibreOffice. Sie ermöglichen es, wiederkehrende Aufgaben mit einem einzigen Klick auszuführen. Ein einfaches Makro zur Automatisierung könnte beispielsweise so aussehen:</p>



<pre class="wp-block-code"><code>Sub SimpleMacro
MsgBox "Dies ist ein automatisierter Prozess!"
End Sub</code></pre>



<p>Für komplexere Automatisierungen bieten sich Skripte in Python oder JavaScript an. Diese Skripte können komplexe Berechnungen durchführen oder Daten aus verschiedenen Quellen integrieren. Durch die Nutzung dieser Skripte auf dedizierten Servern kann die Verarbeitungsgeschwindigkeit erheblich gesteigert werden.</p>



<h3 class="wp-block-heading">Integration mit Datenbanken</h3>



<p>Eine weitere Möglichkeit zur Effizienzsteigerung ist die Integration von LibreOffice mit externen Datenbanken. Dies ermöglicht den automatisierten Import und Export von Daten, wodurch manuelle Eingaben minimiert werden. Beispielsweise kann ein Skript automatisch Daten aus einer SQL-Datenbank abrufen, analysieren und in einem LibreOffice Calc-Dokument darstellen.</p>



<h2 class="wp-block-heading">Implementierung auf dedizierten Servern</h2>



<p>Die Implementierung von Automatisierungstechniken auf dedizierten Servern erfordert eine gezielte Planung und Ausführung. Hierbei spielen Skalierung und Sicherheit eine entscheidende Rolle.</p>



<h3 class="wp-block-heading">Skalierung und Leistung</h3>



<p>Um die Leistung zu maximieren, sollten Automatisierungsprozesse so konzipiert werden, dass sie die Ressourcen des Servers optimal nutzen. Dazu gehört die parallele Verarbeitung von Aufgaben und die effiziente Nutzung von Speicher und CPU. Ein Beispiel für eine skalierbare Lösung ist die Nutzung von Docker-Containern, um LibreOffice-Instanzen in isolierten Umgebungen auszuführen. Dies ermöglicht es, mehrere Prozesse gleichzeitig zu betreiben, ohne dass es zu Ressourcenengpässen kommt.</p>



<h3 class="wp-block-heading">Sicherheit und Wartung</h3>



<p>Sicherheit ist ein wesentlicher Aspekt bei der Automatisierung auf dedizierten Servern. Es ist wichtig, dass alle Automatisierungsprozesse regelmäßig auf Sicherheitslücken überprüft werden. Zudem sollten Backups und Wiederherstellungspläne vorhanden sein, um Datenverlust zu vermeiden.</p>



<h2 class="wp-block-heading">Vorteile der Automatisierung</h2>



<p>Die Implementierung erweiterter Automatisierungstechniken in LibreOffice bietet zahlreiche Vorteile, die weit über die reine Effizienzsteigerung hinausgehen.</p>



<ul class="wp-block-list">
<li>Zeitersparnis: Automatisierung reduziert die Notwendigkeit manueller Eingaben und ermöglicht es, komplexe Aufgaben in kürzerer Zeit zu erledigen.</li>



<li>Fehlerreduktion: Durch die Automatisierung werden menschliche Fehler minimiert, was die Genauigkeit der Datenverarbeitung erhöht.</li>



<li>Kosteneffizienz: Die Reduzierung der benötigten Arbeitszeit führt zu einer Senkung der Betriebskosten.</li>



<li>Skalierbarkeit: Automatisierte Prozesse lassen sich leicht an wachsende Datenmengen anpassen, ohne dass die Leistung darunter leidet.</li>
</ul>



<h2 class="wp-block-heading">Vergleichstabelle: Vorher und Nachher der Automatisierung</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Kriterium</strong></th><th><strong>Vor Automatisierung</strong></th><th><strong>Nach Automatisierung</strong></th></tr></thead><tbody><tr><td>Bearbeitungszeit</td><td>Hoch</td><td>Niedrig</td></tr><tr><td>Fehlerquote</td><td>Hoch</td><td>Niedrig</td></tr><tr><td>Betriebskosten</td><td>Hoch</td><td>Gering</td></tr></tbody></table></figure>



<p>Durch die gezielte Implementierung von Automatisierungstechniken in LibreOffice können Unternehmen ihre Effizienz erheblich steigern und gleichzeitig die Qualität ihrer Datenverarbeitung verbessern. Dedizierte Server bieten die ideale Plattform, um diese Techniken effektiv einzusetzen und das volle Potenzial von LibreOffice auszuschöpfen.</p>



<h2 class="wp-block-heading">Erweiterte Automatisierungsmöglichkeiten in LibreOffice</h2>



<p>LibreOffice bietet nicht nur grundlegende Makros und Skripte, sondern auch eine Vielzahl erweiterter Automatisierungsmöglichkeiten, die es ermöglichen, noch komplexere Aufgaben effizient zu bewältigen. Diese Techniken erfordern ein tieferes Verständnis der LibreOffice-APIs und können maßgeschneiderte Lösungen für spezifische Geschäftsanforderungen schaffen.</p>



<h3 class="wp-block-heading">UNO-API für erweiterte Anpassungen</h3>



<p>Die Universal Network Objects (UNO)-API von LibreOffice ist eine leistungsstarke Möglichkeit, um tief in die Automatisierung von Prozessen einzutauchen. Sie erlaubt es Entwicklern, benutzerdefinierte Funktionen zu erstellen, die weit über die Möglichkeiten einfacher Makros hinausgehen. Mit der UNO-API können beispielsweise individuelle Benutzeroberflächen angepasst oder spezielle Datenverarbeitungsroutinen implementiert werden. Dadurch lässt sich die Software perfekt an die spezifischen Bedürfnisse eines Unternehmens anpassen.</p>



<h3 class="wp-block-heading">Verwendung von Batch-Prozessen</h3>



<p>Batch-Prozesse sind ein weiterer Ansatz zur Automatisierung, der besonders auf dedizierten Servern effektiv eingesetzt werden kann. Sie ermöglichen die Verarbeitung großer Datenmengen in einem einzigen Durchlauf, ohne dass ein menschliches Eingreifen erforderlich ist. Ein typisches Szenario wäre das nächtliche Generieren von Berichten oder die Aktualisierung von Datenbanken, während die Serverauslastung gering ist. Diese Prozesse können so geplant werden, dass sie außerhalb der regulären Arbeitszeiten stattfinden, um die Ressourcen optimal zu nutzen.</p>



<h3 class="wp-block-heading">Automatisierte Dokumentenverarbeitung</h3>



<p>Ein häufiges Einsatzgebiet für die Automatisierung in LibreOffice ist die automatisierte Verarbeitung von Dokumenten. Dazu gehört das Generieren von Serienbriefen, das Zusammenführen von Dokumenten oder das Konvertieren von Dateien in verschiedene Formate. Diese Aufgaben können durch Automatisierung nicht nur schneller, sondern auch konsistenter erledigt werden. Beispielsweise kann ein Skript erstellt werden, das automatisch alle relevanten Informationen aus einer Datenbank zieht und sie in ein vordefiniertes Dokument einfügt.</p>



<h2 class="wp-block-heading">Best Practices für die Automatisierung</h2>



<p>Die Implementierung fortschrittlicher Automatisierungstechniken erfordert sorgfältige Planung und Durchführung. Es gibt einige Best Practices, die Unternehmen berücksichtigen sollten, um den Erfolg ihrer Automatisierungsprojekte sicherzustellen.</p>



<h3 class="wp-block-heading">Iterative Entwicklung und Testing</h3>



<p>Automatisierungslösungen sollten schrittweise entwickelt werden, um Fehler frühzeitig zu erkennen und zu beheben. Es ist ratsam, zunächst mit einem kleinen, überschaubaren Projekt zu beginnen und die Lösung schrittweise zu erweitern. Regelmäßiges Testing ist unerlässlich, um sicherzustellen, dass alle automatisierten Prozesse wie erwartet funktionieren und keine unerwarteten Probleme verursachen.</p>



<h3 class="wp-block-heading">Schulung und Weiterbildung</h3>



<p>Die Einführung neuer Automatisierungstechniken erfordert oft eine Umstellung der Arbeitsweise. Mitarbeiter sollten entsprechend geschult werden, um die neuen Systeme effektiv nutzen zu können. Dies umfasst sowohl die Bedienung der automatisierten Prozesse als auch ein grundlegendes Verständnis der zugrunde liegenden Technologien, um bei Bedarf Anpassungen vornehmen zu können.</p>



<h3 class="wp-block-heading">Dokumentation und Wissensmanagement</h3>



<p>Eine umfassende Dokumentation ist entscheidend für den langfristigen Erfolg von Automatisierungsprojekten. Alle entwickelten Skripte, Makros und Prozesse sollten detailliert dokumentiert werden, um sicherzustellen, dass sie auch von anderen Teammitgliedern verstanden und gewartet werden können. Ein effektives Wissensmanagement hilft, das gesammelte Wissen zu bewahren und neuen Mitarbeitern zugänglich zu machen.</p>



<h2 class="wp-block-heading">Beispiele aus der Praxis</h2>



<p>Viele Unternehmen haben bereits erfolgreich Automatisierungstechniken in LibreOffice implementiert und konnten dadurch signifikante Verbesserungen in ihrer Effizienz und Datenverarbeitung erzielen.</p>



<h3 class="wp-block-heading">Fallstudie: Finanzberichtserstellung</h3>



<p>Ein mittelständisches Unternehmen im Finanzsektor nutzte die Automatisierung in LibreOffice, um den Prozess der Finanzberichtserstellung zu optimieren. Vor der Automatisierung wurden die Berichte manuell erstellt, was zu Inkonsistenzen und Verzögerungen führte. Durch die Implementierung automatisierter Skripte, die Daten aus verschiedenen Quellen zusammenführten und in standardisierte Berichtsvorlagen einfügten, konnte die Bearbeitungszeit um über 50% reduziert und die Genauigkeit der Berichte erheblich gesteigert werden.</p>



<h3 class="wp-block-heading">Fallstudie: Verwaltung von Kundendaten</h3>



<p>Ein weiteres Beispiel ist ein Einzelhandelsunternehmen, das die Automatisierung nutzte, um seine Kundendaten effizienter zu verwalten. Durch die Integration von LibreOffice mit der bestehenden CRM-Datenbank konnte das Unternehmen den Prozess der Datenaktualisierung automatisieren, was zu einer verbesserten Datenqualität und einer personalisierteren Kundenansprache führte.</p>



<p>Durch den Einsatz von Automatisierungstechniken in LibreOffice auf dedizierten Servern können Unternehmen nicht nur ihre Effizienz steigern, sondern auch die Qualität ihrer Geschäftsprozesse verbessern. Die vielfältigen Möglichkeiten, die LibreOffice bietet, ermöglichen es, maßgeschneiderte Lösungen für unterschiedlichste Anforderungen zu entwickeln. Die sorgfältige Planung, Implementierung und Wartung dieser Systeme ist der Schlüssel zum Erfolg in der modernen, datengetriebenen Geschäftswelt.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.slyon.de/2025/11/24/maximierung-der-effizienz-automatisierungstechniken-in-libreoffice-auf-dedizierten-servern/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Optimierung Ihrer OwnCloud-Umgebung auf dedizierten Root-Servern</title>
		<link>https://blog.slyon.de/2025/08/28/optimierung-ihrer-owncloud-umgebung-auf-dedizierten-root-servern/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Thu, 28 Aug 2025 07:11:05 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Sponsored]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[sponsored]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2433</guid>

					<description><![CDATA[Die Leistung von OwnCloud auf dedizierten Root-Servern zu maximieren, erfordert gezielte Netzwerkoptimierung. Der Einsatz eines dedizierten Servers bietet Ihnen die Kontrolle und Kapazität, um Ihre OwnCloud-Installation zu einem leistungsstarken und effizienten Werkzeug zu machen. Ein optimiertes Netzwerk ist der Schlüssel, um die volle Bandbreite der Möglichkeiten auszuschöpfen, die Ihnen eine solche Infrastruktur bietet. Leistungsverbesserung durch ... <a title="Optimierung Ihrer OwnCloud-Umgebung auf dedizierten Root-Servern" class="read-more" href="https://blog.slyon.de/2025/08/28/optimierung-ihrer-owncloud-umgebung-auf-dedizierten-root-servern/" aria-label="Read more about Optimierung Ihrer OwnCloud-Umgebung auf dedizierten Root-Servern">Read more</a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://blog.slyon.de/wp-content/uploads/2025/08/image.png"><img decoding="async" width="1024" height="585" src="https://blog.slyon.de/wp-content/uploads/2025/08/image-1024x585.png" alt="" class="wp-image-2434" srcset="https://blog.slyon.de/wp-content/uploads/2025/08/image-1024x585.png 1024w, https://blog.slyon.de/wp-content/uploads/2025/08/image-300x171.png 300w, https://blog.slyon.de/wp-content/uploads/2025/08/image-768x439.png 768w, https://blog.slyon.de/wp-content/uploads/2025/08/image-1536x878.png 1536w, https://blog.slyon.de/wp-content/uploads/2025/08/image.png 1792w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>Die Leistung von OwnCloud auf dedizierten Root-Servern zu maximieren, erfordert gezielte Netzwerkoptimierung. Der Einsatz eines dedizierten Servers bietet Ihnen die Kontrolle und Kapazität, um Ihre OwnCloud-Installation zu einem leistungsstarken und effizienten Werkzeug zu machen. Ein optimiertes Netzwerk ist der Schlüssel, um die volle Bandbreite der Möglichkeiten auszuschöpfen, die Ihnen eine solche Infrastruktur bietet.</p>



<h2 class="wp-block-heading">Leistungsverbesserung durch Netzwerkarchitektur</h2>



<p>Die Netzwerkarchitektur bildet das Fundament jedes <a href="https://www.manitu.de/webhosting/owncloud-hosting/"><strong>OwnCloud-Hostings</strong></a>. Durch den gezielten Einsatz von Load Balancing und Caching-Techniken können Sie die Effizienz und Geschwindigkeit Ihrer Server erheblich steigern. Load Balancing sorgt dafür, dass der Datenverkehr gleichmäßig auf alle verfügbaren Ressourcen verteilt wird, wodurch Engpässe vermieden und Reaktionszeiten verkürzt werden.</p>



<p>Caching ist eine weitere Methode, die Ihnen hilft, die Netzwerklast zu reduzieren. Durch das Zwischenspeichern häufig abgefragter Daten direkt im Speicher können Sie die Serverlast verringern und die Antwortzeiten der Cloud spürbar verbessern. Eine Kombination aus Varnish Cache und Redis bietet hier optimale Ergebnisse. Während Varnish Cache statische Inhalte schnell bereitstellen kann, eignet sich Redis ideal für das Zwischenspeichern von Sitzungsdaten und anderen dynamischen Inhalten.</p>



<h3 class="wp-block-heading">Technische Implementierung von Load Balancing und Caching</h3>



<ul class="wp-block-list">
<li>Load Balancing kann durch den Einsatz von NGINX oder HAProxy erreicht werden. Beide Lösungen bieten robuste Funktionen, um den Datenfluss effizient zu steuern.</li>



<li>Varnish Cache wird durch eine einfache Konfiguration in die bestehende Serverarchitektur integriert. Es ist wichtig, die TTL (Time to Live) der gecachten Inhalte auf die Bedürfnisse Ihrer Nutzer abzustimmen.</li>



<li>Redis als In-Memory-Datenbank kann sowohl für das Caching von Datenbankabfragen als auch für die Speicherung von Sitzungsdaten eingesetzt werden.</li>
</ul>



<h2 class="wp-block-heading">Sicherheit und Stabilität durch Netzwerküberwachung</h2>



<p>Die Sicherheit und Stabilität Ihrer OwnCloud-Installation auf einem dedizierten Root-Server hängen maßgeblich von einer effektiven Netzwerküberwachung ab. Durch den Einsatz von Monitoring-Tools wie Zabbix oder Prometheus können Sie die Performance Ihrer Server in Echtzeit überwachen und Engpässe frühzeitig erkennen. Diese Tools bieten Ihnen detaillierte Einblicke in den Netzwerkverkehr und ermöglichen es Ihnen, gezielte Maßnahmen zur Optimierung zu ergreifen.</p>



<p>Ein weiterer wichtiger Aspekt ist die Implementierung von Firewalls und Intrusion Detection Systemen (IDS). Eine gut konfigurierte Firewall schützt Ihre Server vor unbefugtem Zugriff und sorgt dafür, dass nur autorisierte Nutzer auf Ihre OwnCloud-Installation zugreifen können. Ein IDS ergänzt diese Schutzmaßnahmen, indem es verdächtige Aktivitäten im Netzwerk erkennt und Sie rechtzeitig warnt.</p>



<ul class="wp-block-list">
<li>Regelmäßige Updates und Patches sind unerlässlich, um Sicherheitslücken zu schließen und die Stabilität Ihrer OwnCloud-Installation zu gewährleisten.</li>



<li>Die Implementierung von SSL/TLS-Zertifikaten sorgt dafür, dass alle Datenübertragungen verschlüsselt und gegen unbefugten Zugriff geschützt sind.</li>



<li>Die Nutzung von VPNs kann den Zugang zu Ihrer OwnCloud-Installation weiter absichern, indem der Datenverkehr durch einen sicheren Tunnel geleitet wird.</li>
</ul>



<h2 class="wp-block-heading">Effizienzsteigerung durch Automatisierung und Skripting</h2>



<p>Automatisierung ist ein wesentlicher Schlüssel zur Effizienzsteigerung bei der Verwaltung von OwnCloud auf dedizierten Root-Servern. Mit Tools wie Ansible oder Puppet können Sie wiederkehrende Aufgaben automatisieren und die Skalierung Ihrer Infrastruktur vereinfachen. Dies spart nicht nur Zeit, sondern minimiert auch die Fehlerquote bei der Verwaltung komplexer Netzwerkkonfigurationen.</p>



<p>Durch das Erstellen und Implementieren von Skripten können Sie Routineaufgaben effizienter gestalten. Von der automatisierten Aktualisierung der Server bis hin zur regelmäßigen Sicherung Ihrer Daten – gut geschriebene Skripte entlasten Ihre IT-Ressourcen und erhöhen die Zuverlässigkeit Ihrer Infrastruktur.</p>



<h3 class="wp-block-heading">Implementierung von Automatisierungstools</h3>



<ul class="wp-block-list">
<li>Ansible ermöglicht eine einfache Konfiguration und Verwaltung Ihrer Server durch deklarative Playbooks. Diese Playbooks beschreiben den gewünschten Zustand Ihrer Systeme und lassen sich leicht anpassen und erweitern.</li>



<li>Puppet bietet eine zentrale Verwaltungskonsole, über die Sie Konfigurationsänderungen über eine grafische Oberfläche vornehmen können. Dies ist besonders nützlich in großen Netzwerken mit einer Vielzahl von Knotenpunkten.</li>



<li>Regelmäßige Backups können durch Cron-Jobs und Shell-Skripte automatisiert werden. Dies stellt sicher, dass immer eine aktuelle Sicherung Ihrer Daten verfügbar ist.</li>
</ul>



<h2 class="wp-block-heading">ROI durch optimierte OwnCloud-Umgebung</h2>



<p>Die Optimierung Ihrer OwnCloud-Installation auf dedizierten Root-Servern bringt nicht nur technische Vorteile, sondern auch einen klaren Return on Investment (ROI). Durch gesteigerte Effizienz und verbesserte Skalierbarkeit können Sie die Betriebskosten senken und die Benutzerzufriedenheit erhöhen. Eine optimierte Netzwerkumgebung sorgt für schnellere Ladezeiten und weniger Ausfallzeiten, was sich direkt auf die Produktivität Ihrer Nutzer auswirkt.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Maßnahme</td><td>Vorteil</td><td>ROI-Auswirkung</td></tr><tr><td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td><td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</td><td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</td></tr><tr><td>Load Balancing</td><td>Bessere Lastverteilung</td><td>Höhere Nutzerzufriedenheit</td></tr><tr><td>Caching</td><td>Schnellere Datenbereitstellung</td><td>Geringere Serverlast</td></tr><tr><td>Automatisierung</td><td>Weniger manuelle Eingriffe</td><td>Kostensenkung durch Effizienz</td></tr></tbody></table></figure>



<p>Die Investition in eine fortschrittliche Netzwerkoptimierung zahlt sich durch verbesserte Leistung und erhöhte Sicherheit aus. Dies ermöglicht es Ihnen, das volle Potenzial Ihrer OwnCloud-Umgebung zu nutzen und langfristige Vorteile zu realisieren.</p>



<h2 class="wp-block-heading">Erweiterte Netzwerkskalierung und Ressourcenzuweisung</h2>



<p>Eine effiziente Ressourcenzuweisung ist entscheidend für die Leistungsfähigkeit Ihrer OwnCloud-Umgebung. Mit der Nutzung von Virtualisierungstechnologien wie Docker oder Kubernetes können Sie Ihre Serverressourcen optimal verteilen und dynamisch anpassen. Diese Technologien ermöglichen es Ihnen, verschiedene Dienste in isolierten Containern auszuführen, was die Flexibilität erhöht und die Komplexität reduziert.</p>



<h3 class="wp-block-heading">Implementierung von Virtualisierungstechnologien</h3>



<ul class="wp-block-list">
<li>Docker: Durch die Nutzung von Docker-Containern können Sie Ihre OwnCloud-Instanzen in einer flexiblen und portablen Umgebung betreiben. Docker ermöglicht es Ihnen, Anwendungen schnell zu deployen und zu skalieren, während der Ressourcenverbrauch minimiert wird.</li>



<li>Kubernetes: Für größere Infrastrukturen bietet Kubernetes eine leistungsstarke Plattform zur Orchestrierung von Container-Anwendungen. Es automatisiert die Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen, was besonders vorteilhaft in Multi-Server-Umgebungen ist.</li>



<li>Ressourcenzuweisung: Durch die Definition von Ressourcenlimits und -reservierungen innerhalb von Docker und Kubernetes können Sie sicherstellen, dass Ihre OwnCloud-Instanzen stets die benötigten Ressourcen erhalten, während ungenutzte Kapazitäten für andere Anwendungen freigegeben werden.</li>
</ul>



<h2 class="wp-block-heading">Optimierung der Datenbankleistung</h2>



<p>Ein weiterer kritischer Aspekt der Optimierung Ihrer OwnCloud-Installation ist die Verbesserung der Datenbankleistung. Da die Datenbank das Rückgrat jeder OwnCloud-Instanz bildet, hat ihre Effizienz einen direkten Einfluss auf die Gesamtleistung des Systems. Die Wahl der richtigen Datenbank und deren Konfiguration kann die Geschwindigkeit und Zuverlässigkeit Ihrer OwnCloud-Umgebung erheblich steigern.</p>



<h3 class="wp-block-heading">Auswahl und Konfiguration der Datenbank</h3>



<ul class="wp-block-list">
<li>MySQL/MariaDB: Diese weit verbreiteten Datenbanken bieten robuste und zuverlässige Leistung für OwnCloud-Installationen. Durch das Tuning von Parametern wie `innodb_buffer_pool_size` und `max_connections` können Sie die Performance weiter steigern.</li>



<li>PostgreSQL: Als Alternative bietet PostgreSQL erweiterte Funktionen und eine hervorragende Performance bei komplexen Abfragen. Die Optimierung von Parametern wie `shared_buffers` und `work_mem` kann die Effizienz erheblich verbessern.</li>



<li>Indizes und Query-Optimierung: Durch das Setzen von Indizes auf häufig abgefragte Tabellen und die Optimierung von SQL-Abfragen können Sie die Datenbankzugriffe beschleunigen und die Serverlast reduzieren.</li>
</ul>



<h2 class="wp-block-heading">Benutzerverwaltung und Zugriffsrechte</h2>



<p>Ein effektives Benutzer- und Rechteverwaltungssystem ist essenziell für die Sicherheit und Effizienz Ihrer OwnCloud-Umgebung. Eine gut strukturierte Verwaltung der Zugriffsrechte stellt sicher, dass Nutzer nur auf die Daten zugreifen können, die für sie bestimmt sind, während die Integrität und Vertraulichkeit sensibler Informationen gewahrt bleibt.</p>



<h3 class="wp-block-heading">Implementierung eines robusten Zugriffsmanagements</h3>



<ul class="wp-block-list">
<li>Gruppenrichtlinien: Durch die Verwendung von Gruppenrichtlinien können Sie Benutzern bestimmte Rollen und Berechtigungen zuweisen. Dies vereinfacht die Verwaltung und sorgt für eine klare Struktur innerhalb der Benutzerverwaltung.</li>



<li>Zwei-Faktor-Authentifizierung (2FA): Die Implementierung von 2FA erhöht die Sicherheit Ihrer OwnCloud-Installation erheblich, indem sie einen zusätzlichen Schutzmechanismus für den Benutzerzugriff bietet.</li>



<li>Audit-Logs: Das Führen detaillierter Audit-Logs ermöglicht die Nachverfolgung von Benutzeraktivitäten und die Erkennung potenzieller Sicherheitsvorfälle. Diese Logs sind ein wertvolles Werkzeug zur Einhaltung von Compliance-Vorgaben und zur Analyse von Sicherheitslücken.</li>
</ul>



<h2 class="wp-block-heading">Netzwerkredundanz und Ausfallsicherheit</h2>



<p>Die Gewährleistung von Netzwerkredundanz und Ausfallsicherheit ist entscheidend, um die Verfügbarkeit Ihrer OwnCloud-Umgebung zu maximieren. Durch den Einsatz von Redundanzstrategien können Sie sicherstellen, dass Ihre Dienste auch im Falle eines Hardwareausfalls oder anderer Störungen weiter verfügbar bleiben.</p>



<h3 class="wp-block-heading">Strategien für eine robuste Netzwerkverfügbarkeit</h3>



<ul class="wp-block-list">
<li>Georedundanz: Durch die Verteilung Ihrer Server auf mehrere geografische Standorte können Sie das Risiko eines vollständigen Systemausfalls minimieren. Diese Strategie erhöht die Ausfallsicherheit und reduziert die Latenz für internationale Benutzer.</li>



<li>Failover-Mechanismen: Die Implementierung von automatisierten Failover-Mechanismen stellt sicher, dass bei einem Ausfall eines Servers sofort ein Backup-Server aktiviert wird, um die Dienstverfügbarkeit aufrechtzuerhalten.</li>



<li>Load Balancer mit Redundanz: Der Einsatz redundanter Load Balancer sorgt für eine gleichmäßige Lastverteilung und verbessert die Ausfallsicherheit, indem sie verhindern, dass ein einzelner Ausfall den gesamten Datenverkehr beeinträchtigt.</li>
</ul>



<p>Durch die weitere Vertiefung dieser Aspekte und die Implementierung der genannten Maßnahmen können Sie die Effizienz, Sicherheit und Zuverlässigkeit Ihrer OwnCloud-Umgebung auf dedizierten Root-Servern erheblich verbessern.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Waiting for a Linux system to be online</title>
		<link>https://blog.slyon.de/2024/10/15/waiting-for-a-linux-system-to-be-online/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 07:33:10 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2417</guid>

					<description><![CDATA[What is an “online” system? Networking is a complex topic, and there is lots of confusion around the definition of an “online” system. Sometimes the boot process gets delayed up to two minutes, because the system still waits for one or more network interfaces to be ready. Systemd provides the network-online.target that other service units ... <a title="Waiting for a Linux system to be online" class="read-more" href="https://blog.slyon.de/2024/10/15/waiting-for-a-linux-system-to-be-online/" aria-label="Read more about Waiting for a Linux system to be online">Read more</a>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://blog.slyon.de/wp-content/uploads/2024/10/gradient-network-connection-background_23-2148874050.avif"><img decoding="async" width="1024" height="569" src="https://blog.slyon.de/wp-content/uploads/2024/10/gradient-network-connection-background_23-2148874050-1024x569.avif" alt="" class="wp-image-2424" srcset="https://blog.slyon.de/wp-content/uploads/2024/10/gradient-network-connection-background_23-2148874050-1024x569.avif 1024w, https://blog.slyon.de/wp-content/uploads/2024/10/gradient-network-connection-background_23-2148874050-300x167.avif 300w, https://blog.slyon.de/wp-content/uploads/2024/10/gradient-network-connection-background_23-2148874050-768x427.avif 768w, https://blog.slyon.de/wp-content/uploads/2024/10/gradient-network-connection-background_23-2148874050.avif 1380w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Designed by <a href="https://www.freepik.com">Freepik</a></figcaption></figure>
</div>


<h2 class="wp-block-heading">What is an “online” system?</h2>



<p>Networking is a complex topic, and there is lots of confusion around the definition of an “online” system. Sometimes the boot process gets delayed up to two minutes, because the system still waits for one or more network interfaces to be ready. Systemd provides the <a href="https://systemd.io/NETWORK_ONLINE/"><strong>network-online.target</strong></a> that other service units can rely on, if they are deemed to require network connectivity. But what does “online” actually mean in this context, is a link-local IP address enough, do we need a routable gateway and how about DNS name resolution?</p>



<p>The requirements for an “online” network interface depend very much on the services using an interface. For some services it might be good enough to reach their local network segment (e.g. to announce Zeroconf services), while others need to reach domain names (e.g. to mount a NFS share) or reach the global internet to run a web server. On the other hand, the implementation of <strong>network-online.target</strong> varies, depending on which networking daemon is in use, e.g. <strong>systemd-networkd-wait-online.service</strong> or <strong>NetworkManager-wait-online.service</strong>. For Ubuntu, we created a <a href="https://discourse.ubuntu.com/t/spec-definition-of-an-online-system/27838">specification</a> that describes what we as a distro expect an “online” system to be. Having a definition in place, we are able to tackle the <a href="https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=&amp;orderby=-importance&amp;field.status%3Alist=NEW&amp;field.status%3Alist=OPINION&amp;field.status%3Alist=INVALID&amp;field.status%3Alist=WONTFIX&amp;field.status%3Alist=EXPIRED&amp;field.status%3Alist=CONFIRMED&amp;field.status%3Alist=TRIAGED&amp;field.status%3Alist=INPROGRESS&amp;field.status%3Alist=FIXCOMMITTED&amp;field.status%3Alist=FIXRELEASED&amp;field.status%3Alist=INCOMPLETE_WITH_RESPONSE&amp;field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&amp;assignee_option=any&amp;field.assignee=&amp;field.bug_reporter=&amp;field.bug_commenter=&amp;field.subscriber=&amp;field.structural_subscriber=&amp;field.component-empty-marker=1&amp;field.tag=network-online-ordering&amp;field.tags_combinator=ANY&amp;field.status_upstream-empty-marker=1&amp;field.has_cve.used=&amp;field.omit_dupes.used=&amp;field.omit_dupes=on&amp;field.affects_me.used=&amp;field.has_no_package.used=&amp;field.has_patch.used=&amp;field.has_branches.used=&amp;field.has_branches=on&amp;field.has_no_branches.used=&amp;field.has_no_branches=on&amp;field.has_blueprints.used=&amp;field.has_blueprints=on&amp;field.has_no_blueprints.used=&amp;field.has_no_blueprints=on&amp;search=Search">network-online-ordering</a> issues that got reported over the years and can work out solutions to avoid <a href="https://bugs.launchpad.net/netplan/+bug/2060311">delayed boot</a> times on Ubuntu systems.</p>



<p>In essence, we want systems to reach the following networking state to be considered online:</p>



<ol class="wp-block-list">
<li>Do not wait for “optional” interfaces to receive network configuration</li>



<li>Have IPv6 and/or IPv4 “link-local” addresses on every network interface</li>



<li>Have at least one interface with a globally routable connection</li>



<li>Have functional domain name resolution on any routable interface</li>
</ol>



<h2 class="wp-block-heading">A common implementation</h2>



<p><strong>NetworkManager</strong> and <strong>systemd-networkd</strong> are two very common networking daemons used on modern Linux systems. But they originate from different contexts and therefore show different behaviours in certain scenarios, such as <strong>wait-online</strong>. Luckily, on Ubuntu we already have <a href="https://ubuntu.com/blog/a-declarative-approach-to-linux-networking-with-netplan"><strong>Netplan</strong></a> as a unification layer on top of those networking daemons, that allows for common network configuration, and can also be used to tweak the <strong>wait-online</strong> logic.</p>



<p>With the recent release of <a href="https://blog.slyon.de/2024/08/14/netplan-v1-1-released/">Netplan v1.1</a> we introduced initial functionality to tweak the behaviour of the <strong>systemd-networkd-wait-online.service</strong>, as used on Ubuntu Server systems. When <strong>Netplan</strong> is used to drive the <strong>systemd-networkd</strong> backend, it will emit an override configuration file in <strong>/run/systemd/system/systemd-networkd-wait-online.service.d/10-netplan.conf</strong>, listing the specific <a href="https://github.com/canonical/netplan/pull/456">non-optional interfaces that should receive link-local IP configuration</a>. In parallel to that, it defines a list of network interfaces that Netplan detected to be potential global connections, and waits for any of those <a href="https://github.com/canonical/netplan/pull/482">interfaces to reach a globally routable state</a>.</p>



<p>Such override config file might look like this:</p>



<pre class="wp-block-preformatted"><code>[Unit]<br>ConditionPathIsSymbolicLink=/run/systemd/generator/network-online.target.wants/systemd-networkd-wait-online.service<br><br>[Service]<br>ExecStart=<br>ExecStart=/lib/systemd/systemd-networkd-wait-online -i eth99.43:carrier -i lo:carrier -i eth99.42:carrier -i eth99.44:degraded -i bond0:degraded<br>ExecStart=/lib/systemd/systemd-networkd-wait-online --any -o routable -i eth99.43 -i eth99.45 -i bond0</code></pre>



<p></p>



<p>In addition to the new features implemented in Netplan, we reached out to upstream systemd, proposing an <a href="https://github.com/systemd/systemd/pull/34640">enhancement to the <strong>systemd-networkd-wait-online</strong> service</a>, integrating it with <strong>systemd-resolved</strong> to check for the availability of DNS name resolution. Once this is implemented upstream, we’re able to fully control the <strong>systemd-networkd</strong> backend on Ubuntu Server systems, to behave consistently and according to the definition of an “online” system that was lined out above.</p>



<h2 class="wp-block-heading">Future work</h2>



<p>The story doesn’t end there, because Ubuntu Desktop systems are using <strong>NetworkManager</strong> as their networking backend. This daemon provides its very own <strong>nm-online</strong> utility, utilized by the <strong>NetworkManager-wait-online</strong> systemd service. It implements a much higher-level approach, looking at the networking daemon in general instead of the individual network interfaces. By default, it considers a system to be online once every “autoconnect” profile got activated (or failed to activate), meaning that either a IPv4 or IPv6 address got assigned.</p>



<p>There are considerable enhancements to be implemented to this tool, for it to be controllable in a fine-granular way similar to <strong>systemd-networkd-wait-online</strong>, so that it can be instructed to wait for specific networking states on selected interfaces.</p>



<h2 class="wp-block-heading">A note of caution</h2>



<p>Making a service depend on <strong>network-online.target</strong> is considered an antipattern in most cases. This is because networking on Linux systems is very dynamic and the systemd target can only ever reflect the networking state at a single point in time. It cannot guarantee this state to be remained over the uptime of your system and has the potentially to delay the boot process considerably. Cables can be unplugged, wireless connectivity can drop, or remote routers can go down at any time, affecting the connectivity state of your local system. Therefore, “instead of wondering what to do about network.target, please just fix your program to be friendly to dynamically changing network configuration.” [<a href="https://systemd.io/NETWORK_ONLINE/#should-network-onlinetarget-be-used">source</a>].</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Netplan v1.1 released</title>
		<link>https://blog.slyon.de/2024/08/14/netplan-v1-1-released/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Wed, 14 Aug 2024 13:41:38 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[distro]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2410</guid>

					<description><![CDATA[I’m happy to announce that Netplan version 1.1 is now available on GitHub and is soon to be deployed into a Debian and/or Ubuntu installation near you! Six months and 120 commits after the previous version (including one patch release v1.0.1), this release is brought to you by 17 free software contributors from around the globe. 🚀 Kudos to ... <a title="Netplan v1.1 released" class="read-more" href="https://blog.slyon.de/2024/08/14/netplan-v1-1-released/" aria-label="Read more about Netplan v1.1 released">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>I’m happy to announce that <a href="https://netplan.io/">Netplan</a> version 1.1 is now available on <a href="https://github.com/canonical/netplan/releases/tag/1.1">GitHub</a> and is soon to be deployed into a Debian and/or Ubuntu installation near you! Six months and 120 commits after the previous version (including one patch release v1.0.1), this release is brought to you by 17 free software contributors from around the globe. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>Kudos to everybody involved! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2764.png" alt="❤" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">Highlights</h2>



<ul class="wp-block-list">
<li>Custom&nbsp;<code>systemd-networkd-wait-online</code>&nbsp;logic override to wait for link-local and routable interfaces. (<a href="https://github.com/canonical/netplan/pull/456">#456</a>,&nbsp;<a href="https://github.com/canonical/netplan/pull/482">#482</a>)</li>



<li>Modification of the&nbsp;<code>embedded-switch-mode</code>&nbsp;setting without virtual-function (VF) definitions on SR-IOV devices (<a href="https://github.com/canonical/netplan/pull/454">#454</a>)</li>



<li>Parser flag to ignore individual, broken configurations, instead of not generating any backend configuration (<a href="https://github.com/canonical/netplan/pull/412">#412</a>)</li>



<li>Fixes for&nbsp;<a href="https://github.com/ProtonVPN">@ProtonVPN</a>&nbsp;(<a href="https://github.com/canonical/netplan/pull/495">#495</a>) and&nbsp;<a href="https://github.com/microsoft">@microsoft</a>&nbsp;Azure Linux (<a href="https://github.com/canonical/netplan/pull/445">#445</a>), contributed by those companies</li>
</ul>



<h2 class="wp-block-heading">Releasing v1.1</h2>



<ul class="wp-block-list">
<li>CI: adopt autopkgtest for 1.0-1 on 22.04 by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/446">#446</a></li>



<li>tools/keyfile_to_yaml: display the generated YAML by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/452">#452</a></li>



<li>tests: import the config fuzzing tests by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/453">#453</a></li>



<li>ATTN: parse/bonds: handle same primary in multiple bonds by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/451">#451</a></li>



<li>sriov: accept setting the eswitch mode without VFs (<a href="https://pad.lv/2020409">LP#2020409</a>) by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/454">#454</a></li>



<li>Custom systemd-networkd-wait-online override to wait on interfaces. (Closes: #1008995) (<a href="https://pad.lv/2060311">LP#2060311</a>) by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/456">#456</a></li>



<li>Ignore bad NetDefs and files via parser flags by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/412">#412</a></li>



<li>networkd:apply: Drop handling of legacy wpa@ instance units by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/471">#471</a></li>



<li>migrate: support aliases by&nbsp;<a href="https://github.com/Kristof0127">@Kristof0127</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/473">#473</a></li>



<li>networkd: add ipv6 ra overrides (<a href="https://pad.lv/1973222">LP#1973222</a>) by&nbsp;<a href="https://github.com/KhooHaoYit">@KhooHaoYit</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/461">#461</a></li>



<li>netplan status &#8211;diff fixes and improvements by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/466">#466</a></li>



<li>apply: make sure that networkd is restarted when needed by&nbsp;<a href="https://github.com/alfonsosanchezbeato">@alfonsosanchezbeato</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/449">#449</a></li>



<li>Don&#8217;t escape certain non-ascii characters by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/486">#486</a></li>



<li>networkd: make s-n-wait-online wait for at least one routable interface by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/482">#482</a></li>



<li>networkd: Implement ipv6-address-generation: stable-privacy by&nbsp;<a href="https://github.com/tatokis">@tatokis</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/480">#480</a></li>



<li>Implementing advmss ip route option by&nbsp;<a href="https://github.com/barvius">@barvius</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/489">#489</a></li>



<li>meson: Add &#8216;testing&#8217; option by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/493">#493</a></li>



<li>Add a scheduled workflow to run TICS by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/498">#498</a></li>



<li>ci: migrate to Ubuntu 24.04 by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/465">#465</a></li>



<li>Prepare Netplan v1.1 by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/504">#504</a></li>
</ul>



<h2 class="wp-block-heading">Documentation</h2>



<ul class="wp-block-list">
<li>Fix wrong syntax in example by&nbsp;<a href="https://github.com/fzakfeld">@fzakfeld</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/459">#459</a></li>



<li>Tutorial improvements by&nbsp;<a href="https://github.com/rkratky">@rkratky</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/458">#458</a></li>



<li>added guide for contributing to the netplan documentation by&nbsp;<a href="https://github.com/ade555">@ade555</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/457">#457</a></li>



<li>Add initial SECURITY.md policy by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/478">#478</a></li>



<li>Create single-nic-vm-host.md by&nbsp;<a href="https://github.com/ilvipero">@ilvipero</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/475">#475</a></li>



<li>Create single-nic-vm-host-with-vlans.md by&nbsp;<a href="https://github.com/ilvipero">@ilvipero</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/476">#476</a></li>



<li>Create multi-nic-vm-host-with-bonds-and-vlans.md by&nbsp;<a href="https://github.com/ilvipero">@ilvipero</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/477">#477</a></li>



<li>bullet point removal by&nbsp;<a href="https://github.com/shirleyherox">@shirleyherox</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/483">#483</a></li>



<li>Add netplan try to netplan tutorial by&nbsp;<a href="https://github.com/davidekete">@davidekete</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/494">#494</a></li>



<li>Update the docs checks runner to ubuntu-latest by&nbsp;<a href="https://github.com/rkratky">@rkratky</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/500">#500</a></li>



<li>Add spelling exceptions by&nbsp;<a href="https://github.com/rkratky">@rkratky</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/499">#499</a></li>
</ul>



<h2 class="wp-block-heading">Bug fixes</h2>



<ul class="wp-block-list">
<li>Fix logging setup when python-rich is not present by&nbsp;<a href="https://github.com/frhuelsz">@frhuelsz</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/445">#445</a></li>



<li>parse-nm: add a workaround for the DoT DNS option (<a href="https://pad.lv/2055148">LP#2055148</a>) by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/447">#447</a></li>



<li>parse: don&#8217;t remove datalist items during iteration by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/450">#450</a></li>



<li>parse: fix redefinition of gateway(4|6) by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/460">#460</a></li>



<li>python: elements of&nbsp;<strong>all</strong>&nbsp;must be strings by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/464">#464</a></li>



<li>CI: Fix DebCI check, using newer &#8216;meson&#8217; from unstable by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/467">#467</a></li>



<li>tests: fix diff test with iproute2 6.8 by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/469">#469</a></li>



<li>cli/generate: skip daemon_reload with &#8211;mapping by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/470">#470</a></li>



<li>CI: fork spread to get&nbsp;<a href="https://github.com/snapcore/spread/pull/179">snapcore/spread#179</a>&nbsp;fixes by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/472">#472</a></li>



<li>ctests: fix a memory leak in a unit test by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/474">#474</a></li>



<li>nm/nd: fix a couple of crashes by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/468">#468</a></li>



<li>test:integration: Try to improve test flakyness (Closes: #1069871) by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/481">#481</a></li>



<li>Security fixes (<a href="https://github.com/advisories/GHSA-xpvm-9wx5-vjpw">CVE-2022-4968</a>) by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/484">#484</a></li>



<li>emitter: allow unicode characters in the emitter (<a href="https://pad.lv/2071652">LP#2071652</a>) by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/485">#485</a></li>



<li>CLI:apply: call udevadm trigger, using &#8211;action=move (Closes: #1071220) (<a href="https://pad.lv/2066344">LP#2066344</a>,&nbsp;<a href="https://pad.lv/2071363">LP#2071363</a>) by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/479">#479</a></li>



<li>CI: fix CodeQL permissions by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/491">#491</a></li>



<li>ci: run meson tests with unbuffer by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/501">#501</a></li>



<li>ci/tics: install &#8220;expect&#8221; as a dependency by&nbsp;<a href="https://github.com/daniloegea">@daniloegea</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/502">#502</a></li>



<li>generate: avoid calling &#8216;udevadm control &#8211;reload&#8217; (<a href="https://pad.lv/1999178">LP#1999178</a>) by&nbsp;<a href="https://github.com/slyon">@slyon</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/488">#488</a></li>



<li>netplan ignores NetworkManager ipv4.route-metric (<a href="https://pad.lv/2076172">LP#2076172</a>) by&nbsp;<a href="https://github.com/calexandru2018">@calexandru2018</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/495">#495</a></li>



<li>Change default umask when creating dirctories (<a href="https://pad.lv/2076319">LP#2076319</a>) by&nbsp;<a href="https://github.com/rmalz-c">@rmalz-c</a>&nbsp;in&nbsp;<a href="https://github.com/canonical/netplan/pull/497">#497</a></li>
</ul>



<h2 class="wp-block-heading">New Contributors</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/frhuelsz">@frhuelsz</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/445">#445</a></li>



<li><a href="https://github.com/fzakfeld">@fzakfeld</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/459">#459</a></li>



<li><a href="https://github.com/Kristof0127">@Kristof0127</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/473">#473</a></li>



<li><a href="https://github.com/ade555">@ade555</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/457">#457</a></li>



<li><a href="https://github.com/KhooHaoYit">@KhooHaoYit</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/461">#461</a></li>



<li><a href="https://github.com/ilvipero">@ilvipero</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/475">#475</a></li>



<li><a href="https://github.com/shirleyherox">@shirleyherox</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/483">#483</a></li>



<li><a href="https://github.com/tatokis">@tatokis</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/480">#480</a></li>



<li><a href="https://github.com/barvius">@barvius</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/489">#489</a></li>



<li><a href="https://github.com/davidekete">@davidekete</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/494">#494</a></li>



<li><a href="https://github.com/calexandru2018">@calexandru2018</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/495">#495</a></li>



<li><a href="https://github.com/rmalz-c">@rmalz-c</a>&nbsp;made their first contribution in&nbsp;<a href="https://github.com/canonical/netplan/pull/497">#497</a></li>
</ul>



<p><strong>Full Changelog</strong>:&nbsp;<a href="https://github.com/canonical/netplan/compare/1.0...1.1">1.0&#8230;1.1</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating a Netplan enabled system through Debian-Installer</title>
		<link>https://blog.slyon.de/2024/07/30/creating-a-netplan-enabled-system-through-debian-installer/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Tue, 30 Jul 2024 04:24:42 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2368</guid>

					<description><![CDATA[With the work that has been done in the debian-installer/netcfg merge-proposal !9 it is possible to install a standard Debian system, using the normal Debian-Installer (d-i) mini.iso images, that will come pre-installed with Netplan and all network configuration structured in /etc/netplan/. In this write-up, I&#8217;d like to run you through a list of commands for ... <a title="Creating a Netplan enabled system through Debian-Installer" class="read-more" href="https://blog.slyon.de/2024/07/30/creating-a-netplan-enabled-system-through-debian-installer/" aria-label="Read more about Creating a Netplan enabled system through Debian-Installer">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>With the work that has been done in the <a href="https://salsa.debian.org/installer-team/netcfg/-/merge_requests/9">debian-installer/netcfg merge-proposal !9</a> it is possible to install a standard Debian system, using the normal Debian-Installer (d-i) <strong>mini.iso</strong> images, that will come pre-installed with Netplan and all network configuration structured in <code>/etc/netplan/</code>.</p>



<p>In this write-up, I&#8217;d like to run you through a list of commands for experiencing the Netplan enabled installation process first-hand. Let&#8217;s start with preparing a working directory and installing the software dependencies for our virtualized Debian system:</p>



<pre class="wp-block-code"><code>$ mkdir d-i_tmp &amp;&amp; cd d-i_tmp
$ apt install ovmf qemu-utils qemu-system-x86</code></pre>



<p>Now let&#8217;s download the official (daily) <code>mini.iso</code>, <code>linux</code> kernel image and <code>initrd.gz</code> containing the Netplan enablement changes:</p>



<pre class="wp-block-code"><code>$ wget https://d-i.debian.org/daily-images/amd64/daily/netboot/gtk/mini.iso
$ wget https://d-i.debian.org/daily-images/amd64/daily/netboot/gtk/debian-installer/amd64/initrd.gz
$ wget https://d-i.debian.org/daily-images/amd64/daily/netboot/gtk/debian-installer/amd64/linux</code></pre>



<p>Next we&#8217;ll prepare a VM, by copying the EFI firmware files, preparing some persistent EFIVARs file, to boot from <code>FS0:\EFI\debian\grubx64.efi</code>, and create a virtual disk for our machine:</p>



<pre class="wp-block-code"><code>$ cp /usr/share/OVMF/OVMF_CODE_4M.fd .
$ cp /usr/share/OVMF/OVMF_VARS_4M.fd .
$ qemu-img create -f qcow2 ./data.qcow2 20G</code></pre>



<p>Finally, let&#8217;s launch the <strong>debian-installer</strong> using a <strong>preseed.cfg</strong> file, that will automatically install Netplan (<strong>netplan-generator</strong>) for us in the target system. A minimal preseed file could look like this:</p>



<pre class="wp-block-preformatted"># Install minimal Netplan generator binary<br>d-i preseed/late_command string in-target apt-get -y install netplan-generator</pre>



<p>For this demo, we&#8217;re installing the full <code>netplan.io</code> package (incl. the interactive Python CLI), as well as the <code>netplan-generator</code> package and <code>systemd-resolved</code>, to show the full Netplan experience. You can choose the preseed file from a set of different variants to test the different configurations:</p>



<ul class="wp-block-list">
<li>Netplan minimal
<ul class="wp-block-list">
<li><a href="https://people.ubuntu.com/~slyon/d-i/netplan-preseed.cfg">https://people.ubuntu.com/~slyon/d-i/netplan-preseed.cfg</a></li>
</ul>
</li>



<li>Netplan + systemd-resolved configuration
<ul class="wp-block-list">
<li><a href="https://people.ubuntu.com/~slyon/d-i/netplan-preseed+full.cfg">https://people.ubuntu.com/~slyon/d-i/netplan-preseed+full.cfg</a></li>
</ul>
</li>



<li>Netplan + NetworkManager configuration
<ul class="wp-block-list">
<li><a href="https://people.ubuntu.com/~slyon/d-i/netplan-preseed+nm.cfg">https://people.ubuntu.com/~slyon/d-i/netplan-preseed+nm.cfg</a></li>
</ul>
</li>
</ul>



<p>We&#8217;re using the <code>linux</code> kernel and <code>initrd.gz</code> here to be able to pass the preseed URL as a parameter to the kernel&#8217;s <code>cmdline</code> directly. Launching this VM should bring up the official <strong>debian-installer</strong> in its <code>netboot/gtk</code> form:</p>



<pre class="wp-block-code"><code>$ export U=https://people.ubuntu.com/~slyon/d-i/netplan-preseed+full.cfg
$ qemu-system-x86_64 \
	-M q35 -enable-kvm -cpu host -smp 4 -m 2G \
	-drive if=pflash,format=raw,unit=0,file=OVMF_CODE_4M.fd,readonly=on \
	-drive if=pflash,format=raw,unit=1,file=OVMF_VARS_4M.fd,readonly=off \
	-device qemu-xhci -device usb-kbd -device usb-mouse \
	-vga none -device virtio-gpu-pci \
	-net nic,model=virtio -net user \
	-kernel ./linux -initrd ./initrd.gz -append "url=$U" \
	-hda ./data.qcow2 -cdrom ./mini.iso;</code></pre>



<p>Now you can click through the normal Debian-Installer process, using mostly default settings. Optionally, you could play around with the networking settings, to see how those get translated to <code>/etc/netplan/</code> in the target system.</p>



<figure class="wp-block-image size-full"><a href="https://blog.slyon.de/wp-content/uploads/2024/04/image.png"><img loading="lazy" decoding="async" width="800" height="600" src="https://blog.slyon.de/wp-content/uploads/2024/04/image.png" alt="" class="wp-image-2377" srcset="https://blog.slyon.de/wp-content/uploads/2024/04/image.png 800w, https://blog.slyon.de/wp-content/uploads/2024/04/image-300x225.png 300w, https://blog.slyon.de/wp-content/uploads/2024/04/image-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>



<p>After you confirmed your partitioning changes, the base system gets installed. I suggest not to select any additional components, like desktop environments, to speed up the process.</p>



<figure class="wp-block-image size-full"><a href="https://blog.slyon.de/wp-content/uploads/2024/04/image-1.png"><img loading="lazy" decoding="async" width="800" height="600" src="https://blog.slyon.de/wp-content/uploads/2024/04/image-1.png" alt="" class="wp-image-2378" srcset="https://blog.slyon.de/wp-content/uploads/2024/04/image-1.png 800w, https://blog.slyon.de/wp-content/uploads/2024/04/image-1-300x225.png 300w, https://blog.slyon.de/wp-content/uploads/2024/04/image-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>



<p>During the final step of the installation (<code>finish-install.d/55netcfg-copy-config</code>) d-i will detect that Netplan was installed in the target system (due to the preseed file provided) and opt to write its network configuration to <code>/etc/netplan/</code> instead of <code>/etc/network/interfaces</code> or <code>/etc/NetworkManager/system-connections/</code>.</p>



<figure class="wp-block-image size-full"><a href="https://blog.slyon.de/wp-content/uploads/2024/04/image-2.png"><img loading="lazy" decoding="async" width="800" height="600" src="https://blog.slyon.de/wp-content/uploads/2024/04/image-2.png" alt="" class="wp-image-2379" srcset="https://blog.slyon.de/wp-content/uploads/2024/04/image-2.png 800w, https://blog.slyon.de/wp-content/uploads/2024/04/image-2-300x225.png 300w, https://blog.slyon.de/wp-content/uploads/2024/04/image-2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>



<p>Done! After the installation finished, you can reboot into your virgin Debian Sid/Trixie system.</p>



<p>To do that, quit the current Qemu process, by pressing <strong>Ctrl+C</strong> and make sure to copy over the <code>EFIVARS.fd</code> file that was modified by <code>grub</code> during the installation, so Qemu can find the new system. Then reboot into the new system, not using the <strong>mini.iso</strong> image any more:</p>



<pre class="wp-block-code"><code>$ cp ./OVMF_VARS_4M.fd ./EFIVARS.fd
$ qemu-system-x86_64 \
        -M q35 -enable-kvm -cpu host -smp 4 -m 2G \
        -drive if=pflash,format=raw,unit=0,file=OVMF_CODE_4M.fd,readonly=on \
        -drive if=pflash,format=raw,unit=1,file=EFIVARS.fd,readonly=off \
        -device qemu-xhci -device usb-kbd -device usb-mouse \
        -vga none -device virtio-gpu-pci \
        -net nic,model=virtio -net user \
        -drive file=./data.qcow2,if=none,format=qcow2,id=disk0 \
        -device virtio-blk-pci,drive=disk0,bootindex=1
        -serial mon:stdio</code></pre>



<p>Finally, you can play around with your <strong>Netplan enabled Debian system</strong>! As you will find, <code>/etc/network/interfaces</code> exists but is empty, it could still be used (optionally/additionally). Netplan was configured in <code>/etc/netplan/</code> according to the settings given during the d-i installation process.</p>



<figure class="wp-block-image size-full"><a href="https://blog.slyon.de/wp-content/uploads/2024/07/image.png"><img loading="lazy" decoding="async" width="540" height="365" src="https://blog.slyon.de/wp-content/uploads/2024/07/image.png" alt="" class="wp-image-2402" srcset="https://blog.slyon.de/wp-content/uploads/2024/07/image.png 540w, https://blog.slyon.de/wp-content/uploads/2024/07/image-300x203.png 300w" sizes="auto, (max-width: 540px) 100vw, 540px" /></a></figure>



<p>In our case, we also installed the Netplan CLI, so we can play around with some of its features, like <code>netplan status</code>:</p>



<figure class="wp-block-image size-full"><a href="https://blog.slyon.de/wp-content/uploads/2024/07/image-1.png"><img loading="lazy" decoding="async" width="586" height="386" src="https://blog.slyon.de/wp-content/uploads/2024/07/image-1.png" alt="" class="wp-image-2403" srcset="https://blog.slyon.de/wp-content/uploads/2024/07/image-1.png 586w, https://blog.slyon.de/wp-content/uploads/2024/07/image-1-300x198.png 300w" sizes="auto, (max-width: 586px) 100vw, 586px" /></a></figure>



<p>Thank you for following along the Netplan enabled Debian installation process and happy hacking! If you want to learn more, find us at <a href="https://github.com/canonical/netplan">GitHub:netplan</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Netplan v1.0 paves the way to stable, declarative network management</title>
		<link>https://blog.slyon.de/2024/04/04/netplan-v1-0-paves-the-way-to-stable-declarative-network-management/</link>
					<comments>https://blog.slyon.de/2024/04/04/netplan-v1-0-paves-the-way-to-stable-declarative-network-management/#comments</comments>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 15:39:18 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2352</guid>

					<description><![CDATA[New “netplan status &#8211;diff” subcommand, finding differences between configuration and system state As the maintainer and lead developer for Netplan, I’m proud to announce the general availability of Netplan v1.0 after more than 7 years of development efforts. Over the years, we’ve so far had about 80 individual contributors from around the globe. This includes ... <a title="Netplan v1.0 paves the way to stable, declarative network management" class="read-more" href="https://blog.slyon.de/2024/04/04/netplan-v1-0-paves-the-way-to-stable-declarative-network-management/" aria-label="Read more about Netplan v1.0 paves the way to stable, declarative network management">Read more</a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image is-style-default"><img loading="lazy" decoding="async" width="902" height="483" src="https://blog.slyon.de/wp-content/uploads/2024/03/image.png" alt="" class="wp-image-2361" srcset="https://blog.slyon.de/wp-content/uploads/2024/03/image.png 902w, https://blog.slyon.de/wp-content/uploads/2024/03/image-300x161.png 300w, https://blog.slyon.de/wp-content/uploads/2024/03/image-768x411.png 768w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p class="has-text-align-center">New “netplan status &#8211;diff” subcommand, finding differences between configuration and system state</p>



<p>As the maintainer and lead developer for Netplan, I’m proud to announce the general availability of Netplan v1.0 after <a href="https://blog.slyon.de/2023/07/18/a-declarative-approach-to-linux-networking-with-netplan/">more than 7 years</a> of development efforts. Over the years, we’ve so far had about 80 individual contributors from around the globe. This includes many contributions from our Netplan core-team at Canonical, but also from other big corporations such as Microsoft or Deutsche Telekom. Those contributions, along with the many we receive from our <a href="https://github.com/canonical/netplan/pulls?q=is%3Apr+label%3Acommunity">community of individual contributors</a>, solidify Netplan as a healthy and trusted open source project. In an effort to make Netplan even more dependable, we started shipping upstream patch releases, such as 0.106.1 and 0.107.1, which make it easier to integrate fixes into our users&#8217; custom workflows.</p>



<p>With the release of version 1.0 we primarily focused on stability. However, being a major version upgrade, it allowed us to drop some long-standing legacy code from the <strong>libnetplan1</strong> library. Removing this technical debt increases the maintainability of Netplan’s codebase going forward. The upcoming Ubuntu 24.04 LTS and Debian 13 releases will ship Netplan v1.0 to millions of users worldwide.</p>



<h2 class="wp-block-heading">Highlights of version 1.0</h2>



<p>In addition to stability and maintainability improvements, it’s worth looking at some of the new features that were included in the latest release:</p>



<ul class="wp-block-list">
<li>Simultaneous WPA2 &amp; WPA3 support.</li>



<li>Introduction of a stable libnetplan1 API.</li>



<li>Mellanox VF-LAG support for high performance SR-IOV networking.</li>



<li>New <strong>hairpin</strong> and <strong>port-mac-learning</strong> settings, useful for VXLAN tunnels with FRRouting.</li>



<li>New <strong>netplan status &#8211;diff</strong> subcommand, finding differences between configuration and system state.</li>
</ul>



<p>Besides those highlights of the v1.0 release, I’d also like to shed some light on new functionality that was integrated within the past two years for those upgrading from the previous Ubuntu 22.04 LTS which used Netplan v0.104:</p>



<ul class="wp-block-list">
<li>We added support for the management of new network interface types, such as <strong>veth</strong>, <strong>dummy</strong>, <strong>VXLAN</strong>, <strong>VRF</strong> or <strong>InfiniBand</strong> (IPoIB).&nbsp;</li>



<li>Wireless functionality was improved by <a href="https://blog.slyon.de/2023/11/12/netplan-brings-consistent-network-configuration-across-desktop-server-cloud-and-iot/">integrating Netplan with NetworkManager</a> on desktop systems, adding support for WPA3 and adding the notion of a <strong>regulatory-domain</strong>, to choose proper frequencies for specific regions.&nbsp;</li>



<li>To improve maintainability, we moved to Meson as Netplan’s buildsystem, added upstream CI coverage for multiple Linux distributions and integrations (such as Debian testing, NetworkManager, snapd or cloud-init), checks for ABI compatibility, and automatic memory leak detection.&nbsp;</li>



<li>We increased consistency between the supported backend renderers (systemd-networkd and NetworkManager), by <a href="https://discourse.ubuntu.com/t/netplan-0-106-call-for-testing/33932">matching physical network interfaces on permanent MAC address</a>, when the <strong>match.macaddress</strong> setting is being used, and added new hardware offloading functionality for high performance networking, such as Single-Root IO Virtualisation virtual function link-aggregation (SR-IOV VF-LAG).</li>
</ul>



<p>The much improved <a href="https://netplan.readthedocs.io">Netplan documentation</a>, that is now hosted on “Read the Docs”, and new command line subcommands, such as <strong>netplan status</strong>, make Netplan a well vested tool for declarative network management and troubleshooting.</p>



<h2 class="wp-block-heading">Integrations</h2>



<p>Those changes pave the way to integrate Netplan in 3rd party projects, such as system installers or cloud deployment methods. By shipping the new <strong>python3-netplan</strong> Python bindings to libnetplan, it is now easier than ever to access Netplan functionality and network validation from other projects. We are proud that the <a href="https://blog.slyon.de/2023/07/10/netplan-and-systemd-networkd-on-debian-bookworm/">Debian Cloud Team chose Netplan</a> to be the default network management tool in their official cloud-images for Debian Bookworm and beyond. Ubuntu’s NetworkManager package now uses <a href="https://blog.slyon.de/2023/11/12/netplan-brings-consistent-network-configuration-across-desktop-server-cloud-and-iot/">Netplan as it’s default backend on Ubuntu 23.10 Desktop</a> systems and beyond. Further integrations happened with cloud-init and the Calamares installer.<br></p>



<p>Please check out the <a href="https://github.com/canonical/netplan/releases/1.0">Netplan version 1.0 release</a> on GitHub! If you want to learn more, follow our activities on <a href="https://netplan.io/">Netplan.io</a>, <a href="https://github.com/canonical/netplan">GitHub</a>, <a href="https://bugs.launchpad.net/netplan">Launchpad</a>, <a href="https://web.libera.chat/gamja/?channels=%23netplan">IRC</a> or our <a href="https://discourse.ubuntu.com/t/blog-netplan-developer-diaries/35932">Netplan Developer Diaries</a> blog on discourse.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.slyon.de/2024/04/04/netplan-v1-0-paves-the-way-to-stable-declarative-network-management/feed/</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
		<item>
		<title>Netplan brings consistent network configuration across Desktop, Server, Cloud and IoT</title>
		<link>https://blog.slyon.de/2023/11/12/netplan-brings-consistent-network-configuration-across-desktop-server-cloud-and-iot/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Sun, 12 Nov 2023 15:00:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2326</guid>

					<description><![CDATA[Ubuntu 23.10 “Mantic Minotaur” Desktop, showing network settings We released Ubuntu 23.10 ‘Mantic Minotaur’ on 12 October 2023, shipping its proven and trusted network stack based on Netplan. Netplan is the default tool to configure Linux networking on Ubuntu since 2016. In the past, it was primarily used to control the Server and Cloud variants ... <a title="Netplan brings consistent network configuration across Desktop, Server, Cloud and IoT" class="read-more" href="https://blog.slyon.de/2023/11/12/netplan-brings-consistent-network-configuration-across-desktop-server-cloud-and-iot/" aria-label="Read more about Netplan brings consistent network configuration across Desktop, Server, Cloud and IoT">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p class="has-text-align-center"><img loading="lazy" decoding="async" width="624" height="351" src="https://lh7-us.googleusercontent.com/eCZ_pK0jISK00IRzV0usPZJm6ZeZWGtDIxJKIvvcpCBr8Im5uOs1Z2MFbGDwnZoPeNQ5e-Ow_PM20j99CXIY84AoVk-FuPmlGRVehnvQeAVt_R2KbsGUp1-BxaBFKI2MWxGncM1W4tvs608Vn_WaYxM"></p>



<p class="has-text-align-center">Ubuntu 23.10 “Mantic Minotaur” Desktop, showing network settings</p>



<p>We released Ubuntu 23.10 ‘Mantic Minotaur’ on 12 October 2023, shipping its <a href="https://ubuntu.com/blog/a-declarative-approach-to-linux-networking-with-netplan">proven and trusted network stack based on Netplan</a>. Netplan is the default tool to configure Linux networking on Ubuntu since 2016. In the past, it was primarily used to control the Server and Cloud variants of Ubuntu, while on Desktop systems it would hand over control to NetworkManager. In Ubuntu 23.10 this disparity in how to control the network stack on different Ubuntu platforms was closed by integrating NetworkManager with the underlying Netplan stack.</p>



<p>Netplan could already be used to describe network connections on Desktop systems managed by NetworkManager. But network connections created or modified through NetworkManager would not be known to Netplan, so it was a one-way street. Activating the bidirectional NetworkManager-Netplan integration allows for any configuration change made through NetworkManager to be propagated back into Netplan. Changes made in Netplan itself will still be visible in NetworkManager, as before. This way, Netplan can be considered the “single source of truth” for network configuration across all variants of Ubuntu, with the network configuration stored in <code>/etc/netplan/</code>, using Netplan’s common and declarative YAML format.</p>



<h2 class="wp-block-heading">Netplan Desktop integration</h2>



<p>On workstations, the most common scenario is for users to configure networking through NetworkManager’s graphical interface, instead of driving it through Netplan’s declarative YAML files. Netplan ships a “libnetplan” library that provides an API to access Netplan’s parser and validation internals, which is now used by NetworkManager to store any network interface configuration changes in Netplan. For instance, network configuration defined through NetworkManager’s graphical UI or D-Bus API will be exported to Netplan’s native YAML format in the common location at <code>/etc/netplan/</code>. This way, the only thing administrators need to care about when managing a fleet of Desktop installations is Netplan. Furthermore, programmatic access to all network configuration is now easily accessible to other system components integrating with Netplan, such as snapd. This solution has already been used in more confined environments, such as Ubuntu Core and is now enabled by default on Ubuntu 23.10 Desktop.</p>



<h2 class="wp-block-heading">Migration of existing connection profiles</h2>



<p>On installation of the NetworkManager package (network-manager >= 1.44.2-1ubuntu1) in Ubuntu 23.10, all your existing connection profiles from <code>/etc/NetworkManager/system-connections/</code> will automatically and transparently be migrated to Netplan’s declarative YAML format and stored in its common configuration directory <code>/etc/netplan/</code>. </p>



<p>The same migration will happen in the background whenever you add or modify any connection profile through the NetworkManager user interface, integrated with GNOME Shell. From this point on, Netplan will be aware of your entire network configuration and you can query it using its CLI tools, such as “<code>sudo netplan get</code>” or “<code>sudo netplan status</code>” without interrupting traditional NetworkManager workflows (UI, nmcli, nmtui, D-Bus APIs). You can observe this migration on the apt-get command line, watching out for logs like the following:</p>



<pre class="wp-block-preformatted"><code>Setting up network-manager (1.44.2-1ubuntu1.1) ...
Migrating HomeNet (9d087126-ae71-4992-9e0a-18c5ea92a4ed) to /etc/netplan
Migrating eduroam (37d643bb-d81d-4186-9402-7b47632c59b1) to /etc/netplan
Migrating DebConf (f862be9c-fb06-4c0f-862f-c8e210ca4941) to /etc/netplan</code></pre>



<p></p>



<p>In order to prepare for a smooth transition, NetworkManager tests were integrated into Netplan’s continuous integration pipeline at the upstream GitHub repository. Furthermore, we implemented a <a href="https://netplan.readthedocs.io/en/latest/netplan-everywhere/">passthrough method</a> of handling unknown or new settings that cannot yet be fully covered by Netplan, making Netplan future-proof for any upcoming NetworkManager release.</p>



<h2 class="wp-block-heading">The future of Netplan</h2>



<p>Netplan has established itself as the proven network stack across all variants of Ubuntu – Desktop, Server, Cloud, or Embedded. It has been the default stack across many Ubuntu LTS releases, serving millions of users over the years. With the bidirectional integration between NetworkManager and Netplan the final piece of the puzzle is implemented to consider Netplan the “single source of truth” for network configuration on Ubuntu. With <a href="https://blog.slyon.de/2023/07/10/netplan-and-systemd-networkd-on-debian-bookworm/">Debian choosing Netplan</a> to be the default network stack for their cloud images, it is also gaining traction outside the Ubuntu ecosystem and growing into the wider open source community.</p>



<p>Within the development cycle for Ubuntu 24.04 LTS, we will polish the Netplan codebase to be ready for a 1.0 release, coming with certain guarantees on API and ABI stability, so that other distributions and 3rd party integrations can rely on Netplan’s interfaces. First steps into that direction have already been taken, as the Netplan team reached out to the Debian community at <a href="https://debconf23.debconf.org/talks/11-a-declarative-approach-to-linux-networking-with-netplan/">DebConf 2023 in Kochi/India</a> to evaluate possible synergies.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Netplan can be used transparently to control a workstation’s network configuration and plays hand-in-hand with many desktop environments through its tight integration with NetworkManager. It allows for easy network monitoring, using common graphical interfaces and provides a “single source of truth” to network administrators, allowing for configuration of Ubuntu Desktop fleets in a streamlined and declarative way. You can try this new functionality hands-on by following the “<a href="https://ubuntu.com/tutorials/access-desktop-networkmanager-settings-through-netplan">Access Desktop NetworkManager settings through Netplan</a>” tutorial.</p>



<p><br>If you want to learn more, feel free to follow our activities on <a href="https://netplan.io/">Netplan.io</a>, <a href="https://github.com/canonical/netplan">GitHub</a>, <a href="https://bugs.launchpad.net/netplan">Launchpad</a>, <a href="https://web.libera.chat/gamja/?channels=%23netplan">IRC</a> or our <a href="https://discourse.ubuntu.com/t/blog-netplan-developer-diaries/35932">Netplan Developer Diaries</a> blog on discourse.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Netplan v0.107 is now available</title>
		<link>https://blog.slyon.de/2023/08/24/netplan-v0-107-is-now-available/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Thu, 24 Aug 2023 12:59:50 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2317</guid>

					<description><![CDATA[I’m happy to announce that Netplan version 0.107 is now available on GitHub and is soon to be deployed into a Linux installation near you! Six months and more than 200 commits after the previous version (including a .1 stable release), this release is brought to you by 8 free software contributors from around the globe. Highlights Highlights of ... <a title="Netplan v0.107 is now available" class="read-more" href="https://blog.slyon.de/2023/08/24/netplan-v0-107-is-now-available/" aria-label="Read more about Netplan v0.107 is now available">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>I’m happy to announce that <a href="https://netplan.io/">Netplan</a> version 0.107 is now available on <a href="https://github.com/canonical/netplan/releases/tag/0.107">GitHub</a> and is soon to be deployed into a Linux installation near you! Six months and more than 200 commits after the previous version (including a .1 stable release), this release is brought to you by 8 free software contributors from around the globe.</p>



<h2 class="wp-block-heading">Highlights</h2>



<p>Highlights of this release include the new configuration types for <strong>veth</strong> and <strong>dummy</strong> interfaces:</p>



<pre class="wp-block-preformatted"><code>network:
  version: 2
  virtual-ethernets:
    veth0:
      peer: veth1
    veth1:
      peer: veth0
  dummy-devices:
    dm0:
      addresses:
        - 192.168.0.123/24
      ...</code></pre>



<p>Furthermore, we implemented <a href="https://cffi.readthedocs.io">CFFI</a> based Python bindings on top of libnetplan&#8217;s API, that can easily be consumed by 3rd party applications (see full <a href="https://github.com/canonical/netplan/blob/main/examples/cffi-bindings.py">cffi-bindings.py</a> example):</p>



<pre class="wp-block-preformatted"><code>from netplan import Parser, State, NetDefinition
from netplan import NetplanException, NetplanParserException
</code>
<code>parser = Parser()

# Parse the full, existing YAML config hierarchy
parser.load_yaml_hierarchy(rootdir='/')

# Validate the final parser state
state = State()
try:
    # validation of current state + new settings
    state.import_parser_results(parser)
except NetplanParserException as e:
    print('Error in', e.filename, 'Row/Col', e.line, e.column, '->', e.message)
except NetplanException as e:
    print('Error:', e.message)

# Walk through ethernet NetdefIDs in the state and print their backend
# renderer, to demonstrate working with NetDefinitionIterator &amp;
# NetDefinition
for netdef in state.ethernets.values():
    print('Netdef', netdef.id, 'is managed by:', netdef.backend)
    print('Is it configured to use DHCP?', netdef.dhcp4 or netdef.dhcp6)</code></pre>



<h2 class="wp-block-heading">Changelog:</h2>



<ul class="wp-block-list">
<li>Support for &#8220;dummy&#8221; (<code>dummy-devices</code>) interfaces (<a href="https://pad.lv/1774203">LP#1774203</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/361">#361</a></li>



<li>Support for &#8220;veth&#8221; (<code>virtual-ethernets</code>) interfaces by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/368">#368</a></li>



<li>Add Python bindings for libnetplan by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/385">#385</a></li>



<li>netplan: Handle command exceptions by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/334">#334</a></li>



<li>WPA3 (personal) support (<a href="https://pad.lv/2023238">LP#2023238</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/369">#369</a></li>



<li>Add all the commands to the bash completion file (<a href="https://pad.lv/1749869">LP#1749869</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/326">#326</a></li>



<li>New submodule for state manipulation by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/379">#379</a></li>



<li>commands/status: show routes from all routing tables by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/390">#390</a></li>



<li>cli:status: Make rich pretty printing optional by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/388">#388</a></li>



<li>libnetplan: expose dhcp4 and dhcp6 properties by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/394">#394</a></li>



<li>Expose macaddress and DNS configuration from the netdef by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/395">#395</a></li>



<li>libnetplan: expose the routes list in the netdef by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/397">#397</a></li>



<li>NetworkManager: Wireguard private key flag support by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/371">#371</a></li>



<li>Add a netplan_parser_load_keyfile() Python binding by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/351">#351</a></li>



<li>keyfile parser: add support for all tunnel types (<a href="https://pad.lv/2016473">LP#2016473</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/360">#360</a></li>



<li>parse-nm:wg: add support for reading the listen-port property by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/372">#372</a></li>



<li>parse-nm: add support for VRF devices by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/398">#398</a></li>



<li>Vlan keyfile parser support by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/370">#370</a></li>



<li>Netplan docs rework by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/333">#333</a> &amp; <a href="https://github.com/canonical/netplan/pull/337">#337</a></li>



<li>docs: Add a short netplan-everywhere howto by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/325">#325</a></li>



<li>doc: make us of sphinx copybutton plugin by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/354">#354</a></li>



<li>doc: Add Ubuntu Code of Conduct 2.0 by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/355">#355</a></li>



<li>doc: Explanation about 00-network-manager-all.yaml by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/378">#378</a></li>
</ul>



<h2 class="wp-block-heading">Bug fixes:</h2>



<ul class="wp-block-list">
<li>Fix FTBFS on Fedora and refresh RPM packaging by <a href="https://github.com/Conan-Kudo">@Conan-Kudo</a> in <a href="https://github.com/canonical/netplan/pull/323">#323</a></li>



<li>parser: validate lacp-rate properly (<a href="https://pad.lv/1745648">LP#1745648</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/324">#324</a></li>



<li>meson: use meson-make-symlink.sh helper script instead of install_symlink() by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/327">#327</a></li>



<li>netplan: cli: fix typo from &#8216;unkown&#8217; to &#8216;unknown&#8217; by <a href="https://github.com/AristoChen">@AristoChen</a> in <a href="https://github.com/canonical/netplan/pull/328">#328</a></li>



<li>Handle duplication during parser second pass (<a href="https://pad.lv/2007682">LP#2007682</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/329">#329</a></li>



<li>parse:ovs: Ignore deprecated OpenFlow1.6 protocol (<a href="https://pad.lv/1963735">LP#1963735</a>) by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/332">#332</a></li>



<li>dbus: Build the copy path correctly by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/331">#331</a></li>



<li>tests: add new spread based snapd integration test by <a href="https://github.com/mvo5">@mvo5</a> in <a href="https://github.com/canonical/netplan/pull/330">#330</a></li>



<li>Use controlled execution environment, to avoid failure if PATH is unset (<a href="https://pad.lv/1959570">LP#1959570</a>) by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/336">#336</a></li>



<li>Some refactoring by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/338">#338</a></li>



<li>netplan: adjust the maximum buffer size to 1MB by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/340">#340</a></li>



<li>parse: use &#8220;&#8211;&#8221; with systemd-escape by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/347">#347</a></li>



<li>docs: fix bridge parameters types and add examples by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/346">#346</a></li>



<li>vrfs: skip policies parsing if list is NULL (<a href="https://pad.lv/2016427">LP#2016427</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/341">#341</a></li>



<li>networkd: plug a memory leak by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/344">#344</a></li>



<li>libnetplan: don&#8217;t try to read from a NULL file by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/342">#342</a></li>



<li>nm: return if write_routes() fails by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/345">#345</a></li>



<li>parse: plug a memory leak by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/348">#348</a></li>



<li>parse: set the backend on nm-devices to NM by default by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/349">#349</a></li>



<li>parse: don&#8217;t point to the wrong node on validation by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/343">#343</a></li>



<li>rtd: set the OS and Python versions explicitly by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/357">#357</a></li>



<li>Fix 8021x eap method parsing (<a href="https://pad.lv/2016625">LP#2016625</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/358">#358</a></li>



<li>CI: update canonical/setup-lxd to v0.1.1 by <a href="https://github.com/barrettj12">@barrettj12</a> in <a href="https://github.com/canonical/netplan/pull/359">#359</a></li>



<li>CI: fix dch after adding the new 0.106.1 tag by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/364">#364</a></li>



<li>Provide frequency to wpa_supplicant when in adhoc mode (<a href="https://pad.lv/2020754">LP#2020754</a>) by <a href="https://github.com/yevmel">@yevmel</a> in <a href="https://github.com/canonical/netplan/pull/363">#363</a></li>



<li>Improve the coverage of the memory leak tests by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/365">#365</a></li>



<li>Fix keyfile parsing of wireguard config when the prefix of allowed IPs is omited by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/366">#366</a></li>



<li>routes: fix metric rendering (<a href="https://pad.lv/2023681">LP#2023681</a>) by <a href="https://github.com/bengentil">@bengentil</a> in <a href="https://github.com/canonical/netplan/pull/367">#367</a></li>



<li>CI: add DebCI integration test by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/362">#362</a></li>



<li>CI: initial NetworkManager autopkgtests by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/374">#374</a></li>



<li>parse-nm: handle cloned-mac-address special cases (<a href="https://pad.lv/2026230">LP#2026230</a>) by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/376">#376</a></li>



<li>Improve autopkgtest stability with systemd 253 &amp; iproute 6.4 by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/377">#377</a></li>



<li>Fixes for minor issues by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/380">#380</a></li>



<li>tests:integration: Adopt for systemd v254 (Closes: #1041310) by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/381">#381</a></li>



<li>parse: Downgrade NM passthrough warning to debug by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/384">#384</a></li>



<li>netplan.c: Don&#8217;t drop files with just global values on &#8216;set&#8217; (<a href="https://pad.lv/2027584">LP#2027584</a>) by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/382">#382</a></li>



<li>Fixing Coverity issues by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/383">#383</a></li>



<li>CLI: Refactoring to avoid namespace clash with public bindings by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/387">#387</a></li>



<li>tests: fix test coverage report with newer python-coverage by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/389">#389</a></li>



<li>github: add a scheduled action to run Coverity by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/391">#391</a></li>



<li>github: only run the coverity workflow on our repository by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/392">#392</a></li>



<li>Addressing a few issues found by coverity by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/393">#393</a></li>



<li>Wireguard fixes by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/352">#352</a></li>



<li>Fix a memory leak, an assert and an error message by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/350">#350</a></li>



<li>ovs: don&#8217;t allow peers with the same name by <a href="https://github.com/daniloegea">@daniloegea</a> in <a href="https://github.com/canonical/netplan/pull/353">#353</a></li>



<li>CI: make use of the canonical/setup-lxd action by <a href="https://github.com/slyon">@slyon</a> in <a href="https://github.com/canonical/netplan/pull/356">#356</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A declarative approach to Linux networking with Netplan</title>
		<link>https://blog.slyon.de/2023/07/18/a-declarative-approach-to-linux-networking-with-netplan/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Tue, 18 Jul 2023 09:15:57 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2293</guid>

					<description><![CDATA[Linux networking can be confusing due to the wide range of technology stacks and tools in use, in addition to the complexity of the surrounding network environment. The configuration of bridges, bonds, VRFs or routes can be done programmatically, declaratively, manually or with automated with tools like ifupdown, ifupdown2, ifupdown-ng, iproute2, NetworkManager, systemd-networkd and others. ... <a title="A declarative approach to Linux networking with Netplan" class="read-more" href="https://blog.slyon.de/2023/07/18/a-declarative-approach-to-linux-networking-with-netplan/" aria-label="Read more about A declarative approach to Linux networking with Netplan">Read more</a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash.jpg"><img loading="lazy" decoding="async" width="1024" height="574" src="https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash-1024x574.jpg" alt="" class="wp-image-2295" srcset="https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash-1024x574.jpg 1024w, https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash-300x168.jpg 300w, https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash-768x431.jpg 768w, https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash-1536x862.jpg 1536w, https://blog.slyon.de/wp-content/uploads/2023/07/taylor-vick-M5tzZtFCOfs-unsplash.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Photo by Taylor Vick (<a href="https://unsplash.com/de/fotos/M5tzZtFCOfs">Unsplash</a>)</figcaption></figure>



<p>Linux networking can be confusing due to the wide range of technology stacks and tools in use, in addition to the complexity of the surrounding network environment. The configuration of bridges, bonds, VRFs or routes can be done programmatically, declaratively, manually or with automated with tools like ifupdown, ifupdown2, ifupdown-ng, iproute2, NetworkManager, systemd-networkd and others. Each&nbsp; of these tools use different formats and locations to store their configuration files. <a href="https://netplan.io/">Netplan</a>, a utility for easily configuring networking on a Linux system, is designed to unify and standardise how administrators interact with these underlying technologies. Starting from a YAML description of the required network interfaces and what each should be configured to do, Netplan will generate all the necessary configuration for your chosen tool.</p>



<p>In this article, we will provide an overview of how Ubuntu uses Netplan to manage Linux networking in a unified way. By creating a common interface across two disparate technology stacks, IT administrators benefit from a unified experience across both desktops and servers whilst retaining the unique advantages of the underlying tech.</p>



<p>But first, let’s start with a bit of history and show where we are today.</p>



<h2 class="wp-block-heading">The history of Netplan in Ubuntu</h2>



<p>Starting with Ubuntu 16.10 and driven by the need to express network configuration in a common way across cloud metadata and other installer systems, we had the opportunity to switch to a network stack that integrates better with our dependency-based boot model. We chose <a href="https://manpages.ubuntu.com/manpages/man8/systemd-networkd.service.8.html"><strong>systemd-networkd</strong></a> on server installations for its active upstream community and because it was already part of Systemd and therefore included in any Ubuntu base installation. It has a much better outlook for the future, using modern development techniques, good test coverage and CI integration, compared to the <a href="https://manpages.ubuntu.com/manpages/man5/interfaces.5.html"><strong>ifupdown</strong></a> tool we used previously. On desktop installations, we kept using <a href="https://manpages.ubuntu.com/manpages/man8/NetworkManager.8.html"><strong>NetworkManager</strong></a> due to its very good integration with the user interface.</p>



<p>Having to manage and configure two separate network stacks, depending on the Ubuntu variant in use, can be confusing, and we wanted to provide a streamlined user experience across any flavour of Ubuntu. Therefore, we introduced <a href="https://netplan.io">Netplan.io</a> as a control layer above systemd-networkd and NetworkManager. Netplan takes declarative YAML files from <code>/etc/netplan/ </code>as an input and generates corresponding network configuration for the relevant network stack backend in <code>/run/systemd/network/</code> or <code>/run/NetworkManager/</code> depending on the system configuration. All while keeping full flexibility to control the underlying network stack in its native way if need be.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://blog.slyon.de/wp-content/uploads/2023/07/netplan_design_overview.png"><img loading="lazy" decoding="async" width="304" height="360" src="https://blog.slyon.de/wp-content/uploads/2023/07/netplan_design_overview.png" alt="" class="wp-image-2294" srcset="https://blog.slyon.de/wp-content/uploads/2023/07/netplan_design_overview.png 304w, https://blog.slyon.de/wp-content/uploads/2023/07/netplan_design_overview-253x300.png 253w" sizes="auto, (max-width: 304px) 100vw, 304px" /></a><figcaption class="wp-element-caption">Design overview (<a href="https://netplan.io">netplan.io</a>)</figcaption></figure>
</div>


<h2 class="wp-block-heading">Who is using Netplan?</h2>



<p>Recent versions of Netplan are available and ready to be installed on many distributions, such as Ubuntu, Fedora, RedHat Enterprise Linux, Debian and Arch Linux.</p>



<h3 class="wp-block-heading">Ubuntu</h3>



<p>As stated above, Netplan has been installed by default on Ubuntu systems since 2016 and is therefore being used by millions of users across multiple long-term support versions of Ubuntu (18.04, 20.04, 22.04) on a day-to-day basis. This covers Ubuntu server scenarios primarily, such as bridges, bonding, VLANs, VXLANs, VRFs, IP tunnels or WireGuard tunnels, using systemd-networkd as the backend renderer.</p>



<p>On Ubuntu desktop systems, Netplan can be used manually through its declarative YAML configuration files, and it will handle those to configure the NetworkManager stack. Keep reading to get a glimpse of how this will be improved through automation and integration with the desktop stack in the future.</p>



<h3 class="wp-block-heading">Cloud</h3>



<p>It might not be as obvious, but many people have been using Netplan without knowing about it when configuring a public cloud instance on AWS, Google Cloud or elsewhere through cloud-init. This is because cloud-init’s “Networking Config Version 2” is a passthrough configuration to Netplan, which will then set up the underlying network stack on the given cloud instance. This is why Netplan is also a key package on the Debian distribution, for example, as it’s being used by <a href="https://blog.slyon.de/2023/07/10/netplan-and-systemd-networkd-on-debian-bookworm/">default on Debian cloud images</a>, too.</p>



<h2 class="wp-block-heading">Our vision for Linux networking</h2>



<p>We know that Linux networking can be a beast, and we want to keep simple things simple. But also allow for custom setups of any complexity. With Netplan, the day-to-day networking needs are covered through easily comprehensible and <a href="https://netplan.io/reference">nicely documented YAML files</a>, that describe the desired state of the local network interfaces, which will be rendered into corresponding configuration files for the relevant network stack and applied at (re-)boot or at runtime, using the “netplan apply” CLI. For example <code>/etc/netplan/lan.yaml</code>:</p>



<pre class="wp-block-preformatted"><code>network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true</code></pre>



<p>Having a single source of truth for network configuration is also important for administrators, so they do not need to understand multiple network stacks, but can rely on the declarative data given in <code>/etc/netplan/</code> to configure a system, independent of the underlying network configuration backend. This is also very helpful to seed the initial network configuration for new Linux installations, for example through installation systems such as Subiquity, Ubuntu’s desktop installer or cloud-init across the public and private clouds.</p>



<p>In addition to describing and applying network configuration, the “<code>netplan status</code>” CLI can be used to query relevant data from the underlying network stack(s), such as systemd-networkd, NetworkManager or iproute2, and present them in a unified way.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://blog.slyon.de/wp-content/uploads/2023/02/large-2454f59e1c69d6a712ccccf2b0838c37.png"><img loading="lazy" decoding="async" width="743" height="383" src="https://blog.slyon.de/wp-content/uploads/2023/02/large-2454f59e1c69d6a712ccccf2b0838c37.png" alt="" class="wp-image-2212" srcset="https://blog.slyon.de/wp-content/uploads/2023/02/large-2454f59e1c69d6a712ccccf2b0838c37.png 743w, https://blog.slyon.de/wp-content/uploads/2023/02/large-2454f59e1c69d6a712ccccf2b0838c37-300x155.png 300w" sizes="auto, (max-width: 743px) 100vw, 743px" /></a><figcaption class="wp-element-caption">Netplan status (<a href="https://screenshots.debian.net/package/netplan.io">Debian</a>)</figcaption></figure>
</div>


<p>At the Netplan project we strive for very high test automation and coverage with plenty of unit tests, integration tests and linting steps, across multiple Linux distros, which gives high confidence in also supporting more advanced networking use cases, such as Open vSwitch or SR-IOV network virtualization, in addition to normal wired (static IP, DHCP, routing), wireless (e.g. wwan modems, WPA2/3 connections, WiFi hotspot, controlling the regulatory domain, …) and common server scenarios.</p>



<p>Should there ever be a scenario that is not covered by Netplan natively, it allows for full flexibility to control the underlying network stack directly through systemd override configurations or NetworkManager passthrough settings in addition to having manual configuration side-by-side with interfaces controlled through Netplan.</p>



<h2 class="wp-block-heading">The future of Netplan desktop integration</h2>



<p>On workstations, the most common scenario is for end users to configure NetworkManager through its user interface tools, instead of driving it through Netplan’s declarative YAML files, which makes use of NetworkManager’s native configuration files. To avoid Netplan just handing over control to NetworkManager on such systems, we’re working on a bidirectional integration between NetworkManager and Netplan to further improve the “single source of truth” use case on Ubuntu desktop installations.</p>



<p>Netplan is shipping a “libnetplan” library that provides an API to access Netplan’s parser and validation internals, that can be used by NetworkManager to write back a network interface configuration. For instance, configuration given through NetworkManager’s UI tools or D-Bus API can be exported to Netplan’s native YAML format in the common location at <code>/etc/netplan/</code>. This way, administrators just need to care about Netplan when managing a fleet of Desktop installations. This solution is currently being used in more confined environments, like Ubuntu Core, when using the NetworkManager snap, and we will deliver it to generic Ubuntu desktop systems in 24.04 LTS.</p>



<p>In addition to NetworkManager, libnetplan can also be used to integrate with other tools in the networking space, such as cloud-init for improved validation of user data or installation systems when seeding new Linux images.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Overall, Netplan can be considered to be a good citizen within a network environment that plays hand-in-hand with other networking tools and makes it easy to control modern network stacks, such as systemd-networkd or NetworkManager in a common, streamlined and declarative way. It provides a “single source of truth” to network administrators about the network state, while keeping simple things simple, but allowing for arbitrarily complex custom setups.<br>If you want to learn more, feel free to follow our activities on <a href="https://netplan.io/">Netplan.io</a>, <a href="https://github.com/canonical/netplan">GitHub</a>, <a href="https://bugs.launchpad.net/netplan">Launchpad</a>, <a href="https://web.libera.chat/gamja/?channels=%23netplan">IRC</a> or our <a href="https://discourse.ubuntu.com/t/blog-netplan-developer-diaries/35932">Netplan Developer Diaries</a> blog on discourse.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Netplan and systemd-networkd on Debian Bookworm</title>
		<link>https://blog.slyon.de/2023/07/10/netplan-and-systemd-networkd-on-debian-bookworm/</link>
		
		<dc:creator><![CDATA[slyon]]></dc:creator>
		<pubDate>Mon, 10 Jul 2023 09:44:26 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[netplan]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.slyon.de/?p=2231</guid>

					<description><![CDATA[Debian&#8217;s cloud-images are using systemd-networkd as their default network stack in Bookworm. A slim and feature rich networking daemon that comes included with Systemd itself. Debian&#8217;s cloud-images are deploying Netplan on top of this as an easy-to-use, declarative control layer. If you want to experiment with systemd-networkd and Netplan on Debian, this can be done ... <a title="Netplan and systemd-networkd on Debian Bookworm" class="read-more" href="https://blog.slyon.de/2023/07/10/netplan-and-systemd-networkd-on-debian-bookworm/" aria-label="Read more about Netplan and systemd-networkd on Debian Bookworm">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>Debian&#8217;s cloud-images are using <a href="https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html">systemd-networkd</a> as their default network stack in Bookworm. A slim and feature rich networking daemon that comes included with Systemd itself. Debian&#8217;s cloud-images are deploying <a href="https://netplan.io">Netplan</a> on top of this as an easy-to-use, declarative control layer.</p>



<p>If you want to experiment with systemd-networkd and Netplan on Debian, this can be done easily in QEMU using the official images. To start, you need to download the relevant <code>.qcow2</code> Debian cloud-image from: <a href="https://cloud.debian.org/images/cloud/bookworm/latest/">https://cloud.debian.org/images/cloud/bookworm/latest/</a></p>



<pre class="wp-block-preformatted"><code>$ wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2</code></pre>



<h2 class="wp-block-heading">Prepare a cloud image</h2>



<p>Next, you need to prepare some configuration files for <a href="https://cloud-init.io/">cloud-init</a> and Netplan, to prepare a data-source (<code>seed.img</code>) for your local cloud-image.</p>



<pre class="wp-block-preformatted"><code>$ cat > meta.yaml &lt;&lt;EOF
instance-id: debian01
local-hostname: cloudimg
EOF</code></pre>



<pre class="wp-block-preformatted"><code>$ cat > user.yaml &lt;&lt;EOF
#cloud-config
ssh_pwauth: true
password: test
chpasswd:
  expire: false
EOF</code></pre>



<pre class="wp-block-preformatted"><code>$ cat > netplan.yaml &lt;&lt;EOF
network:
  version: 2
  ethernets:
    id0:
      match:
        macaddress: "ca:fe:ca:fe:00:aa"
      dhcp4: true
      dhcp6: true
      set-name: lan0
EOF</code></pre>



<p>Once all configuration is prepared, you can create the local data-source image, using the <code>cloud-localds</code> tool from the <code>cloud-image-utils</code> package:</p>



<pre class="wp-block-preformatted"><code>$ cloud-localds --network-config=netplan.yaml seed.img user.yaml meta.yaml</code></pre>



<h2 class="wp-block-heading">Launch the local VM</h2>



<p>Now, everything is prepared to launch a QEMU VM with two NICs and do some experimentation! The following command will launch an ephemeral environment for you, keeping the original Debian cloud-image untouched. If you want to preserve any changes on disk, you can remove the trailing <code>-snapshot</code> parameter.</p>



<pre class="wp-block-preformatted"><code>$ qemu-system-x86_64 \
  -machine accel=kvm,type=q35 \
  -cpu host \
  -m 2G \
  -device virtio-net-pci,netdev=net0,mac=ca:fe:ca:fe:00:aa \
  -netdev user,id=net0,hostfwd=tcp::2222-:22 \
  -nic user,model=virtio-net-pci,mac=f0:0d:ca:fe:00:bb \
  -drive if=virtio,format=qcow2,file=debian-12-generic-amd64.qcow2 \
  -drive if=virtio,format=raw,file=seed.img -snapshot</code></pre>



<p>We set up the default <code>debian</code> user account through cloud-init&#8217;s user-data configuration above, so you can now login to the system, using that user with the (very unsafe!) password &#8220;test&#8221;.</p>



<pre class="wp-block-preformatted"><code>$ ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -p 2222 debian@localhost # password: test</code></pre>



<h2 class="wp-block-heading">Experience Netplan and systemd-networkd</h2>



<p>Once logged in successfully, you can execute the <code>netplan status</code> command to check the system&#8217;s network configuration, as configured through cloud-init&#8217;s <code>netplan.yaml</code> passthrough. So you&#8217;ve already used Netplan at this point implicitly and it did all the configuration of systemd-networkd for you in the background!</p>



<pre class="wp-block-preformatted"><code>debian@cloudimg:~$ sudo netplan status -a
     Online state: online
    DNS Addresses: 10.0.2.3 (compat)
       DNS Search: .

●  1: lo ethernet UNKNOWN/UP (unmanaged)
      MAC Address: 00:00:00:00:00:00
        Addresses: 127.0.0.1/8
                   ::1/128
           Routes: ::1 metric 256

●  2: enp0s2 ethernet DOWN (unmanaged)
      MAC Address: f0:0d:ca:fe:00:bb (Red Hat, Inc.)

●  3: lan0 ethernet UP (networkd: id0)
      MAC Address: ca:fe:ca:fe:00:aa (Red Hat, Inc.)
        Addresses: 10.0.2.15/24 (dhcp)
                   fec0::c8fe:caff:fefe:aa/64
                   fe80::c8fe:caff:fefe:aa/64 (link)
    DNS Addresses: 10.0.2.3
           Routes: default via 10.0.2.2 from 10.0.2.15 metric 100 (dhcp)
                   10.0.2.0/24 from 10.0.2.15 metric 100 (link)
                   10.0.2.2 from 10.0.2.15 metric 100 (dhcp, link)
                   10.0.2.3 from 10.0.2.15 metric 100 (dhcp, link)
                   fe80::/64 metric 256
                   fec0::/64 metric 100 (ra)
                   default via fe80::2 metric 100 (ra)</code></pre>



<p>As you can see from this output, the <code>lan0</code> interface is configured via the &#8220;id0&#8221; Netplan ID to be managed by systemd-networkd. Compare this data to the <code>netplan.yaml</code> file above, the <code>networkctl</code> output, the local Netplan configuration in <code>/etc/netplan/</code> and the auto-generated systemd-networkd configuration.</p>



<pre class="wp-block-preformatted"><code>debian@cloudimg:~$ networkctl 
IDX LINK   TYPE     OPERATIONAL SETUP     
  1 lo     loopback carrier     unmanaged
  2 enp0s2 ether    off         unmanaged
  3 lan0   ether    routable    configured

3 links listed.

<code>debian</code>@cloudimg:~$ cat /etc/netplan/50-cloud-init.yaml 
# [...]
network:
    ethernets:
        id0:
            dhcp4: true
            dhcp6: true
            match:
                macaddress: ca:fe:ca:fe:00:aa
            set-name: lan0
    version: 2
</code>
<code><code>debian</code>@cloudimg:~$ ls -l /run/systemd/network/
total 8
-rw-r--r-- 1 root root  78 Jul  5 15:23 10-netplan-id0.link
-rw-r--r-- 1 root root 137 Jul  5 15:23 10-netplan-id0.network</code></pre>



<p>Now you can go ahead and try something more advanced, like <a href="https://netplan.readthedocs.io/en/latest/netplan-tutorial/#creating-a-link-aggregation">link aggregation</a>, using the second NIC that you configured for this QEMU VM and explore all the possibilities of Netplan on Debian, by checking the <a href="https://netplan.readthedocs.io/en/latest/netplan-yaml/">Netplan YAML documentation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
