Ansible & Windows 10 家用版
如何用 Ansible 操控 Windows 10 家用版

上次用 Windows OS 應該是我大學時代的事了吧(煙
近期因為工作需求又再一次接觸到,原以為很快就搞定,結果還是有些小檻要跨,在此紀錄一下方便之後有需求的人也可以查找。
注意事項:
- 本篇僅供測試用,如果要上 Production 該加的憑證還是要加。
- 本篇在 Windows Server 上的操作全部都是以管理員方式執行 PowerShell
另外我也有寫一些簡單的範例可以在這個 Repo上找到,有時間就會更新。
測試規格列表
Bastion Node: Red Hat Enterprise Linux 8
Ansible version on Bastion Node: 2.9.6
Python version on Bastion Node: 3.6.8
Windows Server: Microsoft Windows 10 (64-bit)
測試步驟
防火牆先打開,不然 ping 不到
Openssh Server 要裝,不然沒辦法透過 ssh 連線,Ansible 執行腳本的方式不是透過 agent,而是透過 SSH 連線
UI 法: 在搜尋欄裡面找 `程式` > 新增選用功能 Command Line 法:請參考[這篇](https://docs.microsoft.com/zh-tw/windows-server/administration/openssh/openssh_install_firstuse)
裝完 Openssh 除了重新啟動之外該更新的還要更新,我當初還納悶為什麼重新開機之後 openssh 仍舊不在 service 列表裡面…
測試 Bastion 機是否可以連線到 Windows 機器,如果發現 SSH permission denied(Public Key),請 copy 一下 ssh key:
1 | ssh-copy-id ${Windows's Username}@${Windows Server IP} |
- 開通 TCP Port 5985 / firewall rule,相關設定參照 netsh-advfirewall-firewall-control-firewall-behavior
1 | netsh advfirewall firewall add rule name="WinRM-HTTP" dir=in localport=5985 protocol=TCP action=allow |
- Windows Server 開啟 Administrator 功能,這樣遠端連進去時就可以用 Admin 帳號執行 PowerShell,但這邊主要是測試方便使用而已
註. 不知道為啥 Windows 10 家用版拿掉了用 UI 啟動 Administrator 這個功能,可能是怕屁孩如我輩手賤改掉密碼,這邊提供不限於家用版的指令
1 | 啟動管理員帳號 |
開啟後記得去設定管理員密碼
1 | net user administrator ${你設定的管理員密碼} |
- 將 PowerShell 執行原則設為 RemoteSigned,遠端下載的腳本要有受信任的簽章才可執行,原則詳列於 about_execution_policies
1 | set-executionpolicy remotesigned |
改完之後查看一下 PowerShell 的執行策略
1 | get-executionpolicy |
- 在 Windows Server 上配置 winrm,開啟 winrm listener,Windows Host 需要安裝的套件及設定詳列於此
1 | # 配置 winrm service 並且啟動服務 |
成功啟動:
註1: 在這邊有些人在設定時可能會遇到以下這個問題
請修改網路設定,把現在的網路設定從公用網路變成私人網路

註2: 有些人會卡在這個問題,原因可以參照此篇,這也就是為什麼我們要設定AllowUnencrypted="true"
但是在正式環境的話,還是要[把 credentials 加密]([Ansible] Windows 連線設定 (basic、certificate authentication)
在 Ansible 腳本執行機器上上安裝 pywinrm 套件
1
pip3 install winrm
寫個 inventory file 註記 windows server IP 還有連線資訊,如果要測試也可以直接在 hosts 裡面加入群組
1 | [windows] |
- 用 win_ping 模組測試執行結果
Windows Update with Ansible
對如何用 Ansible 更新 Windows KB 可參考此篇。
Reference
- 安裝適用於 Windows Server 2019 和 Windows 10 的 OpenSSH
- SSH 遠端連線回家中的 Windows 電腦
- About Execution Policies
- Setting up a Windows Host
- Windows 10 家用版開啟/關閉本機Administrator(系統管理員)帳號
- 使用 netsh advfirewall firewall,而不要使用 netsh 防火牆來控制 Windows 防火牆行為
- plaintext: the specified credentials were rejected by the server
- Ansible Windows 連線設定 (basic、certificate authentication)
- 何瑞的技术博客 - Ansible学习笔记(一):部署管理Windows机器遇到的一些坑
- windows-updates-and-ansible