tinkerbell/rufio

Rufio Machine port is ignored

Opened this issue · 2 comments

rgl commented

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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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
time@v0.11.0/pkg/internal/controller/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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/controller-runtime@v0.11.0/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 bmc-toolbox/bmclib#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.