Skip to content

SUSE

zypper lr -d
zypper repos -d
sudo zypper addrepo https://download.opensuse.org/repositories/openSUSE:Leap:42.1:Update/standard/openSUSE:Leap:42.1:Update.repo
sudo zypper removerepo https://url-of-software-repository/

Registration

SUSEConnect --status
sudo SUSEConnect -r YOUR_SLES_REGISTRATION_CODE -e your.email@company.com

nfs

# nfs server
mkdir -p /mnt/sle-15
mount -o loop /install/SLE-15-SP3-Full-x86_64-QU4-Media1.iso /mnt/sle-15
zypper addrepo /mnt/sle-15/Module-Basesystem/ sle-basesystem
zypper refresh
zypper install nfs-kernel-server

python3

sudo SUSEConnect -p sle-module-python3/15.7/x86_64
sudo zypper refresh
sudo zypper install python311 python311-pip

docker

sudo SUSEConnect -p sle-module-containers/15.7/x86_64
sudo zypper refresh
sudo zypper install docker 
# 1. Make sure the Package Hub module is activated (safe to run again)
sudo SUSEConnect -p PackageHub/15.7/x86_64

# 2. Refresh repositories
sudo zypper refresh

# 3. Install Docker Compose V2 + the compatibility switch
sudo zypper install docker-compose docker-compose-switch

sshpass

wget -c -O /tmp/sshpass https://download.opensuse.org/repositories/systemsmanagement/15.7/x86_64/sshpass-1.10-sm.150700.16.2.x86_64.rpm
rpm -Uvh /tmp/sshpass

# OR use the zypper with file extension .rpm
sudo zypper --non-interactive install /tmp/sshpass.rpm

Network

ib interface

sudo ip link set ib0 up
sudo ip add add 10.10.1.2/24 brd + dev ib0

/etc/sysconfig/network/ifcfg-ib0

IPADDR='10.10.1.2/24'
BOOTPROTO='static'
STARTMODE='auto'
IPOIB_MODE=''
ZONE=public

/etc/sysconfig/network/ifroute-eth2

autoyast

/var/lib/confluent/public/os/sle-15.7-x86_64-server/autoyast

<?xml version="1.0"?>
<!DOCTYPE profile>
<!--
This autoyast file will be processed by pre.sh before applying. See pre.sh for
info on modifying its behavior, and also search and replace '%%' to remove
dynamic behavior and replace with static configuration.
-->
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
    <timezone>
      <hwclock>UTC</hwclock>
      <timezone>%%TIMEZONE%%</timezone>
    </timezone>
    <firstboot>
      <firstboot_enabled config:type="boolean">false</firstboot_enabled>
    </firstboot>
    <kdump>
      <add_crash_kernel config:type="boolean">false</add_crash_kernel>
    </kdump>
    <general>
      <self_update config:type="boolean">false</self_update>
      <mode>
              <confirm config:type="boolean">false</confirm>
      </mode>
    </general>
    <!--INSERT:/tmp/bootloader.xml-->
    <add-on>
    <add_on_products config:type="list">
      <listentry>
              <media_url>http://192.168.1.10/confluent-public/os/sle-15.7-x86_64-server/distribution/1/</media_url>
        <product_dir>/Module-Basesystem</product_dir>
      </listentry>

      <listentry>
              <media_url>http://192.168.1.10/confluent-public/os/sle-15.7-x86_64-server/distribution/1/</media_url>
        <product_dir>/Module-Server-Applications</product_dir>
      </listentry>
      <listentry>
        <media_url>http://192.168.1.10/confluent-public/os/sle-15.7-x86_64-server/distribution/1/</media_url>
        <product_dir>/Module-Python3</product_dir>
      </listentry>
    </add_on_products>
    </add-on>
    <software>
      <products config:type="list">
        <product>SLES</product>
      </products>
      <patterns config:type="list">
        <pattern>base</pattern>
      </patterns>
      <packages config:type="list">
        <package>openssh</package>
        <package>iputils</package>
        <package>python3</package>
        <package>python311</package>
        <package>openssl</package>
        <package>chrony</package>
        <package>rsync</package>
        <package>screen</package>
        <package>vim</package>
        <package>binutils</package>
        <package>pciutils</package>
        <package>usbutils</package>
        <package>nfs-client</package>
        <package>ethtool</package>
        <package>sudo</package>
      </packages>
    </software>
  <partitioning config:type="list">
          <drive>
                  <device>%%INSTDISK%%</device>
                  <initialize config:type="boolean">true</initialize>
                  <use>all</use>
                  <partitions config:type="list">
                         <partition>
                                 <filesystem config:type="symbol">xfs</filesystem>
                                 <mount>/</mount>
                                 <size>max</size>
                         </partition>
                         <partition>
                                 <mount>swap</mount>
                                 <size>auto</size>
                         </partition>
                         <partition>
                                 <mount>/boot</mount>
                                 <size>500M</size>
                         </partition>
                 </partitions>
          </drive>
 </partitioning>
    <users config:type="list">
      <user>
        <username>root</username>
        <user_password>%%ROOTPASSWORD%%</user_password>
        <encrypted config:type="boolean">true</encrypted>
        <!--INSERT:/tmp/rootkeys.xml-->
      </user>
    </users>
    <networking>
            <dns>
                    <hostname>%%NODENAME%%</hostname>
            </dns>
            <keep_install_network config:type="boolean">true</keep_install_network>
    </networking>
    <services-manager>
            <services>
                    <enable config:type="list">
                            <service>sshd</service>
                        </enable>
                </services>
        </services-manager>
    <scripts>
         <pre-scripts config:type="list">
        <script>
          <filename>preinstall.sh</filename>
          <source>
<![CDATA[
#!/bin/sh
confluent_mgr=$(grep ^deploy_server /etc/confluent/confluent.deploycfg|awk '{print $2}')
confluent_profile=$(grep ^profile: /etc/confluent/confluent.deploycfg|sed -e 's/^profile: //')
proto=$(grep ^protocol: /etc/confluent/confluent.deploycfg |awk '{print $2}')
curl $proto://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/pre.sh > /tmp/pre.sh
. /tmp/pre.sh
]]>
          </source>
        </script>
      </pre-scripts>
         <chroot-scripts config:type="list">
        <script>
          <filename>chroot.sh</filename>
          <source>
<![CDATA[
#!/bin/sh
confluent_mgr=$(grep ^deploy_server /etc/confluent/confluent.deploycfg|awk '{print $2}')
confluent_profile=$(grep ^profile: /etc/confluent/confluent.deploycfg|sed -e 's/^profile: //')
proto=$(grep ^protocol: /etc/confluent/confluent.deploycfg |awk '{print $2}')
curl $proto://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/prechroot.sh > /tmp/prechroot.sh
. /tmp/prechroot.sh
curl -f $proto://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/firstboot.sh > /mnt/etc/confluent/firstboot.sh
curl -f $proto://$confluent_mgr/confluent-public/os/$confluent_profile/scripts/post.sh > /mnt/etc/confluent/post.sh
chmod +x /mnt/etc/confluent/firstboot.sh
chmod +x /mnt/etc/confluent/post.sh
cp /mnt/etc/confluent/post.sh /mnt/var/adm/autoinstall/scripts/
]]>
          </source>
        </script>
        <script>
          <chrooted config:type="boolean">true</chrooted>
          <filename>post.sh</filename>
          <location>file:///etc/confluent/post.sh</location>
        </script>
        <script>
  <chrooted config:type="boolean">true</chrooted>
  <filename>enable_ssh_access.sh</filename>
  <source>
<![CDATA[
#!/bin/sh
mkdir -p /etc/ssh/sshd_config.d
cat > /etc/ssh/sshd_config.d/99-root-password-login.conf <<'EOF'
PermitRootLogin yes
PasswordAuthentication yes
EOF
systemctl enable sshd || true
systemctl enable firewalld || true
if command -v firewall-offline-cmd >/dev/null 2>&1; then
    firewall-offline-cmd --add-service=ssh || firewall-offline-cmd --add-port=22/tcp || true
fi
]]>
  </source>
</script>
      </chroot-scripts>
      <init-scripts config:type="list">
        <script>
          <filename>firstboot.sh</filename>
          <location>file:///etc/confluent/firstboot.sh</location>
        </script>
     </init-scripts>

    </scripts>
</profile>