rufio
rufio copied to clipboard
Rufio Machine port is ignored
Expected Behaviour
Expected that Rufio used the port defined in the Machine manifest.
Current Behaviour
The port is ignored, and the default IPMI and Redfish ports are unexpectedly tried.
Possible Solution
Fix the problem in the source code, I guess.
Steps to Reproduce (for bugs)
- apiVersion: bmc.tinkerbell.org/v1alpha1
kind: Machine
spec:
connection:
authSecretRef:
name: t1-bmc
namespace: tink-system
host: 10.11.0.1
insecureTLS: true
port: 8070
Context
Rufio logs:
{"level":"info","ts":1683560746.0520737,"logger":"controller.Job","msg":"Reconciling Job","Job":"tink-system/t1"}
{"level":"error","ts":1683560798.2673254,"logger":"controller.Machine","msg":"BMC connection failed","Machine":"tink-system/t1","host":"10.11.0.1","error":"failed to open connection to BMC: 5 errors occurred:\n\
t* provider: gofish: Get \"https://10.11.0.1/redfish/v1/\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider: ipmitool: Error: Unable to establish IPMI v2 / RMCP+ session: exit status 1\n\t* pro
vider: *asrockrack.ASRockRack: Error logging in: Post \"https://10.11.0.1/api/session\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider: idrac9: Post \"https://10.11.0.1/sysmgmt/2015/bmc/sessi
on\": net/http: invalid header field value \"\\\"admin\\n\\\"\" for key User\n\t* no Opener implementations found\n\n","stacktrace":"github.com/tinkerbell/rufio/controllers.(*MachineReconciler).Reconcile\n\t/wor
kspace/controllers/machine_controller.go:96\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controlle
r.go:114\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:311\nsigs.k8s.io/contro
ller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal
/controller.(*Controller).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:227"}
{"level":"error","ts":1683560798.2675514,"logger":"controller.task","msg":"BMC connection failed","reconciler group":"bmc.tinkerbell.org","reconciler kind":"Task","name":"t1-task-0","namespace":"tink-system","ho
st":"10.11.0.1","error":"failed to open connection to BMC: 5 errors occurred:\n\t* provider: gofish: Get \"https://10.11.0.1/redfish/v1/\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider: ipmi
tool: Error: Unable to establish IPMI v2 / RMCP+ session: exit status 1\n\t* provider: *asrockrack.ASRockRack: Error logging in: Post \"https://10.11.0.1/api/session\": dial tcp 10.11.0.1:443: connect: connectio
n refused\n\t* provider: idrac9: Post \"https://10.11.0.1/sysmgmt/2015/bmc/session\": net/http: invalid header field value \"\\\"admin\\n\\\"\" for key User\n\t* no Opener implementations found\n\n","stacktrace"
:"github.com/tinkerbell/rufio/controllers.(*TaskReconciler).Reconcile\n\t/workspace/controllers/task_controller.go:86\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/go/pkg/mo
d/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:114\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-run
[email protected]/pkg/internal/controller/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal
/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:227"}
{"level":"error","ts":1683560798.2914627,"logger":"controller.machine","msg":"Reconciler error","reconciler group":"bmc.tinkerbell.org","reconciler kind":"Machine","name":"t1","namespace":"tink-system","error":"
failed to open connection to BMC: 5 errors occurred:\n\t* provider: gofish: Get \"https://10.11.0.1/redfish/v1/\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider: ipmitool: Error: Unable to es
tablish IPMI v2 / RMCP+ session: exit status 1\n\t* provider: *asrockrack.ASRockRack: Error logging in: Post \"https://10.11.0.1/api/session\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider:
idrac9: Post \"https://10.11.0.1/sysmgmt/2015/bmc/session\": net/http: invalid header field value \"\\\"admin\\n\\\"\" for key User\n\t* no Opener implementations found\n\n","stacktrace":"sigs.k8s.io/controller-
runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/cont
roller.(*Controller).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:227"}
{"level":"info","ts":1683560798.291582,"logger":"controller.Machine","msg":"Reconciling Machine","Machine":"tink-system/t1"}
{"level":"error","ts":1683560798.2984927,"logger":"controller.task","msg":"Reconciler error","reconciler group":"bmc.tinkerbell.org","reconciler kind":"Task","name":"t1-task-0","namespace":"tink-system","error":
"failed to open connection to BMC: 5 errors occurred:\n\t* provider: gofish: Get \"https://10.11.0.1/redfish/v1/\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider: ipmitool: Error: Unable to e
stablish IPMI v2 / RMCP+ session: exit status 1\n\t* provider: *asrockrack.ASRockRack: Error logging in: Post \"https://10.11.0.1/api/session\": dial tcp 10.11.0.1:443: connect: connection refused\n\t* provider:
idrac9: Post \"https://10.11.0.1/sysmgmt/2015/bmc/session\": net/http: invalid header field value \"\\\"admin\\n\\\"\" for key User\n\t* no Opener implementations found\n\n","stacktrace":"sigs.k8s.io/controller
-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/con
troller.(*Controller).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:227"}
Your Environment
-
Operating System and version (e.g. Linux, Windows, MacOS): n/a
-
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
I'm using vagrant with emulated bmc (vbmc) from https://github.com/rgl/terraform-provider-vbmc.
- Link to your project or a code example to reproduce issue:
https://github.com/rgl/tinkerbell-k8s-vagrant/tree/use-rufio
Hey @rgl, thanks for the report. Unfortunately, this has been outstanding for some time. This bmclib PR https://github.com/bmc-toolbox/bmclib/pull/326 will enable port setting to actually be implemented. Once it lands, we'll get it in Rufio.
Update: the machine CRD has been updated to handle per provider options. I'm working on implementing it in the controller now. Once that is done this functionality will be available and functioning.