Hi everyone,
and thank you @juergen_albertsen & @Bogdan_Mihai for your comments.
Definitely looking forward to anything making cloud provisioning of an Exasol easier, I rather did enjoy the exa-cloudtools - maybe there will be an Exasol-provided and maintained Terraform-generator in the future ? Guess I“ll have to wait and see 
I do have a similar thread like this one in mind for a Proxmox-based install, but one story at a time 
Thanks to Bogdan“s info our story today continues, as indeed using cat /home/exasol/.ssh/id_rsa.pub >> /home/exasol/.ssh/authorized_keys
did the trick and ssh connectivity was now achived.
I also went back as suggested and checked the OS Configuration, SELinux was actually not set to permissive, and also firewalld was still running so those are 2 potential things that got into my way last time.
So the steps taken today were:
[root@eduvm-01 ~]# getenforce
Permissive
[root@eduvm-01 ~]# systemctl status firewalld
ā firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@eduvm-01 ~]# dnf install iptables-services
Red Hat CodeReady Linux Builder for RHEL 9 x86_64 (RPMs) from RHUI 44 MB/s | 14 MB 00:00
Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs) 57 MB/s | 71 MB 00:01
Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs) 75 MB/s | 84 MB 00:01
Red Hat Enterprise Linux 9 for x86_64 - Supplementary (RPMs) from RHUI 26 kB/s | 3.4 kB 00:00
Microsoft Azure RPMs for Red Hat Enterprise Linux 9 (rhel9) 31 kB/s | 2.9 kB 00:00
Dependencies resolved.
Package Architecture Version Repository Size
Installing:
iptables-nft-services noarch 1.8.10-11.el9_5 rhel-9-for-x86_64-appstream-rhui-rpms 24 k
[root@eduvm-01 ~]# systemctl enable iptables
Created symlink /etc/systemd/system/multi-user.target.wants/iptables.service ā /usr/lib/systemd/system/iptables.service.
[root@eduvm-01 ~]# systemctl start iptables
[root@eduvm-01 ~]# systemctl status iptables
ā iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; preset: disabled)
Active: active (exited) since Fri 2025-10-31 13:07:01 UTC; 5s ago
Process: 2334 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
Main PID: 2334 (code=exited, status=0/SUCCESS)
CPU: 10ms
[exasol@eduvm-01 ~]$ echo ā$SHELLā
/bin/bash
After all this came the part with the ssh copy and that does seem to show that even with permissive SELinx and disabled firewalld the ssh-copy-id didn“t want to help out here, but Bogdan“s cat ( the command, not the animal - don“t even know if he has a cat ) manged to do the trick 
[exasol@eduvm-01 ~]$ ssh-copy-id exasol@10.0.0.4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ā/home/exasol/.ssh/id_rsa.pubā
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed ā if you are prompted now it is to install the new keys
exasol@10.0.0.4: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[exasol@eduvm-01 ~]$ cd ~/.ssh/
[exasol@eduvm-01 .ssh]$ ls -ltr
total 12
-rw-rārā. 1 exasol exasol 569 Oct 22 17:50 id_rsa.pub
-rw-------. 1 exasol exasol 2602 Oct 22 17:50 id_rsa
-rw-rārā. 1 exasol exasol 272 Oct 22 17:54 known_hosts
[exasol@eduvm-01 .ssh]$ cat /home/exasol/.ssh/id_rsa.pub >> /home/exasol/.ssh/authorized_keys
[exasol@eduvm-01 .ssh]$ ls -ltr
total 16
-rw-rārā. 1 exasol exasol 569 Oct 22 17:50 id_rsa.pub
-rw-------. 1 exasol exasol 2602 Oct 22 17:50 id_rsa
-rw-rārā. 1 exasol exasol 272 Oct 22 17:54 known_hosts
-rw-rārā. 1 exasol exasol 569 Oct 31 13:12 authorized_keys
[exasol@eduvm-01 .ssh]$ ssh exasol@10.0.0.4
Register this system with Red Hat Insights: rhc connect
Example:
rhc connect --activation-key --organization
The rhc client and Red Hat Insights will enable analytics and additional
management capabilities on your system.
View your connected systems at https://console.redhat.com/insights
You can learn more about how to register your system
using rhc at https://red.ht/registration
Last login: Fri Oct 31 13:10:57 2025
[exasol@eduvm-01 ~]$ exit
Potentially missed a sudo on the ssh-copy-id , but we“re now able to move forward.
Now came the āPrepare storageā step, and our documentation states:
ā(ā¦)
How to add physical and logical devices on the hosts is not covered in this documentation. To know how to add and mount disks, refer to the documentation for your operating system.(ā¦)ā
Well, ok then - again, not a Linux-aficinado here so the following steps might lack a bit of elegance.
As it was recommended to use the logical volume manager ( lvm ) and check with lsblk -p,
here“s what we start out with in my setup:
[exasol@eduvm-01 ~]$ lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1 259:0 0 256G 0 disk
āā/dev/nvme0n1p1 259:1 0 500M 0 part /boot/efi
āā/dev/nvme0n1p2 259:2 0 1G 0 part /boot
āā/dev/nvme0n1p3 259:3 0 2M 0 part
āā/dev/nvme0n1p4 259:4 0 62.5G 0 part
āā/dev/mapper/rootvg-homelv 253:0 0 19.8G 0 lvm /home
āā/dev/mapper/rootvg-rootlv 253:1 0 2G 0 lvm /
āā/dev/mapper/rootvg-tmplv 253:2 0 2G 0 lvm /tmp
āā/dev/mapper/rootvg-usrlv 253:3 0 10G 0 lvm /usr
āā/dev/mapper/rootvg-varlv 253:4 0 10G 0 lvm /var
/dev/nvme0n2 259:5 0 4G 0 disk
[exasol@eduvm-01 ~]$
The 256G is the OS-disk from Azure, the 4G disk is what some day will become the data disk of this setup ( I do realize this is very much smaller and doesnĀ“t fit with recommendations along the line of āmultiple disksā and xyz-Throughput/IOPS - itĀ“s just a start, once IĀ“ve gotten the process right IĀ“ll do this with more Oomph
).
Now, with this we have one rootvg and not much else so I went with:
[exasol@eduvm-01 ~]$ sudo pvcreate /dev/nvme0n2
Physical volume ā/dev/nvme0n2ā successfully created.
Not creating system devices file due to existing VGs.
[exasol@eduvm-01 ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p4 rootvg lvm2 a-- 62.50g 18.75g
/dev/nvme0n2 lvm2 ā 4.00g 4.00g
[exasol@eduvm-01 ~]$ sudo vgcreate vg_exasol_data /dev/nvme0n2
Not creating system devices file due to existing VGs.
Volume group āvg_exasol_dataā successfully created
[exasol@eduvm-01 ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p4 rootvg lvm2 a-- 62.50g 18.75g
/dev/nvme0n2 vg_exasol_data lvm2 a-- <4.00g <4.00g
[exasol@eduvm-01 ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wzān- 62.50g 18.75g
vg_exasol_data 1 0 0 wzān- <4.00g <4.00g
[exasol@eduvm-01 ~]$ sudo lvcreate --name lv_exasol_data --size 3g vg_exasol_data
Logical volume ālv_exasol_dataā created.
[exasol@eduvm-01 ~]$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
homelv rootvg -wi-ao---- 19.75g
rootlv rootvg -wi-ao---- 2.00g
tmplv rootvg -wi-ao---- 2.00g
usrlv rootvg -wi-ao---- 10.00g
varlv rootvg -wi-ao---- 10.00g
lv_exasol_data vg_exasol_data -wi-a----- 3.00g
[exasol@eduvm-01 ~]$ lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1 259:0 0 256G 0 disk
āā/dev/nvme0n1p1 259:1 0 500M 0 part /boot/efi
āā/dev/nvme0n1p2 259:2 0 1G 0 part /boot
āā/dev/nvme0n1p3 259:3 0 2M 0 part
āā/dev/nvme0n1p4 259:4 0 62.5G 0 part
āā/dev/mapper/rootvg-homelv 253:0 0 19.8G 0 lvm /home
āā/dev/mapper/rootvg-rootlv 253:1 0 2G 0 lvm /
āā/dev/mapper/rootvg-tmplv 253:2 0 2G 0 lvm /tmp
āā/dev/mapper/rootvg-usrlv 253:3 0 10G 0 lvm /usr
āā/dev/mapper/rootvg-varlv 253:4 0 10G 0 lvm /var
/dev/nvme0n2 259:5 0 4G 0 disk
āā/dev/mapper/vg_exasol_data-lv_exasol_data 253:5 0 3G 0 lvm
For a rootless install the user needs to have device r/w privileges as documented in the ārootless install prerequisitesā part of the documentation, so I created the following:
[exasol@eduvm-01 ~]$ sudo vi /etc/udev/rules.d/90-exasol.rules
SUBSYSTEM==āblockā, ENV{DM_VG_NAME}==āvg_exasol_dataā, ENV{DM_LV_NAME}==ālv_exasol_dataā, OWNER=āexasolā, MODE=ā0660ā
[exasol@eduvm-01 ~]$ sudo udevadm control --reload-rules && udevadm trigger
0006:045E:0621.0001: Failed to write āchangeā to ā/sys/devices/0006:045E:0621.0001/ueventā: Permission denied
input1: Failed to write āchangeā to ā/sys/devices/0006:045E:0621.0001/input/input1/ueventā: Permission denied
event1: Failed to write āchangeā to ā/sys/devices/0006:045E:0621.0001/input/input1/event1/ueventā: Permission denied
js0: Failed to write āchangeā to ā/sys/devices/0006:045E:0621.0001/input/input1/js0/ueventā: Permission denied
mouse0: Failed to write āchangeā to ā/sys/devices/0006:045E:0621.0001/input/input1/mouse0/ueventā:
There came quite a few lines of errors regarding āPermission deniedā , so as I already used the magic word ( i.e. sudo ) I opted for a simple reboot in order to get the udev refreshed.
Now came the time to check if c4 thinks my config is āworthyā:
[exasol@eduvm-01 ~]$ ./c4 host diag -i myconfig
OK check_disks
OK check_external_dependencies
SKIPPED check_internal_rootless_dependencies: root-based deployment enabled
OK check_login_defs_umask
OK check_required_params
OK check_root_umask
OK check_selinux
OK check_sudo
OK check_time_sync
OK check_unprivileged_userns_clone
OK check_user_umask
[exasol@eduvm-01 ~]$ vi myconfig
[exasol@eduvm-01 ~]$ ./c4 host diag -i myconfig
OK check_disks
OK check_external_dependencies
OK check_internal_rootless_dependencies
OK check_login_defs_umask
OK check_required_params
SKIPPED check_root_umask: rootless deployment enabled
SKIPPED check_selinux: rootless deployment enabled
SKIPPED check_sudo: rootless deployment enabled
OK check_time_sync
OK check_unprivileged_userns_clone
OK check_user_umask
[exasol@eduvm-01 ~]$
That did seem promising , but remembering that exasol would like to have a bit of storage left at the location it“s installed ( which if I understand correctly by default would be /home/exasol ) I did enlarge the storage layout to get to:
[exasol@eduvm-01 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 17M 3.1G 1% /run
/dev/mapper/rootvg-rootlv 2.0G 72M 1.9G 4% /
/dev/mapper/rootvg-usrlv 10G 2.0G 8.1G 20% /usr
/dev/nvme0n1p2 960M 177M 784M 19% /boot
/dev/mapper/rootvg-tmplv 2.0G 47M 1.9G 3% /tmp
/dev/mapper/rootvg-varlv 10G 491M 9.5G 5% /var
/dev/nvme0n1p1 500M 7.1M 493M 2% /boot/efi
/dev/mapper/rootvg-homelv 30G 428M 29G 2% /home
tmpfs 1.6G 0 1.6G 0% /run/user/1000
[exasol@eduvm-01 ~]$
And now for the actual install ( I did scrap the public IP in the following log ) :
[exasol@eduvm-01 ~]$ ./c4 --ccc-play-rootless true host play -i myconfig
INFO[2025-10-31 14:15:54] Creating new host deploymentā¦
INFO[2025-10-31 14:15:54] Done reading configuration.
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Exasol installation procedure is about to be started.
During this procedure, Exasol software will be installed to remote hosts.
It will take some time (several minutes).
After the installation is finished, you can connect to the Database or COS.
During the installation, you can login to the hosts via SSH,
and watch the process using:
sudo journalctl -f
After the installation finished, you can connect to COS using:
ssh -p 20002 root@$IP
IP addresses used for the deployment:
* public-ip-redacted
Exasol version: 2025.1.0
Exasol package: @exasol-2025.1.0
SSH username : exasol
SSH keyfile : id_rsa
Data disk(s) : /dev/mapper/vg_exasol_data-lv_exasol_data
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INFO[2025-10-31 14:15:54] Cleaning upā¦
Failed to stop c4_cloud_command.service: Unit c4_cloud_command.service not loaded.
INFO[2025-10-31 14:15:55] Done cleaning up.
INFO[2025-10-31 14:15:55] Initial OS preparation
INFO[2025-10-31 14:15:55] Skipping sudoers preparation: rootless installation enabled
WARN[2025-10-31 14:15:55] CCC_HOST_IMAGE_PASSWORD will be ignored: rootless installation enabled
INFO[2025-10-31 14:15:55] Veryfing OS configurationā¦
INFO[2025-10-31 14:15:55] Skipping sudo check: rootless installation enabled
INFO[2025-10-31 14:15:55] OS on all hosts is configured properly
INFO[2025-10-31 14:15:55] Fetching Exasol packagesā¦
ā exasol-2025.1.0.tar.gz [==================] 100% 6.9 GiB 12 MiB/s
INFO[2025-10-31 14:28:28] Done fetching Exasol packages.
INFO[2025-10-31 14:28:28] Copying Exasol packages to remote hostsā¦
INFO[2025-10-31 14:28:29] Done copying Exasol packages to remote hosts.
INFO[2025-10-31 14:28:29] Extracting packagesā¦
INFO[2025-10-31 14:31:28] Done extracting packages.
INFO[2025-10-31 14:31:28] Syncing timeā¦
INFO[2025-10-31 14:31:28] Skipping time syncing (assuming time is already synced): rootless installation enabled
INFO[2025-10-31 14:31:28] Done syncing time.
INFO[2025-10-31 14:31:28] Installing the secret and SSH keysā¦
INFO[2025-10-31 14:31:29] Done installing the secret and SSH keys
INFO[2025-10-31 14:31:29] Running installationā¦
INFO[2025-10-31 14:31:29] Creating new host deploymentā¦
INFO[2025-10-31 14:31:29] Done
N PLAY_ID NODE MEDIUM INSTANCE DB_VERSION EXTERNAL_IP INTERNAL_IP STAGE STATE UPTIME TTL
1 ecdde6a6 11 host - - x.yyy.zzz.qq 10.0.0.4 a - 00:00:00 +ā
INFO[2025-10-31 14:31:29] Done running installation.
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The final steps of the Exasol installation procedure were successfully
started on remote hosts now.
It will take yet some time to complete (several minutes).
The installation is finished when every node reaches stage ādā (see āc4 psā).
After the installation is finished, you can connect to the Database or COS.
During the installation, you can login to the hosts via SSH,
and watch the process using:
sudo journalctl -f
After the installation finished, you can connect to COS using:
ssh -p 20002 root@$IP
IP addresses used for the deployment:
* public-ip-redacted
Exasol version: 2025.1.0
Exasol package: @exasol-2025.1.0
Happy Exasolling!
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Now one would expect a functional Exasol database, but it would seem I managed to introduce some misconfiguration yet, because:
[exasol@eduvm-01 ~]$ ./c4 ps
WARN[2025-10-31 14:37:26] in ps.NewLister: in aws.NewConfigFromConfig: credentials file does not exist: /home/exasol/.aws/credentials module=awscf
WARN[2025-10-31 14:37:26] in ps.NewLister: in aws.NewConfigFromConfig: credentials file does not exist: /home/exasol/.aws/credentials module=aws
N PLAY_ID NODE MEDIUM INSTANCE DB_VERSION EXTERNAL_IP INTERNAL_IP STAGE STATE UPTIME TTL
1 ecdde6a6 11 local - 2025.1.0 - 10.0.0.4 a1 - 00:41:07 +ā
[exasol@eduvm-01 ~]$ c4 connect -t 1/cos
ssh: connect to host public-ip-redacted port 20002: Connection timed out
So my ācluster of oneā does seem to be stuck in the a1 stage and a c4 connect to the COS doesnĀ“t work ( which might have something to do with my Azure setup ).
I was slightly surprised to see the public IP in the COS connect - need to wrap my head around this one, I guess IĀ“m confusing āpublic IPā in the Azure-sense with āpublic IPā in the Exasol sense ( the first leaning more into the āweb-exposedā side of things, while the second is more in the direction of āclient facingā , which in this setup isnĀ“t really interchangeable ).
So there you have it, we“ve got a running cluster that for now does not want to talk to us - I think we“re getting close 
Will update this as soon as I get a chance - all feedback, comments and critique welcome !
Cherrs,
-M.