<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>The Wombelix Post - sumaform</title><link href="https://dominik.wombacher.cc/" rel="alternate"/><link href="/feeds/tag_sumaform.atom.xml" rel="self"/><id>https://dominik.wombacher.cc/</id><updated>2022-05-18T00:00:00+02:00</updated><entry><title>Setup Uyuni Development Environment with focus on Java and IntelliJ</title><link href="https://dominik.wombacher.cc/posts/setup_uyuni_development_environment_with_focus_on_java_and_intellij.html" rel="alternate"/><published>2022-03-09T00:00:00+01:00</published><updated>2022-05-18T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2022-03-09:/posts/setup_uyuni_development_environment_with_focus_on_java_and_intellij.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Hacking Uyuni, either to troubleshoot and fix bugs or to contribute new features / improvements
is something I do since quite a while already, at least  whenever I find some time  ... &lt;a class="read-more" href="/posts/setup_uyuni_development_environment_with_focus_on_java_and_intellij.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Hacking Uyuni, either to troubleshoot and fix bugs or to contribute new features / improvements
is something I do since quite a while already, at least  whenever I find some time.
Getting started wasn't that easy, there are a lot of resources available but sometimes there are outdated,
too focused on SUSE employees instead community contributors or just didn't fully answered my questions.&lt;/p&gt;
&lt;p&gt;So I want to share my experiences to Setup a Development Environment for Uyuni,
with focus on the Java Codebase, on a openSUSE Tumbleweed System by using sumaform and IntelliJ IDEA.&lt;/p&gt;
&lt;div class="contents local topic" id="contents"&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#resources" id="toc-entry-1"&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#sumaform" id="toc-entry-2"&gt;sumaform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#install-packages" id="toc-entry-3"&gt;Install Packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#clone-git-repo-and-prepare-files-folders" id="toc-entry-4"&gt;Clone git repo and prepare files / folders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configure-intellij-idea" id="toc-entry-5"&gt;Configure IntelliJ IDEA&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#enable-automatic-building" id="toc-entry-6"&gt;Enable automatic building&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configure-code-style" id="toc-entry-7"&gt;Configure Code Style&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#remote-debugging" id="toc-entry-8"&gt;Remote Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#ivy-integration" id="toc-entry-9"&gt;Ivy integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#checkstyle-integration" id="toc-entry-10"&gt;CheckStyle integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#avoid-checkstyle-violations" id="toc-entry-11"&gt;Avoid CheckStyle violations&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#enabling-automatic-import-completion" id="toc-entry-12"&gt;enabling automatic import completion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#disabling-star-imports" id="toc-entry-13"&gt;disabling &amp;quot;star imports&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#wrapping-and-braces" id="toc-entry-14"&gt;wrapping and braces&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#faster-deployments-via-manager-build-xml" id="toc-entry-15"&gt;Faster deployments via manager-build.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configure-junit-tests" id="toc-entry-16"&gt;Configure JUnit tests&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#deploying-java-code-or-css" id="toc-entry-17"&gt;Deploying Java code or CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#contribute" id="toc-entry-18"&gt;Contribute&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr class="docutils" /&gt;
&lt;div class="section" id="resources"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Resources&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You can find a lot of information in the &lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/wiki/"&gt;Uyuni Wiki&lt;/a&gt; and a
great &lt;a class="reference external" href="http://bosdonnat.fr/slides/openSUSEAsiaSummit19/"&gt;Presentation&lt;/a&gt;
(&lt;a class="reference external" href="https://web.archive.org/web/20211001151412/http://bosdonnat.fr/slides/openSUSEAsiaSummit19/"&gt;Archive&lt;/a&gt;,
&lt;a class="reference external" href="https://github.com/cbosdo/openSUSEAsia19-uyuni-dev"&gt;Source&lt;/a&gt;) from &lt;a class="reference external" href="http://bosdonnat.fr"&gt;Cédric Bosdonnat&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="sumaform"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;sumaform&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;See my Post &lt;a class="reference external" href="https://dominik.wombacher.cc/posts/uyuni_test_environment_with_sumaform_on_local_libvirt_host_opensuse_tumbleweed.html"&gt;Uyuni Test Environment with sumaform on local libvirt host (openSUSE Tumbleweed)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are &lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/wiki/Development-Environment-Alternative-Instructions"&gt;Alternative Instructions&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220309214954/https://github.com/uyuni-project/uyuni/wiki/Development-Environment-Alternative-Instructions"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-214849/https://github.com/uyuni-project/uyuni/wiki/Development-Environment-Alternative-Instructions"&gt;[2]&lt;/a&gt;)
available in case using sumaform isn't possible or not intended.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="install-packages"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Install Packages&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Add the &lt;em&gt;systemsmanagement:Uyuni:Utils&lt;/em&gt; repository, especially for &lt;em&gt;obs-to-maven&lt;/em&gt;, and install the necessary packages.&lt;/p&gt;
&lt;p&gt;Manually:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
sudo zypper addrepo obs://systemsmanagement:Uyuni:Utils systemsmanagement:uyuni:utils
sudo zypper in java-11-openjdk-devel openssh rsync apache-ivy ant ant-junit servletapi5 cpio obs-to-maven tito yarn

&lt;/pre&gt;
&lt;p&gt;Ansible snippet:&lt;/p&gt;
&lt;pre class="code yaml literal-block"&gt;
&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Import systemsmanagement:/Uyuni:/Utils RPM Key&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;rpm_key&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;key&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;https://download.opensuse.org/repositories/systemsmanagement:/Uyuni:/Utils/openSUSE_Tumbleweed/repodata/repomd.xml.key&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;present&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Add systemsmanagement:/Uyuni:/Utils RPM Repository&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;community.general.zypper_repository&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;systemsmanagement_uyuni_utils&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;description&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Several utilities to develop, build or release Uyuni (openSUSE_Tumbleweed)&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;repo&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;https://download.opensuse.org/repositories/systemsmanagement:/Uyuni:/Utils/openSUSE_Tumbleweed/&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;priority&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;95&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;present&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;ignore_errors&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Package Installation (Uyuni Development)&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;community.general.zypper&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;java-11-openjdk-devel&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;openssh&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;rsync&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;apache-ivy&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;ant&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;ant-junit&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;servletapi5&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;obs-to-maven&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;tito&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;yarn&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;allow_vendor_change&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;force_resolution&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;force&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;latest&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="clone-git-repo-and-prepare-files-folders"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Clone git repo and prepare files / folders&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Fork the &lt;a class="reference external" href="https://github.com/uyuni-project/uyuni"&gt;Uyuni Repository&lt;/a&gt; and clone it.
I will use the placeholder &lt;code&gt;&amp;lt;path_to_uyuni&amp;gt;&lt;/code&gt; a lot, which refers to the local path of your cloned uyuni fork.&lt;/p&gt;
&lt;p&gt;Let's start with some files and folders which are required at a later point for unittest and deployment.&lt;/p&gt;
&lt;p&gt;Create the folders &lt;em&gt;/usr/share/rhn/config-defaults&lt;/em&gt;, &lt;em&gt;/var/log/rhn&lt;/em&gt; and &lt;em&gt;/srv/susemanager&lt;/em&gt;, owner and group should match with your user account.&lt;/p&gt;
&lt;p&gt;Ansible snippet:&lt;/p&gt;
&lt;pre class="code yaml literal-block"&gt;
&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Create Folders for Uyuni Development Unittests and Build&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;file&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;path&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;&amp;quot;{{&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;item&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;}}&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;directory&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;owner&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;wombelix&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;group&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;users&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;loop&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;/usr/share/rhn/config-defaults&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;/var/log/rhn&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;/srv/susemanager&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Create a &lt;em&gt;rhn.conf&lt;/em&gt; used by JUnit:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
cp &amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/test/rhn.conf.postgresql-example &amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/test/rhn.conf

&lt;/pre&gt;
&lt;p&gt;Get / update java libraries and dependencies:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
cd &amp;lt;path_to_uyuni_root&amp;gt;/java
ant -f manager-build.xml ivy

&lt;/pre&gt;
&lt;p&gt;Compile branding jar for the first time:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
cd &amp;lt;path_to_uyuni_root&amp;gt;/java
ant -f manager-build.xml refresh-branding-jar

&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="configure-intellij-idea"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Configure IntelliJ IDEA&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I will focus on IntelliJ IDEA but can also use
&lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/wiki/Eclipse-specific-development-instructions"&gt;Eclipse&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220309215457/https://github.com/uyuni-project/uyuni/wiki/Eclipse-specific-development-instructions"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-215319/https://github.com/uyuni-project/uyuni/wiki/Eclipse-specific-development-instructions"&gt;[2]&lt;/a&gt;)
or &lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/wiki/VS-Code-specific-development-instructions"&gt;VSCode&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220309215449/https://github.com/uyuni-project/uyuni/wiki/VS-Code-specific-development-instructions"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-215515/https://github.com/uyuni-project/uyuni/wiki/VS-Code-specific-development-instructions"&gt;[2]&lt;/a&gt;), if you want.&lt;/p&gt;
&lt;p&gt;The following Steps are heavily based on
&lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/wiki/IntelliJ-IDEA-specific-development-instructions"&gt;IntelliJ IDEA specific development instructions&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220309215526/https://github.com/uyuni-project/uyuni/wiki/IntelliJ-IDEA-specific-development-instructions"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-215715/https://github.com/uyuni-project/uyuni/wiki/IntelliJ-IDEA-specific-development-instructions"&gt;[2]&lt;/a&gt;)
and &lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/wiki/Java-Development-Environment"&gt;Java Development Environment&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220309215601/https://github.com/uyuni-project/uyuni/wiki/Java-Development-Environment"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-215915/https://github.com/uyuni-project/uyuni/wiki/Java-Development-Environment"&gt;[2]&lt;/a&gt;)
with some adjustments, additional information and tested on IntelliJ IDEA Ultimate 2022.1 EAP.&lt;/p&gt;
&lt;p&gt;The JetBrain Toolbox is in my opinion the easiest way to install and update IntelliJ.
If you installed it manually, please check the documentation where / how you can configure the &lt;em&gt;vmoptions&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Toolbox App &amp;gt; three dots next to &amp;quot;IntelliJ IDEA&amp;quot; &amp;gt; Settings &amp;gt; Configuration &amp;gt; Java Virtual Machine options &amp;quot;Edit...&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
Replace &lt;code&gt;-Xmx2048m&lt;/code&gt; with &lt;code&gt;-Xmx4G&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;Source:
&lt;a class="reference external" href="https://intellij-support.jetbrains.com/hc/en-us/articles/206544869-Configuring-JVM-options-and-platform-properties"&gt;https://intellij-support.jetbrains.com&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20211213213449/https://intellij-support.jetbrains.com/hc/en-us/articles/206544869-Configuring-JVM-options-and-platform-properties"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-220705/https://intellij-support.jetbrains.com/hc/en-us/articles/206544869-Configuring-JVM-options-and-platform-properties"&gt;[2]&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Afterwards start IntelliJ IDEA to proceed with the actual configuration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; New &amp;gt; Project from existing Source&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Select &amp;lt;path_to_uyuni_root&amp;gt;&lt;/div&gt;
&lt;div class="line"&gt;Create Project from existing Source&lt;/div&gt;
&lt;div class="line"&gt;Accept the project format defaults&lt;/div&gt;
&lt;div class="line"&gt;Also accept auto discovered source directories&lt;/div&gt;
&lt;div class="line"&gt;From the Libraries list, uncheck all items&lt;/div&gt;
&lt;div class="line"&gt;From the Modules list, only check the items corresponding to the following directories:&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;code&gt;uyuni/java/code&lt;/code&gt; (change the name to code)&lt;/div&gt;
&lt;div class="line"&gt;&lt;code&gt;uyuni/branding/java/code&lt;/code&gt; (change the name to branding)&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Select a Java 11 runtime e.g. the previously installed openJDK&lt;/div&gt;
&lt;div class="line"&gt;Ultimate Edition: Unselect eventually found frameworks&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class="section" id="enable-automatic-building"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Enable automatic building&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Build, Execution, Deployment &amp;gt; Compiler and select &amp;quot;Build project automatically&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="configure-code-style"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Configure Code Style&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Editor &amp;gt; Code Style &amp;gt; Java &amp;gt; Imports&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
Click on the cog / settings icon next to the &amp;quot;Scheme: Default&amp;quot; field at the top, then &amp;quot;Import Scheme&amp;quot;, &amp;quot;IntelliJ IDEA code style XML&amp;quot; and select the &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/conf/intellij-codestyle.xml&lt;/code&gt; file.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="remote-debugging"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Remote Debugging&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Run &amp;gt; Edit Configurations... &amp;gt; + sign&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Accept all defaults, except from Host and Port, configure them based on the service you want to debug.&lt;/div&gt;
&lt;div class="line"&gt;8000 for Tomcat, 8001 for Taskomatic, 8002 for Search (defaults if deployed with sumaform)&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Further reading: &lt;a class="reference external" href="https://www.jetbrains.com/help/idea/debugging-code.html#general-procedure"&gt;IntelliJ IDEA Debugging Guide&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220218091806/https://www.jetbrains.com/help/idea/debugging-code.html"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-220232/https://www.jetbrains.com/help/idea/debugging-code.html%23general-procedure"&gt;[2]&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="ivy-integration"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Ivy integration&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Plugins &amp;gt; Browse repositories... &amp;gt; search for &amp;quot;IvyIDEA&amp;quot; &amp;gt; Install the Ivy plugin&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
Restart IntelliJ IDEA (if asked) to activate the plugin&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Project Structure... &amp;gt; Modules -&amp;gt; right click on code &amp;gt; + sign &amp;gt; click on &amp;quot;ivyIDEA&amp;quot; to enable the plugin for the project&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Click on folder icon at the right side to select the Ivy configuration path: &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/ivy/ivy-suse.xml&lt;/code&gt;&lt;/div&gt;
&lt;div class="line"&gt;Check &amp;quot;Use module specific ivy settings&amp;quot;&lt;/div&gt;
&lt;div class="line"&gt;Click on folder icon at the right side to select the Ivy configuration path: &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/ivy/ivyconf.xml&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tools &amp;gt; IvyIDEA &amp;gt; &amp;quot;Resolve for all modules&amp;quot; to get updated Ivy dependencies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: When switching branches that have different dependencies (notably, major versions) you have to:&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Tools &amp;gt; IvyIDEA &amp;gt; Remove all resolved libraries&lt;/div&gt;
&lt;div class="line"&gt;Tools &amp;gt; IvyIDEA &amp;gt; Resolve for all modules&lt;/div&gt;
&lt;div class="line"&gt;Build &amp;gt; Rebuild project&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="checkstyle-integration"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;CheckStyle integration&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Plugins &amp;gt; Browse repositories... &amp;gt; search for &amp;quot;CheckStyle&amp;quot; -&amp;gt; Install the CheckStyle IDEA plugin&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
Restart IntelliJ IDEA to activate the plugin&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Tools &amp;gt; Checkstyle&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Change the Checkstyle version to the one in &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/ivy/ivy-suse.xml&lt;/code&gt; (currently 8.30)&lt;/div&gt;
&lt;div class="line"&gt;Click on the + sign next to Configuration File&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;Description: Uyuni&lt;/div&gt;
&lt;div class="line"&gt;Check &amp;quot;Use a local Checkstyle file&amp;quot;, select &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/checkstyle.xml&lt;/code&gt;&lt;/div&gt;
&lt;div class="line"&gt;Check &amp;quot;Store relative to project location&amp;quot;, click on Next&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Set the following values for properties:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
checkstyle.cache.file: &amp;lt;path_to_uyuni_root&amp;gt;/java/build/checkstyle.cache.src
checkstyle.header.file: &amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/LICENSE.txt
checkstyle.suppressions.file: &amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/checkstyle-suppressions.xml
javadoc.lazy: false
javadoc.method.scope: public
javadoc.type.scope: package
javadoc.var.scope: package

&lt;/pre&gt;
&lt;p&gt;Click on Finish, mark the file as Active, click on Apply and leave the Settings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Afterwards a new mini-tab will appear at the bottom named &amp;quot;CheckStyle&amp;quot;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="avoid-checkstyle-violations"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-11"&gt;Avoid CheckStyle violations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;These are recommended settings, which might already be set as default, that help respecting style guidelines independent of the CheckStyle plugin:&lt;/p&gt;
&lt;div class="section" id="enabling-automatic-import-completion"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-12"&gt;enabling automatic import completion&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Editor &amp;gt; General &amp;gt; Auto Import&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Set &amp;quot;Insert imports on paste&amp;quot; to &amp;quot;Always&amp;quot;&lt;/div&gt;
&lt;div class="line"&gt;Select &amp;quot;Add unambiguous imports on the fly&amp;quot; and &amp;quot;Optimize imports on the fly&amp;quot; in the Java Section.&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="disabling-star-imports"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-13"&gt;disabling &amp;quot;star imports&amp;quot;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Editor &amp;gt; Code Style &amp;gt; Java &amp;gt; Imports&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Class count to use import with '*' &amp;gt; 999&lt;/div&gt;
&lt;div class="line"&gt;Names count to use static import with '*' &amp;gt; 999&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="wrapping-and-braces"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-14"&gt;wrapping and braces&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Settings... &amp;gt; Editor &amp;gt; Code Style &amp;gt; Java &amp;gt; Wrapping and Braces&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Under 'try' statement check 'catch' on new line and 'finally' on new line&lt;/div&gt;
&lt;div class="line"&gt;Under 'if' statement check 'else' on new line&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="faster-deployments-via-manager-build-xml"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-15"&gt;Faster deployments via manager-build.xml&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Change the output directory to enable quick &lt;em&gt;manager-build.xml&lt;/em&gt; deploys:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;File -&amp;gt; Project Structure... -&amp;gt; Modules -&amp;gt; code -&amp;gt; Paths&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Click on &amp;quot;Use module compile output path&amp;quot; and set:&lt;/div&gt;
&lt;/div&gt;
&lt;div class="line"&gt;&amp;quot;Output path&amp;quot; to &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/build/classes&lt;/code&gt;&lt;/div&gt;
&lt;div class="line"&gt;&amp;quot;Test output path&amp;quot; to &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/build/tests&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enable usage of precompiled files by adding &lt;code&gt;precompiled=true&lt;/code&gt; to &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/manager-developer-build.properties&lt;/code&gt;,
if the file not exist, copy &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/manager-developer-build.properties.example&lt;/code&gt;, rename and edit the new file.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="configure-junit-tests"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-16"&gt;Configure JUnit tests&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Project Structure... &amp;gt; Modules &amp;gt; code &amp;gt; Dependencies&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
Click the + sign &amp;gt; Module dependency &amp;gt; branding &amp;gt; OK to include branding classes and files in the build&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; Project Structure... -&amp;gt; Modules -&amp;gt; code&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
Mark the directory webapp as Resources&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Run &amp;gt; Edit Configurations... &amp;gt; + sign &amp;gt; JUnit&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Name: JUnit&lt;/div&gt;
&lt;div class="line"&gt;Run on: Local machine&lt;/div&gt;
&lt;div class="line"&gt;Build and run:&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="code text literal-block"&gt;
JRE: Java 11
-cp: -cp code
-ea: -ea -Drhn.config.dir=$MODULE_DIR$/../buildconf/test/ -Dlog4j.threshold=debug

&lt;/pre&gt;
&lt;p&gt;Select &amp;quot;All in package&amp;quot; to execute all available Unittests, if you want to limit to a specific class or package adjust the dropdown and filepath accordingly&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To start the JUnit tests, click on &lt;strong&gt;Run &amp;gt; Run&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Important: Start the test database docker container first, otherwise almost all tests will just fail&lt;/em&gt;&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
cd &amp;lt;path_to_uyuni_root&amp;gt;/java
make -f Makefile.docker dockerrun_pg

&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="deploying-java-code-or-css"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-17"&gt;Deploying Java code or CSS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you created a terraform based VM with sumaform, you can easily deploy code:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Run checkstyle&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="code text literal-block"&gt;
cd &amp;lt;path_to_uyuni_root&amp;gt;/java
ant -f manager-build.xml checkstyle

&lt;/pre&gt;
&lt;ol class="arabic simple" start="2"&gt;
&lt;li&gt;Deploy&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="code text literal-block"&gt;
cd &amp;lt;path_to_uyuni_root&amp;gt;/java
ant -f manager-build.xml refresh-branding-jar deploy -Ddeploy.host=uyuni-server.tf.local restart-tomcat restart-taskomatic

&lt;/pre&gt;
&lt;p&gt;You can configure the &lt;em&gt;deploy.host&lt;/em&gt; in &lt;code&gt;&amp;lt;path_to_uyuni_root&amp;gt;/java/buildconf/manager-developer-build.properties&lt;/code&gt;
and omit the command line parameter.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="contribute"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-18"&gt;Contribute&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://www.uyuni-project.org"&gt;Uyuni&lt;/a&gt; exist since July 2018, the initial release (4.0.0) was based on SUSE Manager 3.2, since
then Uyuni is the Upstream Project of SUSE Manager. SUSE Manager is based on Spacewalk, which was sponsored by Red Hat and
abandoned, so SUSE decided to start a own &lt;a class="reference external" href="https://news.opensuse.org/2018/05/26/uyuni-forking-spacewalk-with-salt-and-containers/"&gt;Fork&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20210418110047/https://news.opensuse.org/2018/05/26/uyuni-forking-spacewalk-with-salt-and-containers/"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-211509/https://news.opensuse.org/2018/05/26/uyuni-forking-spacewalk-with-salt-and-containers/"&gt;[2]&lt;/a&gt;), Uyuni was born.&lt;/p&gt;
&lt;p&gt;Still a lot of development comes from SUSE but there is a growing &lt;a class="reference external" href="https://www.uyuni-project.org/pages/contact.html"&gt;Community&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220309221253/https://www.uyuni-project.org/pages/contact.html"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.09-221014/https://www.uyuni-project.org/pages/contact.html"&gt;[2]&lt;/a&gt;)
with more and more independent Contributions.&lt;/p&gt;
&lt;p&gt;If your dev environment is ready and you want to jump in, but didn't contributed to the Uyuni Project before,
I suggest you take a look at some &lt;a class="reference external" href="https://github.com/uyuni-project/uyuni/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22"&gt;Good first Issues&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content><category term="Code"/><category term="Uyuni"/><category term="Java"/><category term="Development"/><category term="sumaform"/><category term="IntelliJ"/></entry><entry><title>Uyuni Test Environment with sumaform on local libvirt host (openSUSE Tumbleweed)</title><link href="https://dominik.wombacher.cc/posts/uyuni_test_environment_with_sumaform_on_local_libvirt_host_opensuse_tumbleweed.html" rel="alternate"/><published>2022-03-08T00:00:00+01:00</published><updated>2022-03-08T00:00:00+01:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2022-03-08:/posts/uyuni_test_environment_with_sumaform_on_local_libvirt_host_opensuse_tumbleweed.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;A convenient way to quickly setup a local Uyuni Instance inclusive Clients, either for Development or Testing, is sumaform.
It supports different backends and provides a ton of options, check  ... &lt;a class="read-more" href="/posts/uyuni_test_environment_with_sumaform_on_local_libvirt_host_opensuse_tumbleweed.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;A convenient way to quickly setup a local Uyuni Instance inclusive Clients, either for Development or Testing, is sumaform.
It supports different backends and provides a ton of options, check it out: &lt;a class="reference external" href="https://github.com/uyuni-project/sumaform"&gt;https://github.com/uyuni-project/sumaform&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just want to run a Uyuni Server and a few Clients (openSUSE, EL, Debian) on my Laptop so I can verify reported bugs,
try some configs as well as deploy and test changes during development, without investing much time.&lt;/p&gt;
&lt;p&gt;Following a overview of the, in my case, relevant steps, examples of my config and some Ansible snippets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
sudo zypper addrepo http://download.opensuse.org/repositories/systemsmanagement:/sumaform/openSUSE_Tumbleweed/systemsmanagement:sumaform.repo
sudo zypper install git-core
sudo zypper install --from systemsmanagement_sumaform terraform terraform-provider-libvirt
git clone https://github.com/uyuni-project/sumaform.git

&lt;/pre&gt;
&lt;p&gt;Follow the &lt;em&gt;First-time configuration (libvirt)&lt;/em&gt; instructions in the
&lt;a class="reference external" href="https://github.com/uyuni-project/sumaform/blob/2082e344b9cdde5c3befb11fc358d80eb50de346/backend_modules/libvirt/README.md"&gt;README&lt;/a&gt;,
but use the uyuni example file instead: &lt;code&gt;copy main.tf.uyuni.example to main.tf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Config &amp;amp; Deployment&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
vim main.tf

terraform init
terraform validate
terraform apply

&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;My terraform main.cf based on the uyuni example file&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code shell literal-block"&gt;
terraform&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&lt;span class="pygments-nv"&gt;required_version&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;1.0.10&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;required_providers&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
   &lt;/span&gt;&lt;span class="pygments-nv"&gt;libvirt&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
     &lt;/span&gt;&lt;span class="pygments-nv"&gt;version&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;0.6.3&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
   &lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;provider&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;libvirt&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;module&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;base&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;cc_username&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;cc_password&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;images&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;[&lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;centos7&amp;quot;&lt;/span&gt;,&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;opensuse153o&amp;quot;&lt;/span&gt;,&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;ubuntu1804&amp;quot;&lt;/span&gt;&lt;span class="pygments-o"&gt;]&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;module&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;base_configuration&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;module.base.configuration&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;product_version&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;uyuni-master&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;name&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;image&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;opensuse153o&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;use_os_released_updates&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;create_first_user&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;auto_accept&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;skip_changelog_import&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;mgr_sync_autologin&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;create_sample_channel&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;create_sample_activation_key&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;create_sample_bootstrap_script&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;publish_private_ssl_key&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;java_debugging&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;provider_settings&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nv"&gt;memory&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-m"&gt;8192&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nv"&gt;vcpu&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-m"&gt;4&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;module&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;redhat-minion&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;base_configuration&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;module.base.configuration&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;product_version&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;uyuni-master&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;name&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;minion-centos7&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;image&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;centos7&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;server_configuration&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;module.server.configuration&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;provider_settings&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nv"&gt;memory&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-m"&gt;1024&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;auto_connect_to_master&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;module&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;debian-minion&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;base_configuration&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;module.base.configuration&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;product_version&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;uyuni-master&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;name&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;minion-ubuntu1804&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;image&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;ubuntu1804&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;server_configuration&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;module.server.configuration&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;provider_settings&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nv"&gt;memory&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-m"&gt;1024&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nv"&gt;auto_connect_to_master&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nb"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ansible Snippets for the Setup steps&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code yaml literal-block"&gt;
&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Import systemsmanagement:/sumaform RPM Key&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;rpm_key&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;key&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;https://download.opensuse.org/repositories/systemsmanagement:/sumaform/openSUSE_Tumbleweed/repodata/repomd.xml.key&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;present&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Add systemsmanagement:/sumaform RPM Repository&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;community.general.zypper_repository&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;systemsmanagement_sumaform&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;description&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Using Terraform to create a SUSE Manager test environment (openSUSE_Tumbleweed)&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;repo&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;https://download.opensuse.org/repositories/systemsmanagement:/sumaform/openSUSE_Tumbleweed/&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;priority&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;90&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;present&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;ignore_errors&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Package Installation (Uyuni Development - sumaform)&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;community.general.zypper&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;terraform&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;terraform-provider-libvirt&lt;/span&gt;&lt;span class="pygments-w"&gt;
      &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;git-core&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;allow_vendor_change&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;force_resolution&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;force&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;true&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;state&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;latest&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
</content><category term="Linux"/><category term="uyuni"/><category term="sumaform"/><category term="terraform"/><category term="libvirt"/><category term="openSUSE"/></entry></feed>