Настройте рабочую станцию ​​Windows 10 с помощью Ansible, установленной на WSL - PullRequest
1 голос
/ 11 октября 2019

Я установил Ansible в WSL (Подсистема Windows для Linux) на моей рабочей станции Windows 10.

Моя цель - настроить и WSL, и саму Windows 10.

Я могу запускать playbook с localhost, который подключается и настраивает через SSH WSL.

Однако я не уверен, что Ansible может запускать playbook с хостом Windows, чтобы иметь возможность настроить Windowsсам (например, устанавливать пакеты, используя Chocolatey)

Возможно ли это? Или Ansible может настроить узел Windows, только если он установлен на другом компьютере с Linux?

Ответы [ 2 ]

1 голос
/ 13 ноября 2019

Отлично! Я смог подключиться к своему хосту Windows после выполнения этих шагов.

Однако мне пришлось решить еще две проблемы, прежде чем я смог запустить ANSI Playbooks для обоих, WSL и хоста Windows:

1. Определите соединение для WSL

Хост Windows использует ansible_connection=winrm, но для WSL требуется другое соединение, я установил ansible_connection=local.

2. Избегайте переопределения переменной соединения

Переменная ansible_connection имеет значение переопределена . Это потому, что имя переменной и имя хоста совпадают. Это означает, что вы можете запустить playbook для WSL или для хоста Windows, но не против обоих, так как им нужно другое соединение.

Чтобы исправить это, вы можете либо установить хеш-поведение , либо задать два разных имени хоста для localhost под своим WSL, /etc/hosts. Я сделал второй:

127.0.0.1   wsl.local
127.0.0.1   windows.local

My /etc/ansible/hosts:

[wsl]
wsl.local 

[wsl:vars]
ansible_connection=local

[windows]
windows.local 
[windows:vars]
ansible_port=5985
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_user=<<ansible_user>>
ansible_password=<<ansible_password>>

Теперь я могу запустить ansible_playbook с задачами, выполняющимися как для моего хоста Windows, так и для моего WSL. Здесь для более подробной информации о конфигурации.

1 голос
/ 09 ноября 2019

Да, это возможно.

  1. Сначала у вас должен быть WSL (что вы делаете)
  2. Далее вам нужно установить Ansible, но вам нужны дополнительные пакеты для использования его с WinRM
    • Установить пипс$ apt install python-pip
    • Установить pip winrm $ pip install pywinrm
    • Установить xml-парсер $ pip install xmltodict
  3. Вам нужен настроенный WinRM:
    • Вам нужно сделать вашу сеть частной, так как WinRM по умолчанию работает только для частных или доменных сетей. Вы можете пропустить это, указав параметр Enable-PSRemoting -SkipNetworkProfileCheck, но я не советую этого делать.
    • Включите WinRM Enable-PSRemoting, запустив его в PowerShell в Windows.
    • Включить базовую аутентификацию Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
    • Включить незашифрованное соединение Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
  4. В WSL добавьте как vars к вашей книге или group_vars
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: basic
При запуске вашей книги воспроизведения укажите переменные ansible_user=your_win_user и ansible_password=your_win_user_pass или жестко закодируйте их в предыдущих переменных.

Я использую эту настройку для подготовки своего компьютера из WSL. Вы можете посмотреть здесь . Надеюсь, это поможет.

...