Прежде всего, то, что вы сказали, на самом деле правильно: вы хотите локальное действие; Я не думаю, что ему нужно подключиться к вашему управляющему хосту через s sh, просто чтобы сгенерировать пароль
Итак, я ожидаю, что вы можете использовать:
- name: get a random password
connection: local
shell: tr -dc 'A-HJ-NP-Za-km-z2-9' < /dev/urandom | dd bs=12 count=1 status=none
register: secret
- win_shell: |
echo "and now you are back to the normal playbook connection"
Ваш код В snippet также была ошибка, связанная с попыткой использовать command:
со строкой, содержащей трубу - операторы оболочки не поддерживаются command:
, поэтому shell:
существует
Затем отдельно не нужно использовать кучу команд оболочки, вместе с некоторыми магическими c tr
строковыми литералами: ansible имеет случайный поиск пароля , так что вы можете:
- win_shell: |
sqlcmd -q "alter login with password=N'{{ item }}'"
register: alter_result
with_password: /dev/null length=12