Панель управления Kubernetes - ошибка, возникающая при задании задачи при создании токена администратора - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь установить кластер kubernetes, развернуть панель мониторинга и сгенерировать токен для пользователя admin в ansible, но когда я добавляю команду в задачу, я получаю ошибку.

Я пытался избежать кавычек, но безуспешно, также пытался избежать знака доллара с \ $ безуспешно.

- name: 19/23 Get dashboard token for admin user
  become: false
  command: "{{ item }}"
  register: output
  with_items:
    - kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

- debug: msg="{{ output.stdout_lines }}"

Вот вывод ошибки, я хочу выполнить эту команду в задании ANSIBLE и затем распечатать ее с отладкой, чтобы захватить токен и позже сохранить его в текстовом файле.

TASK [19/23 Get Dashboard token] 
***********************************************
failed: [master] (item=kubectl -n kube-system describe secret \$(kubectl -n kube-system get secret | grep admin-user | awk ''{print $1}'')) => {"ansible_loop_var": "item", "changed": true, "cmd": ["kubectl", "-n", "kube-system", "describe", "secret", "$(kubectl", "-n", "kube-system", "get", "secret", "|", "grep", "admin-user", "|", "awk", "{print", "$1})"], "delta": "0:00:02.220054", "end": "2019-05-30 21:18:44.331480", "item": "kubectl -n kube-system describe secret \\$(kubectl -n kube-system get secret | grep admin-user | awk ''{print $1}'')", "msg": "non-zero return code", "rc": 1, "start": "2019-05-30 21:18:42.111426", "stderr": "Error from server (NotFound): secrets \"$(kubectl\" not found\nError from server (NotFound): secrets \"get\" not found\nError from server (NotFound): secrets \"secret\" not found\nError from server (NotFound): secrets \"|\" not found\nError from server (NotFound): secrets \"grep\" not found\nError from server (NotFound): secrets \"admin-user\" not found\nError from server (NotFound): secrets \"|\" not found\nError from server (NotFound): secrets \"awk\" not found\nError from server (NotFound): secrets \"{print\" not found\nError from server (NotFound): secrets \"$1})\" not found", "stderr_lines": ["Error from server (NotFound): secrets \"$(kubectl\" not found", "Error from server (NotFound): secrets \"get\" not found", "Error from server (NotFound): secrets \"secret\" not found", "Error from server (NotFound): secrets \"|\" not found", "Error from server (NotFound): secrets \"grep\" not found", "Error from server (NotFound): secrets \"admin-user\" not found", "Error from server (NotFound): secrets \"|\" not found", "Error from server (NotFound): secrets \"awk\" not found", "Error from server (NotFound): secrets \"{print\" not found", "Error from server (NotFound): secrets \"$1})\" not found"], "stdout": "", "stdout_lines": []}


#<Thread:0x0000560b5b822500@/usr/share/rubygems-integration/all/gems/vagrant-2.0.2/lib/vagrant/batch_action.rb:71 run> terminated with exception (report_on_exception is true):
`execute_ansible_playbook_from_host'
/usr/share/rubygems-integration/all/gems/vagrant-2.0.2/plugins/provisioners/ansible/provisioner/host.rb:104:in `execute_command_from_host': Ansible failed to complete successfully. 
Any error output should be (VagrantPlugins::Ansible::Errors::AnsibleCommandFailed) visible above. Please fix these errors and try again.
Ansible failed to complete successfully. Any error output should be visible above. Please fix these errors and try again.

1 Ответ

2 голосов
/ 03 июня 2019

Используйте модуль shell вместо command. Как видите различие в ответе этого поста

Аналогично нижеследующему ansible-playbook:

---
- hosts: local
  tasks:
  - name: get secret name
    shell: 'kubectl -n kube-system get secret -o=name| grep admin-user'
    register: secret

  - name: get token for kubernetes-dashboard user
    shell: "kubectl -n kube-system get {{ secret.stdout }} -o=jsonpath='{..token}'"
    register: token

  - debug: 
      var: token.stdout
...