Ansible изменить соединение с winrm на s sh между заданиями - PullRequest
0 голосов
/ 24 января 2020

У меня была проблема с подключением к local_action при запуске моей playbook, моя playbook используется для создания пользователей на SQL Сервере и мне нужно запустить локальное действие, чтобы получить случайный пароль

fatal: [w961412]: UNREACHABLE! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='localhost', port=5985): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4572858790>: Failed to establish a new connection: [Errno 111] Connection refused',))", "unreachable": true}

задача для s sh

- name: get random password
  command: tr -dc 'A-HJ-NP-Za-km-z2-9' < /dev/urandom | dd bs=12 count=1 status=none
  register: secret

задач для winrm:

- name: Alter database credentials.
  win_shell: | 
       sqlcmd -S {{ sql_hostname }},{{ SQL_PORT }} -E -q "alter login {{ dbuser }} with password=N'{{ secret.password }}'" -o alter.log 
 register: alter_result

1 Ответ

2 голосов
/ 24 января 2020

Прежде всего, то, что вы сказали, на самом деле правильно: вы хотите локальное действие; Я не думаю, что ему нужно подключиться к вашему управляющему хосту через 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...