fix(senlin): configure workers

Closes #731
diff --git a/roles/senlin/vars/main.yml b/roles/senlin/vars/main.yml
index 6f62432..e0b9887 100644
--- a/roles/senlin/vars/main.yml
+++ b/roles/senlin/vars/main.yml
@@ -28,6 +28,8 @@
         log_config_append: null
       oslo_messaging_notifications:
         driver: noop
+      senlin_api:
+        workers: 2
   manifests:
     ingress_api: false
     service_ingress_api: false
diff --git a/roles/senlin/vars_test.go b/roles/senlin/vars_test.go
new file mode 100644
index 0000000..d872627
--- /dev/null
+++ b/roles/senlin/vars_test.go
@@ -0,0 +1,50 @@
+package senlin
+
+import (
+	_ "embed"
+	"os"
+	"testing"
+
+	"github.com/goccy/go-yaml"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+var (
+	//go:embed vars/main.yml
+	varsFile []byte
+	vars     Vars
+)
+
+type Vars struct {
+	SenlinHelmValues `yaml:"_senlin_helm_values"`
+}
+
+type SenlinHelmValues struct {
+	Conf `yaml:"conf"`
+}
+
+type Conf struct {
+	Senlin SenlinConf `yaml:"senlin"`
+}
+
+type SenlinConf struct {
+	API SenlinAPIConf `yaml:"senlin_api"`
+}
+
+type SenlinAPIConf struct {
+	Workers int32 `yaml:"workers"`
+}
+
+func TestMain(m *testing.M) {
+	t := &testing.T{}
+	err := yaml.UnmarshalWithOptions(varsFile, &vars)
+	require.NoError(t, err)
+
+	code := m.Run()
+	os.Exit(code)
+}
+
+func TestSenlinHelmValues(t *testing.T) {
+	assert.Equal(t, int32(2), vars.SenlinHelmValues.Conf.Senlin.API.Workers)
+}