Использование ansible make с Oracle Linux "sudo -s" - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно войти в систему Oracle Linux и запустить команду от имени пользователя root для приложения поставщика.После тестирования SSHing и запуска процесса вручную я теперь использую Ansible для оркестровки.

Я должен войти в систему как другой пользователь «admin», используя сертификат, а затем, в соответствии с инструкциями поставщика, ввести «sudo -s ", чтобы стать пользователем root, прежде чем я смогу запустить скрипт оболочки.Поскольку я использую сертификат, мне не нужно вводить пароль для повышения

Я обнаружил, что «становиться: да» не работает для «sudo -s».

Я пытался использовать ответные модули «raw», «shell» и «command», чтобы обойти проблему, но время ожидания истекло, поскольку они могут ожидать ответа.

Вот вывод

TASK [run bash system status] **************************************************
fatal: [server-sandpit]: FAILED! => {"changed": true, "msg": "non-zero return code", "rc": 3, "stderr": "Shared connection to server-sandpit closed.\r\n", "stderr_lines": ["Shared connection to server-sandpit closed."], "stdout": "This script cannot be run under sudo, try running under 'sudo -s'\r\n", "stdout_lines": ["This script cannot be run under sudo, try running under 'sudo -s'"]}

Вот книга воспроизведения:

---
- hosts: sl-aio-sandpit

  tasks:
    - name: run bash system status
      script: system_status.sh
      args:
        executable: bash
      become: yes

Обратите внимание, что я не могу запустить скрипт, используя только sudo в ssh:

[admin@server-sandpit tmp]$ sudo ./system_status.sh
This script cannot be run under sudo, try running under 'sudo -s'

Я либо получаю ошибку выше, либо, для некоторых обходных путей, таких как использование "shell" или "command", книга воспроизведения никогда не разрешается и должна быть отменена.

1 Ответ

0 голосов
/ 29 марта 2019

Я не знаю ни одного способа управления параметрами, передаваемыми в sudo при использовании become: true и become_method: sudo (по умолчанию).

Так как сначала вам нужно sudo -s, затем запустите ваш скрипт ввторой командой, вы можете попробовать следующее решение

---
- hosts: sl-aio-sandpit
  remote_user: admin

  tasks:

    - name: copy script to remote machine
      copy:
        src: system_status.sh
        dest: /path/to/your/system_status.sh
        mode: 0750

    - name: run bash system status with sudo -s
      shell: |
        sudo -s
        /path/to/your/system_status.sh
...