The cursor sizes were not a big deal, since NsCDE has a nice font selector, other things became a bit more difficult like firefox (about:config, layout.css.devPixelsPerPx=1.4).
For LibreOffice I needed to set SAL_FORCEDPI=200 in the environment, for generic QT applications I had to set QT_SCALE_FACTOR=2.
For GTK applications, I changed ~/.gtkrc-2.0 and ~/.config/gtk-3.0/settings.init to include especially
[Settings] gtk-cursor-theme-size = 20 gtk-double-click-time = 750For the mouse cursors it was pretty complicated. NsCDE ships some custom cursors in /usr/local/share/NsCDE/icons/cursors which I have resized with ImageMagick.
The basic cursor instead got changed with some other ways. In $HOME/.fonts/ I have created a file called fonts.alias, the file contains:
cursor -xfree86-cursor-medium-r-normal--0-180-218-218-p-0-adobe-fontspecificQuery with xset q and look at the Font Path. In my case $HOME/.fonts was not in it, so I would add it with xset +fp ~/.fonts .Initially you want to rehash your font cache:
fc-cache -r && xset fp rehashFor testing you could now set your new cursor:
xsetroot -cursor_name left_ptr
However you need to persist this in ~/.NsCDE/Xset.conf, append the following two lines to it:
xset +fp ~/.fonts xsetroot -cursor_name left_ptrLog out and log in again and enjoy big cursors.
I got myself a ThinkPad T470 and unfortunately the WiFi chip is not supported by illumos. Since my kernel driver porting skills are not so good ;) I decided to do a different thing.
I'm going to run a bhyve VM, pass through the WiFi card to it, and run OpenWRT inside the VM.
Download OpenWRT#
Go to https://downloads.openwrt.org/releases/ pick a version and download the openwrt*x86-64-generic-ext4-combined-efi.img image, I used https://downloads.openwrt.org/releases/22.03.3/targets/x86/64/openwrt-22.03.3-x86-64-generic-ext4-combined-efi.img.gz.Setup the bhyve zone#
# zonecfg -z router create -b set zonepath=/export/zones/router set brand=bhyve set autoboot=true set ip-type=exclusive add net set physical="routerint0" end add device set match="/dev/zvol/rdsk/rpool/export/bhyve/routerd0" end add device set match="/dev/ppt0" end add attr set name="bootrom" set type="string" set value="BHYVE_RELEASE" end add attr set name="bootdisk" set type="string" set value="rpool/export/bhyve/routerd0" end add attr set name="vcpus" set type="string" set value="1" end add attr set name="ram" set type="string" set value="1G" end add attr set name="vnc" set type="string" set value="on" end add attr set name="extra" set type="string" set value="-S -s 8:0,passthru,/dev/ppt0" end
Now we need to create the VNIC, the disk and the passthru device.
The Disk ist easy:
# zfs create -V 1G -o compression=lz4 rpool/export/bhyve/routerd0 # dd if=openwrt-22.03.3-x86-64-generic-ext4-combined-efi.img of=/dev/zvol/rdsk/rpool/export/bhyve/routerd0 bs=1024k
Now, let's set up the networking. We are going to create an Etherstub with two interfaces, one for the laptops global zone and one for the router vm.
First ensure that nwam (NetWork AutoMagic) is turned off:
# svcadm enable svc:/network/physical:default # svcadm disable svc:/network/physical:nwam
Now we will create the Etherstub (SDN switch) and the virtual NICs:
# dladm create-etherstub dmz0 # dladm create-vnic -l dmz0 routerint0 # dladm create-vnic -l dmz0 dmzint0
We need to create an IP interface, configure a static IP on that interface and set the new default route persistent ("route -p") to the later configured OpenWRT:
# ipadm create-if dmzint0 # ipadm create-addr -T static -a local=172.24.0.1/24 dmzint0/v4 # route -p add default 172.24.0.250
Boot OpenWRT the first time#
Open two different xterms. In the first we install the zone and then open the zones console:# zoneadm -z router install # zlogin -C router
In the other xterm we boot up the zone:
# zoneadm -z router boot
After ca. 60 seconds or even less, OpenWRT should be booted completely and if you hit "return" in the zones console, you should get the OpenWRT root shell:
root@OpenWrt:~#
At this prompt, we need to configure the Ethernet first. VNICs on illumos have a MTU of 9000 by default, so we should configure the same MTU for the eth0 in the OpenWRT config also. At the same time we change the LAN IP to the one we chose before. For that we open with vi the /etc/config/network file on the OpenWRT and change the relevant parts:
config device option name 'br-lan' option type 'bridge' list ports 'eth0' option mtu '9000' option mtu6 '9000' config interface 'lan' option device 'br-lan' option proto 'static' option netmask '255.255.255.0' option ip6assign '60' option ipaddr '172.24.0.250' config device option name 'eth0' option mtu '9000' option mtu6 '9000'
after that reboot the OpenWRT instance:
root@OpenWrt:~# reboot
After that step, you need to configure the wifi card correctly, for that you need to install the correct packages to OpenWRT with okpg, please consult the OpenWRT documentation.
After setting up this stuff, I realised that DrScream also already did something very similar here: https://www.cyber-tec.org/2019/05/29/using-bhyve-pci-passthrough-on-omnios/
Overview#
The scenario is as following, we have two physical machines:- sin (runs various stuff like NFS)
- spin (only runs bhyve VMs for OCP)
Both run OpenIndiana. On "sin" we run multiple zones for LDAP, DNS, DHCP, etc...I'm not going into full detail here.
The host "spin" is actually empty. It's an old Sun X4270 M2 machine with 2 Sockets, 6 Cores X5675 @ 3.07GHz and 144GB RAM. The chassis has twelve disks and I also added two (consumer) NVMe's on PCIe adapters.
Two disks form a ZFS boot mirror (rpool), the other disks form a raidz stripe (localstripe) which has 2 hotspares, one slog device (NVMe) and one l2arc (also NVMe):
root@spin:~# zpool status pool: localstripe state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM localstripe ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c8t2d0 ONLINE 0 0 0 c8t3d0 ONLINE 0 0 0 c8t4d0 ONLINE 0 0 0 c8t5d0 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 c8t6d0 ONLINE 0 0 0 c8t7d0 ONLINE 0 0 0 c8t8d0 ONLINE 0 0 0 c8t9d0 ONLINE 0 0 0 logs c5t0026B7682D581035d0 ONLINE 0 0 0 cache c6t0026B7682D1B8DA5d0 ONLINE 0 0 0 spares c8t10d0 AVAIL c8t11d0 AVAIL errors: No known data errors pool: rpool state: ONLINE scan: resilvered 19.2G in 0 days 00:03:25 with 0 errors on Mon Feb 14 21:29:12 2022 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c8t0d0 ONLINE 0 0 0 c8t1d0 ONLINE 0 0 0 errors: No known data errorsThe disks are standard 600GB SAS II drives.
The machine has a 10G ixgbe NIC, where I configured the VNICs on.
root@spin:~# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VID spinpub0 ixgbe0 10000 2:8:20:d2:1f:63 random 100 bootstrapint0 ixgbe0 10000 2:8:20:3b:26:2 random 100 master02int0 ixgbe0 10000 2:8:20:22:c1:10 random 100 master00int0 ixgbe0 10000 2:8:20:61:3b:13 random 100 master01int0 ixgbe0 10000 2:8:20:28:b3:a8 random 100 worker02int0 ixgbe0 10000 2:8:20:7c:12:3a random 100 worker03int0 ixgbe0 10000 2:8:20:62:e:e0 random 100 worker00int0 ixgbe0 10000 2:8:20:ad:2b:6c random 100 bastionint0 ixgbe0 10000 2:8:20:f9:2e:58 random 100 worker01int0 ixgbe0 10000 2:8:20:12:51:4d random 100
Setup Zones#
General#
I took an ansible playbook to create the bhyve zones, but to have it more generic I'll show you the zone config here. All zones have the same config, except for bastion, this has less RAM and CPU.For OpenShift we need to have:
- 1 bastion node (if you don't have any other linux machine)
- 1 bootstrap node
- 1 LoadBalancer zone
- 3 master servers
- 2 workers
Bastion#
The bastion will be used to run the OpenShift installer, which is only available for Linux/x64 and MacOS X/x64.The zone config for the bastion looks like this:
root@spin:~# zonecfg -z bastion export create -b set zonepath=/localstripe/zones/bastion set brand=bhyve set autoboot=true set ip-type=exclusive add fs set dir="/localstripe/install/rhel-8.4-x86_64-dvd.iso" set special="/localstripe/install/rhel-8.4-x86_64-dvd.iso" set type="lofs" add options ro add options nodevices end add net set physical="bastionint0" end add device set match="/dev/zvol/rdsk/localstripe/vm/bastiond0" end add attr set name="bootdisk" set type="string" set value="localstripe/vm/bastiond0" end add attr set name="vnc" set type="string" set value="on" end add attr set name="vcpus" set type="string" set value="2" end add attr set name="ram" set type="string" set value="6G" end add attr set name="cdrom" set type="string" set value="/localstripe/install/rhel-8.4-x86_64-dvd.iso" end
I took a RedHat Enterprise Linux 8.4 DVD, but CentOS or Fedora would do the job also. This zone gets access to a ZVOL:
root@spin:~# zfs get volsize localstripe/vm/bastiond0 NAME PROPERTY VALUE SOURCE localstripe/vm/bastiond0 volsize 20G local
No other special attributes are set on this, so that's it. Start booting the zone, attach socat to the vnc socket and install Linux the usual way:
root@spin:~# socat TCP-LISTEN:5905,reuseaddr,fork UNIX-CONNECT:/localstripe/zones/bastion/root/tmp/vm.vnc (1227) x230:/export/home/olbohlen$ vncviewer spin::5905
LoadBalancer#
OpenShift runs on different nodes (bhyve VMs) and we need an external LoadBalancer to access the Kubernetes API and the OpenShift Router. In production environment you would want to make that LoadBalancer HA with VRRP, but in this scenario we go the simple way.First set up a standard ipkg OI zone (I did that on the other Hardware, "sin"):
root@sin:~# zonecfg -z api export create -b set zonepath=/localstripe/zones/api set brand=ipkg set autoboot=true set ip-type=exclusive add net set physical="api0" end root@sin:~# zoneadm -z api install [...]We don't need anything fancy.
Once the api zone is installed, we install the OpenIndiana integrated LoadBalancer (ilb) and start it:
root@api:~# pkg install service/network/load-balancer/ilb [...] root@api:~# svcadm enable ilb
The configuration I use looks like the following:
root@api:~# ilbadm export-cf create-servergroup masters add-server -s server=172.18.3.10 masters add-server -s server=172.18.3.20 masters add-server -s server=172.18.3.30 masters create-servergroup workers add-server -s server=172.18.3.50 workers add-server -s server=172.18.3.60 workers create-healthcheck -n -h hc-test=tcp,hc-timeout=3,hc-count=3,hc-interval=60 hc-masters create-healthcheck -n -h hc-test=tcp,hc-timeout=3,hc-count=3,hc-interval=60 hc-workers create-rule -e -p -i vip=172.18.3.100,port=6443,protocol=tcp -m lbalg=roundrobin,type=NAT,proxy-src=172.18.3.100-172.18.3.100,pmask=/32 -h hc-name=hc-masters,hc-port=6443 -t conn-drain=70,nat-timeout=70,persist-timeout=70 -o servergroup=masters mastersrule create-rule -e -p -i vip=172.18.3.100,port=22623,protocol=tcp -m lbalg=roundrobin,type=NAT,proxy-src=172.18.3.100-172.18.3.100,pmask=/32 -h hc-name=hc-masters,hc-port=22623 -t conn-drain=70,nat-timeout=70,persist-timeout=70 -o servergroup=masters mcsrule create-rule -e -p -i vip=172.18.3.100,port=80,protocol=tcp -m lbalg=roundrobin,type=NAT,proxy-src=172.18.3.100-172.18.3.100,pmask=/32 -h hc-name=hc-workers,hc-port=80 -t conn-drain=70,nat-timeout=70,persist-timeout=70 -o servergroup=workers httprule create-rule -e -p -i vip=172.18.3.100,port=443,protocol=tcp -m lbalg=roundrobin,type=NAT,proxy-src=172.18.3.100-172.18.3.100,pmask=/32 -h hc-name=hc-workers,hc-port=443 -t conn-drain=70,nat-timeout=70,persist-timeout=70 -o servergroup=workers httpsrule
Save this output to a file and import it with "ilbadm import-cf -p filename". I use full NAT here for Load-Balancing as the API loadbalancer and the node are in the same IP range.
bootstrap, master and worker zones#
These zones look identical, just replace the host name:root@spin:~# zonecfg -z master00 export create -b set zonepath=/localstripe/zones/master00 set brand=bhyve set autoboot=true set ip-type=exclusive add net set physical="master00int0" end add device set match="/dev/zvol/rdsk/localstripe/vm/master00d0" end add attr set name="bootdisk" set type="string" set value="localstripe/vm/master00d0" end add attr set name="vnc" set type="string" set value="on" end add attr set name="ram" set type="string" set value="16G" end add attr set name="vcpus" set type="string" set value="4" endThey all have access to their own ZVOL:
root@spin:~# zfs get volsize localstripe/vm/master00d0 NAME PROPERTY VALUE SOURCE localstripe/vm/master00d0 volsize 250G local
Thankfully bhyve will try PXE if the bootdisk ZVOL is empty, so we don't have to setup additional things here.
Install all the zones with "zoneadm -z zonename install", which should be pretty fast for bhyve zones. Just don't boot them up yet.
We will follow the OpenShift installation instruction for UPI installations, see the appropriate docs for your OpenShift Version on https://docs.openshift.com.
Installing OpenShift#
Download required material#
You need to login to https://cloud.redhat.com, select "OpenShift" and "Create Cluster". There scroll down to "Platform agnostic". This will take you to a page where you have to download:- The Openshift installer (openshift-install)
- The OpenShift client (oc)
- The pull secret (access tokens for Red Hat registries)
Save these files on the bastion node which we created earlier.
Setup up install-config.yaml#
Create a empty directory as a non-root user somewhere, inside this directory create a file called "install-config.yaml":[localadm@bastion ~]$ cat install-config.yaml apiVersion: v1 baseDomain: home.eenfach.de compute: - hyperthreading: Enabled name: worker replicas: 2 controlPlane: hyperthreading: Enabled name: master replicas: 3 metadata: name: ocp4 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 networkType: OpenShiftSDN serviceNetwork: - 172.30.0.0/16 platform: none: {} fips: false pullSecret: | {paste pull secret in here} sshKey: | {paste a ssh public key in here}
Copy this file into a backup location somewhere, as the openshift-install command will consume the file and delete it. If you need to restart, you can use the backup.
Create Ignition Files#
After creating the install-config.yaml we can process this and create ignition files for Red Hat CoreOS. We first create manifests (which you could review or customize, but we don't) and then we create ignitions:
[localadm@bastion ocp4]$ ls install-config.yaml [localadm@bastion ocp4]$ openshift-install create manifests [...] [localadm@bastion ocp4]$ openshift-install create ignition-configs [...] [localadm@bastion ocp4]$ ls auth metadata.json worker.ign bootstrap.ign master.ign
The ignition files (*.ign) need to be pushed to a web-server that is accessible for the OpenShift nodes.
Set up PXE boot#
The relevant part of my dhcpd4.conf looks like this:subnet 172.18.0.0 netmask 255.255.252.0 { range 172.18.3.101 172.18.3.101; option routers 172.18.0.200; option domain-name "srv.home.eenfach.de"; option domain-search "srv.home.eenfach.de","home.eenfach.de","eenfach.de"; option domain-name-servers 172.18.1.53; option subnet-mask 255.255.224.0; option ntp-servers 192.53.103.108,192.53.103.104,192.53.103.103; group { filename "shimx64.efi"; next-server 172.18.1.67; host master00.ocp4.home.eenfach.de { hardware ethernet 2:8:20:61:3b:13; fixed-address 172.18.3.10; option host-name "master00"; [...] } } }Of course you want to put all masters, workers and the bootstrap in there also.
Then you need to get the shimx64.efi and grubx64.efi from the RHEL shim-x64.x86_64 rpm. I just installed it on the bastion and copied it to the /tftpboot on my DHCP Server.
The reason is that bhyve boots UEFI only and the classic pxelinux from RHEL only supports BIOS boots, so we use the grub shim boot.
Create grub configs for every MAC.
An example for a Master:
root@skirnir:/tftpboot# cat grub.cfg-01-02-08-20-22-c1-10 menuentry 'Master: Install Red Hat Enterprise Linux CoreOS' --class fedora --class gnu-linux --class gnu --class os { linuxefi rhcos-4.6.1-x86_64-live-kernel-x86_64 coreos.inst.install_dev=/dev/vda coreos.live.rootfs_url=http://172.18.1.80/install/ocp4/rhcos-4.6.1-x86_64-live-rootfs.x86_64.img coreos.inst.ignition_url=http://172.18.1.80/install/ocp4/ignitions/master.ign console=tty0 console=ttyS0 initrdefi rhcos-4.6.1-x86_64-live-initramfs.x86_64.img }
An example for a worker:
root@skirnir:/tftpboot# cat grub.cfg-01-02-08-20-12-51-4d menuentry 'Worker: Install Red Hat Enterprise Linux CoreOS' --class fedora --class gnu-linux --class gnu --class os { linuxefi rhcos-4.6.1-x86_64-live-kernel-x86_64 coreos.inst.install_dev=/dev/vda coreos.live.rootfs_url=http://172.18.1.80/install/ocp4/rhcos-4.6.1-x86_64-live-rootfs.x86_64.img coreos.inst.ignition_url=http://172.18.1.80/install/ocp4/ignitions/worker.ign console=tty0 console=ttyS0 initrdefi rhcos-4.6.1-x86_64-live-initramfs.x86_64.img }
And an example for the bootstrap node:
root@skirnir:/tftpboot# cat grub.cfg-01-02-08-20-3b-26-02 menuentry 'Bootstrap: Install Red Hat Enterprise Linux CoreOS' --class fedora --class gnu-linux --class gnu --class os { linuxefi rhcos-4.6.1-x86_64-live-kernel-x86_64 coreos.inst.install_dev=/dev/vda coreos.live.rootfs_url=http://172.18.1.80/install/ocp4/rhcos-4.6.1-x86_64-live-rootfs.x86_64.img coreos.inst.ignition_url=http://172.18.1.80/install/ocp4/ignitions/bootstrap.ign console=tty0 console=ttyS0 initrdefi rhcos-4.6.1-x86_64-live-initramfs.x86_64.img }
Ensure that you have rhcos-4.6.1-x86_64-live-initramfs.x86_64.img and rhcos-4.6.1-x86_64-live-kernel-x86_64 in the /tftpboot as well, and that rhcos-4.6.1-x86_64-live-rootfs.x86_64.img is accessible from the specified web url (try with curl for example).
Setting up DNS#
My DNS zone looks like this:
root@voluspa:/var/named# cat ocp4.home.eenfach.de $TTL 3600 @ IN SOA ocp4.home.eenfach.de. hostmaster.eenfach.de. ( 2022021500 ; Serial 3600 ; Refresh 300 ; Retry 3600000 ; Expire 3600 ) ; Minimum IN NS voluspa.srv.home.eenfach.de. bastion IN A 172.18.3.1 bootstrap IN A 172.18.3.5 master00 IN A 172.18.3.10 etcd00 IN A 172.18.3.10 _etcd-server-ssl._tcp.ocp4 IN SRV 0 10 2380 etcd00 master01 IN A 172.18.3.20 etcd01 IN A 172.18.3.20 _etcd-server-ssl._tcp.ocp4 IN SRV 0 10 2380 etcd01 master02 IN A 172.18.3.30 etcd02 IN A 172.18.3.30 _etcd-server-ssl._tcp.ocp4 IN SRV 0 10 2380 etcd02 worker00 IN A 172.18.3.50 worker01 IN A 172.18.3.60 *.apps IN A 172.18.3.100 api IN A 172.18.3.100 api-int IN A 172.18.3.100 dns IN CNAME voluspa.srv.home.eenfach.de.
Ensure that you set up matching PTR records also.
That should be it, we could kick off the installations.
Starting the RHCOS installation#
Boot your bootstrap zone, zlogin -C bootstrap and watch the console. When the grub menu appears, hit return (or put timeout values in the grub.cfg files) and let the boot proceed. The bootstrap will reboot after a while and finally it will show a login prompt.
Now also boot your master zones, also observe the console and wait until they show the login prompt, after that do the same with the workers.
Observing the installation#
On the bastion node, observe the installation with
openshift-install wait-for bootstrap-complete
At some point it should say that it is now safe to remove the bootstrap node. Log in to the loadbalancer zone and remove the bootstrap from the masters servergroup. Then shut down the bootstrap.
Again on the bastion run
openshift-install wait-for install-complete --log-level=debug
Open another shell to the bastion and watch the cluster:
export KUBECONFIG=$HOME/ocp4/auth/kubeconfig oc get nodes; oc get csr
You should see the nodes getting read. If CSRs are in a pending state, approve them with "oc adm certificate approve". Depending on your hardware and network this takes some time, but finally your cluster should be ready.
First you need a running OpenIndiana installation on an amd64 system that supports bhyve. You can check bhyve compability with https://downloads.omnios.org/misc/bhyve/bhhwcompat.
(709) x230:/root# ./bhhwcompat CPU vendor string: GenuineIntel ... CPU supports VMX ... VMX support is enabled in BIOS ... VMX supports TSC Offsetting ... VMX supports VM Exit on MWAIT ... VMX supports VM Exit on MONITOR ... VMX supports VM Exit on CR8 Load ... VMX supports VM Exit on CR8 Store ... VMX supports Unconditional I/O exiting ... VMX supports MSR bitmap ... VMX supports Interrupt-window exiting ... VMX supports NMI-window exiting ... VMX supports Secondary VMX controls ... VMX supports EPT ... VMX supports VPID ... VMX supports Unrestricted Guest ... VMX supports single INVEPT ... VMX supports all INVEPT bhyve is supported on this system.
If bhyve is supported, install a few packages:
# pkg install system/bhyve system/bhyve/firmware \ > system/library/bhyve system/zones/brand/bhyve
Now you need a Linux ISO image. I chose RHEL 8.5 in my case, but you can pick any other. Just one word of attention here: some Linux distros have issues with the EFI firmware of bhyve, RHEL 8.2 refused to boot. The issue was fixed in 8.5 at least.
Set up a vnic for networking:
# dladm create-vnic -l e1000g0 bhyvevm0
Set up a ZFS volume for the VM image:
# zfs create -V 20G -o compression=lz4 rpool/bhyvevol0
Now we set up a zone:
# zonecfg -z bhyvevm <<EOF create -b set zonepath=/export/zones/bhyvevm set brand=bhyve set autoboot=false set ip-type=exclusive add net set physical="bhyvevm0" end add fs set dir=/rpool/iso/rhel-8.5-x86_64-boot.iso set special=/rpool/iso/rhel-8.5-x86_64-boot.iso set type=lofs add options ro add options nodevices end add attr set name=cdrom set type=string set value=/rpool/iso/rhel-8.5-x86_64-boot.iso end add device set match="/dev/zvol/rdsk/rpool/bhyvevm0" end add attr set name="bootdisk" set type="string" set value="rpool/bhyvevm0" end add attr set name="vnc" set type="string" set value="on" end add attr set name="acpi" set type="string" set value="off" end add attr set name="bootrom" set type="string" set value="BHYVE_RELEASE" end EOF # zoneadm -z bhyvevm install # zoneadm -z bhyvevm boot # socat TCP-LISTEN:5905,reuseaddr,fork UNIX-CONNECT:/export/zones/bhyvevm/root/tmp/vm.vnc
Now on another Terminal open vncviewer:
$ vncviewer ::5905
Follow the installation instructions of your Linux distro. After that, install podman on your Linux VM and then you can run containers in bhyve in a container ;)
Sehr geehrter Herr Bohlen, ich bin spezialisiert auf Festanstellungen und Direktvermittlung im kaufmännischen Bereich und habe Ihr Profil bei Github gesehen. Aktuell suche ich im Auftrag eines Kunden nach einem ERP-Consultant mit SQL und VBA-Kenntnissen. Gerne möchte ich mich mit Ihnen austauschen was ein neuer Job mitbringen muss, damit er für Sie interessant ist. Wann hätten Sie dafür Zeit? Ich freue mich auf Ihre Rückmeldung, gerne auch telefonisch. Mit freundlichen Grüßen / Best regards
Das klang alles so voellig falsch das ich mich genoetigt sah doch zu antworten:
Sehr geehrte Frau ... Ich habe ihr Profil in einer eMail entdeckt und gesehen das sie aus Muenchen sind. Aktuell bin ich auf der Suche nach einem Dipl. Bierbrauer und moechte mich gerne mit Ihnen ueber diese Stelle austauschen... Entschuldigen sie, aber haben sie wirklich einen Blick *in* mein GitHub Profil geworfen oder nur festgestellt das ich eines habe und im Besitz einer gueltigen e-Mail Adresse bin? Wie kommen sie aufgrund meines Profils auf die Einschaetzung das ich SQL und VBA Kenntnisse habe? Keines meiner Repositories auf GitHub nutzt VBA. Ebenso bin ich auch kein ERP Consultant. Sie haben offensichtlich keinerlei Ahnung was sie da recruiten wollen, also ersparen sie den armen Mitmenschen ihre Versuche oder fangen sie bitte, bitte an sich mehr Muehe zu geben. Kleiner Tipp: eine andere Formulierung kann schon Wunder wirken: --- Hallo Herr Bohlen, ich habe ueber eine Suche ihr Profil auf GitHub entdeckt. Ich bin mir nicht sicher ob Sie in mein Suchprofil passen, denn ich sehe dort das sie ein "Solaris Admin" sind und "SPARC user". Ich bin aktuell auf der Suche nach einem ERP Consultant mit SQL und VBA Kenntnissen. Ist das Teil ihres Wissens bzw, sind Sie interessiert daran in dem Umfeld zu arbeiten? MfG... --- Das war jetzt mal kostenloses HR Consulting. Die naechste e-Mail kostet dann aber mindestens eine Tuete Gummibaerchen... Mit freundlichen - aber leider an ihrer Vakanz uninteressierten - Gruessen
Das war - glaube ich - wenig missverstaendlich und auch grade noch so hoeflich genug. In der Regel gibt es dazu keine Antwort mehr, aber in diesem Falle kam folgendes:
Sehr geehrter Herr Bohlen, auf github sind leider nur eingeschränkt Informationen zu entnehmen, wie beispielsweise, dass Sie als Training Consultant tätig sind oder auch mal als Systemadministrator tätig waren. Das sind sehr vage Informationen, die ich durch ein Gespräch mit Ihnen gerne vervollständigt hätte. Die Stelle des ERP-Consultant ist nur ein Beispiel gewesen bzw. ein Vorschlag, über den wir im weiteren Verlauf genauer hätten sprechen können. Deshalb ja auch meine Frage, was ein Job denn mitbringen muss um für Sie interessant zu sein, da ich eben genau nicht wissen kann, welche Kenntnisse und Jobpräferenzen Sie mitbringen. Es tut mir sehr leid, wenn ich mich unverständlich ausgedrückt habe. Gerne können wir uns bei Interesse Ihrerseits über Ihren Werdegang und unsere Möglichkeiten, Sie aktiv bei der Suche nach einer neuen Herausforderung zu unterstützen, unterhalten. Mit freundlichen Grüßen
Nur eingeschraenkte Informationen? Auf github steht das ich Training Consultant bin? Das ist mir neu...
Sehr geehrte Frau ..., Entschuldigen Sie bitte, aber verwechseln Sie grade github.com mit LinkedIn? Auf github.com steht deutlich lesbar unter meinem Bild: Olaf Bohlen olbohlen Solaris Admin, SPARC user, OpenIndiana contributor, Hobby sailor, Dad & Husband Wenn Sie ein wenig Ahnung haetten was die Begriffe bedeuten, so haetten Sie auf keinen Fall geglaubt das ich VBA Erfahrung habe. Ausserdem koennen sie auf GitHub sehr schnell in meinen Repositories sehen das ich kein einziges mit VB/VBA code habe. Nehmen wir also mal an sie sind versehentlich bei LinkedIn gelandet und glauben es ist GitHub (und mit Verlaub, das ist wirklich etwas ganz anderes...). Selbst ohne Login(!) auf LinkedIn koennen sie eben nicht nur "vage" Informationen bekommen, sondern deutliche. Und das unterscheidet gute von schlechten Recruitern: gute wissen was sie suchen und was die Kandidaten koennen. Gehen wir doch mal eben mein oeffentliches LinkedIn Profil durch: Olaf Bohlen Training Consultant bei NIIT Limited Bremen Area, Germany Education Management Current NIIT Limited, illumos Previous BTC IT Services GmbH, BTC - Business Technology Consulting AG, noris network AG Education Staatl. Berufsschule III Fürth Aha, der Olaf Bohlen ist also Training Consultant. Er scheint also aktuell in der Erwachsenenbildung aktiv zu sein. Ausserdem ist er bei "illumos" taetig - einen Googlehupf weiter erkennt man, das es sich hierbei um ein nicht Windows-Betriebssystem handelt. (Und ihre Anfrage ist absolut Windows-lastig...) Gibt es noch mehr Indikatoren das Olaf Bohlen nicht in ihr Profil passt? Schauen wir mal etwas weiter unten auf der Seite: Summary - UNIX of different kinds, especially illumos and Linux but also Solaris, AIX, IRIX, BSD - Java EE Application servers like JBoss EAP, WebLogic, IBM WebSphere - Databases: Oracle, DB/2, PostgreSQL, mySQL - Hardware: Sun SPARC, IBM RS/6000 (pSeries), SGI MIPS, x86 - Network Equipment: Cisco Switches (Catalyst), Cisco Routers, Foundry Networks Switches and Loadbalancers (Server- and BigIron), Bintec Routers, Ascend Router s (Pipeline and MAX) Specialties: illumos, SPARC Hardware Huch, das klingt nicht nach ERP, sondern ziemlich nach IT Infrastruktur (Hardware, Betriebssysteme, Application Server). Und auch hier taucht nirgendwo VBA oder Windows auf. Hiernach folgt eine Liste mit Stichpunkten meiner Taetigkeiten in Vergangenheit. Alles Unix Jobs... Bei der Liste meiner Zertifikate...vorallem RedHat Zertifikate...auch Linux/Unix/Infrastruktur. > Die Stelle des ERP-Consultant ist nur ein Beispiel > gewesen bzw. ein Vorschlag, über den wir im weiteren Verlauf > genauer hätten > sprechen können. Deshalb ja auch meine Frage, was ein Job denn > mitbringen muss um für Sie interessant zu sein, da ich eben > genau nicht > wissen kann, welche Kenntnisse und Jobpräferenzen Sie > mitbringen. Es tut mir sehr leid, wenn ich mich unverständlich > ausgedrückt habe. Ach wissen sie...ich bin ja nicht ganz bloed und habe eine Vermutung, das sie einfach ein Filter-Tool nutzen mit den Suchworten "Consultant, SQL" und da haben sie mich gefunden. Und das zeigt verschiedene Dinge: - Sie wissen leider ueberhaupt nicht was Sie da genau suchen - Sie koennen die Ihnen zur Verfuegung stehenden Daten nicht interpretieren - eine schnelle Akquise ist Ihnen wichtiger, als sich mit dem Thema zu beschaeftigen und einen passenden Kandidaten zu finden - Sie haben sich nicht "unverstaendlich" ausgedrueckt, sondern einfach kein Interesse an mir oder Ihrem Kunden gezeigt, sonst waere ich bei Ihnen schon aus der Kandidatenliste geflogen. Sehen Sie, ich bin nicht sauer und ich will Ihnen nichts boeses. Aber ich bekomme Anfragen wie Ihre dreimal die Woche - und alle sind absolut unqualifiziert. Ueberraschen Sie mich (und andere!) beim naechsten Mal und bereiten Sie sich vor. Immerhin erwarten Sie das ja auch von uns Kandidaten, oder? Mit freundlichen Gruessen
Und siehe da, die gute Frau scheint mich endlich verstanden zu haben - aber vermutlich leider(!) Ihr Verhalten nicht aendern:
Guten Tag Herr Bohlen, vielen Dank für Ihre Antwort. Ich wünsche Ihnen weiterhin alles Gute. Freundliche GrüßeEs ist ein elendes Drama - so wird niemals gutes Personal vermittelt. Hoechstens durch absoluten Zufall.
Liebe Personalvermittler: das koennt ihr besser.
Ich weiss es. Beweist es uns.
Danke.
Another attempt to continue blogging, language will be mixed english and german, also mixed IT related and others...