I am using the operator-sdk (native ansible operator for k8s) to onboard clients in keycloak,
- I did the necessary pre-requisites to initialise the operator and creating the api.
- In the roles/tasks.yml of the operator directory i have defined the standard playbook for keycloak client creation, i am using the following:
- name: Create or update Keycloak client
local_action:
module: keycloak_client
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
client_id: "{{ client_id }}"
state: present
-
make docker-build docker-push IMG=repname/keycloak_test
-
make install
-
export IMG=repname/keycloak_test
-
make deploy
-
I ran the kubectl command (kubectl apply -f my_crd.yaml) and the yaml looks like the following.
apiVersion: sso.xxx.com/v1alpha1
kind: Ar-sso-fd
metadata:
name: ar-sso-abc-224
spec:
client_id: test224
Type of question
- General operator-related help
Question
What did you do?
Ran the command: kubectl apply -f my_crd.yml
What did you expect to see?
The CRD (my_crd.yml) applied above should have triggered the client onboarding in keycloak
What did you see instead? Under which circumstances?
The controller logs show this event in the logs "error":"did not receive playbook_on_stats event",
Environment
MacOS
Operator type:
/language ansible
Kubernetes cluster type:
$ operator-sdk version
operator-sdk version: "v1.1.0", commit: "9d27e224efac78fcc9354ece4e43a50eb30ea968", kubernetes version: "v1.18.2", go version: "go1.15.2 darwin/amd64", GOOS: "darwin", GOARCH: "amd64"
$ go version (if language is Go)
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.8", GitCommit:"9f2892aab98fe339f3bd70e3c470144299398ace", GitTreeState:"clean", BuildDate:"2020-08-13T16:12:48Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:32:58Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
The following are the manager logs, it shows my ansible playbook has action which is conflicting but i don't see any conflicting actions.
t']\r\n ansible python module location = /usr/local/lib/python3.6/site-packxxes/ansible\r\n executable location = /usr/local/bin/ansible-playbook\r\n python version = 3.6.8 (default, Dec 5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]\r\nUsing /etc/ansible/ansible.cfg as config file\r\nERROR! conflicting action statements: keycloak_client, state\r\n\r\nThe error appears to be in '/opt/ansible/roles/xx-sso-yyy/tasks/main.yml': line 3, column 3, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n# tasks file for xx-sso-yyy\r\n- name: hhhhhhssoyyy-client\r\n ^ here\r\n","job":"4548432111829895923","name":"xx-sso-yyy-224","namespace":"xx-sso-yyy-system","error":"did not receive playbook_on_stats event","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128\ngithub.com/operator-framework/operator-sdk/internal/ansible/controller.(*AnsibleOperatorReconciler).Reconcile\n\tsrc/github.com/operator-framework/operator-sdk/internal/ansible/controller/reconcile.go:229\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:235\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:90"}
{"level":"error","ts":1604585003.780023,"logger":"controller","msg":"Reconciler error","controller":"xx-sso-yyy-controller","name":"xx-sso-yyy-224","namespace":"xx-sso-yyy-system","error":"did not receive playbook_on_stats event","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:237\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:90"}
I am using the operator-sdk (native ansible operator for k8s) to onboard clients in keycloak,
local_action:
module: keycloak_client
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
client_id: "{{ client_id }}"
state: present
make docker-build docker-push IMG=repname/keycloak_test
make install
export IMG=repname/keycloak_test
make deploy
I ran the kubectl command (kubectl apply -f my_crd.yaml) and the yaml looks like the following.
apiVersion: sso.xxx.com/v1alpha1
kind: Ar-sso-fd
metadata:
name: ar-sso-abc-224
spec:
client_id: test224
Type of question
Question
What did you do?
Ran the command: kubectl apply -f my_crd.yml
What did you expect to see?
The CRD (my_crd.yml) applied above should have triggered the client onboarding in keycloak
What did you see instead? Under which circumstances?
The controller logs show this event in the logs "error":"did not receive playbook_on_stats event",
Environment
MacOS
Operator type:
/language ansible
Kubernetes cluster type:
$ operator-sdk versionoperator-sdk version: "v1.1.0", commit: "9d27e224efac78fcc9354ece4e43a50eb30ea968", kubernetes version: "v1.18.2", go version: "go1.15.2 darwin/amd64", GOOS: "darwin", GOARCH: "amd64"
$ go version(if language is Go)$ kubectl versionClient Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.8", GitCommit:"9f2892aab98fe339f3bd70e3c470144299398ace", GitTreeState:"clean", BuildDate:"2020-08-13T16:12:48Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:32:58Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
The following are the manager logs, it shows my ansible playbook has action which is conflicting but i don't see any conflicting actions.
t']\r\n ansible python module location = /usr/local/lib/python3.6/site-packxxes/ansible\r\n executable location = /usr/local/bin/ansible-playbook\r\n python version = 3.6.8 (default, Dec 5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]\r\nUsing /etc/ansible/ansible.cfg as config file\r\nERROR! conflicting action statements: keycloak_client, state\r\n\r\nThe error appears to be in '/opt/ansible/roles/xx-sso-yyy/tasks/main.yml': line 3, column 3, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n# tasks file for xx-sso-yyy\r\n- name: hhhhhhssoyyy-client\r\n ^ here\r\n","job":"4548432111829895923","name":"xx-sso-yyy-224","namespace":"xx-sso-yyy-system","error":"did not receive playbook_on_stats event","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128\ngithub.com/operator-framework/operator-sdk/internal/ansible/controller.(*AnsibleOperatorReconciler).Reconcile\n\tsrc/github.com/operator-framework/operator-sdk/internal/ansible/controller/reconcile.go:229\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:235\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:90"}
{"level":"error","ts":1604585003.780023,"logger":"controller","msg":"Reconciler error","controller":"xx-sso-yyy-controller","name":"xx-sso-yyy-224","namespace":"xx-sso-yyy-system","error":"did not receive playbook_on_stats event","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:237\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\t
pkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:90"}