Копия Пауэршелла в Ansible - PullRequest
       2

Копия Пауэршелла в Ansible

0 голосов
/ 10 сентября 2018

У меня проблема с ansible. Мне нужно скопировать что-то с одного компьютера в сети на хост-компьютер (Windows) с помощью ANSIBLE задачи.

Я проверил много разных подходов, в том числе файл powerscript как задание, и использование win_shell для непосредственного включения CMD-let powershells.

В каждом случае, когда я вызываю Copy-Item непосредственно на хост-машине в окне Powershell, все работает нормально. Но после вызова Ansible я получил

Copy-Item : Cannot find path '//[ip]/[path]/[file]' because it does not exist.

Когда я подключаюсь к хост-машине, я использую одного и того же пользователя как в ANSIBLE, так и в подключении к удаленному рабочему столу.

Кто-нибудь знает, что может происходить?

Ответственное задание:

  - name: Install 7Zip
    win_shell: |
      $path = '//[ip]/[path]/[file]'
      Copy-Item $path -Destination "C:/[Location]"
    tags:
      - 7zip

[ip], [path], [file] и [location] - это просто издевательства, которые я надеваю на SO, чтобы не беспокоить вас польскими именами папок и моим IP-адресом в интрасети.

В команде powershell точно так же, как и в ansible:

PS C:\Users\ansibler> $path = '//[ip]/[path]/[file]'
PS C:\Users\ansibler> Copy-Item $path -Destination "[location]"

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Хорошо, я решаю это.

двойной прыжок был проблемой. Решением было использование ansible_become и повторная аутентификация пользователя на хост-машине:

vars:
  ansible_become: yes
  ansible_become_method: runas
  ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
  ansible_become_user: [login]
  ansible_become_pass: [password]
0 голосов
/ 12 мая 2019

Для меня это сработало так:

 - name: Run Shell Copy Cmd
   win_shell: Copy-Item '\\remote\public\foo\*' C:\Windows\Temp\bar
   become: yes
   become_method: runas
   become_user: vagrant
   vars:
     ansible_become_password: "pass"

Я пытался сделать то же самое с модулем win_copy, но так и не смог заставить его работать

0 голосов
/ 10 сентября 2018

Вы пытаетесь использовать UNC-путь, UNC-путь использует обратную косую черту.

- name: Install 7Zip
    win_shell: |
      $path = '\\[ip]\[path]\[file]'
      Copy-Item $path -Destination "C:/[Location]"
    tags:
      - 7zip

лучший способ скопировать файл - использовать модуль win_copy.

- name: Install 7Zip
    win_copy:
      src: '\\[ip]\[path]\[file]'
      dest: "C:\[Location]"
      remote_src: True

Обновление:

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

- name: Install 7Zip
    win_shell: |
      net use \\[ip]\[path] password /user:username 2>&1
      $path = '\\[ip]\[path]\[file]'
      Copy-Item $path -Destination "C:/[Location]"
    tags:
      - 7zip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...