Неудачная команда с mysql и stdin завершается неудачно - PullRequest
0 голосов
/ 25 сентября 2019

Я использую следующую команду:

- name: Set client_secret
  command: >
    mysql
    -h {{ databases_map['auth']["db_host"] }}
    -P {{ databases_map['auth']["db_port"] }}
    -u {{ db_user }}
    -p
    -e "INSERT INTO APICredentials
    (`name`, `user_id`, `client_id`, `client_secret`, `salt`, `createdAt`, `updatedAt`)
    VALUES (
      'seeding',
      (SELECT id from User where type=1 AND username='{{ name }}'),
      'titi',
      'toto'),
      'salt',
      NOW(),
      NOW()
    )
    ON DUPLICATE KEY UPDATE
    client_secret=('zzz'),
    salt='salt';"
  args:
    stdin: "{{ password }}"

Здесь выходные данные отладки показывают, что команда блокирует запрос пароля:

18518 1569401492.74748: чанк stdout (состояние = 2): >>> Введите пароль: <<< </p>

Если я установлю пароль непосредственно в команде:

-p{{ password }}

Все отлично работает.

У васесть представление, что не так?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Вы можете использовать эту опцию с командным модулем,

stdin_add_newline: yes

Если установлено значение да, эта опция добавляет новую строку к данным стандартного ввода.

Можетвозможно, командный блок ожидает конечной строки, так как мы обычно задаем конечную линию, нажимая клавишу Enter, когда устанавливаем вручную.

Вспомогательный документ: Командный модуль

0 голосов
/ 25 сентября 2019

Вы можете запросить пароль в начале воспроизведения.

vars_prompt:
    - name: password
      prompt: "What is your password?"

https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...