透过 Ansible 自动部署节点(下)
此文章的实验环境建于 透过 Ansible 自动部署节点(上) 的基础上,因此建议阅读该文章后再阅读本文章,感谢您的支持!
上次我们提过 Ansible 能控制 Windows 的客户端,那今天让我们亲自来验证一下吧。
实验环境概括
本文章假设您已经设置好上篇的实验环境,这次再追加两个 Windows 实例作为客户端。
- 虚拟化:阿里云 ECS
- 内网网段:
192.168.1.0/24
角色 | IP 地址 | 操作系统 |
---|---|---|
HTTP 服务器 | 192.168.1.200 |
Alibaba Cloud Linux 3.2104 LTS |
DNS 服务器 | 192.168.1.201 |
Alibaba Cloud Linux 3.2104 LTS |
Ansible 控制节点 | 192.168.1.202 |
Alibaba Cloud Linux 3.2104 LTS |
客户端 1 | 192.168.1.203 |
Windows Server 2022 Datacenter |
客户端 2 | 192.168.1.204 |
Windows Server 2022 Datacenter |
配置实验环境
Windows 客户端
参考文章: Get started with OpenSSH for Windows
透过 Ansible 远程控制 Windows 前必须启用 OpenSSH 服务。
首先登入 Windows 客户端以管理员身份打开 PowerShell,并输入以下命令安装 OpenSSH 服务器:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
然后启用 SSH 服务并确保它自启动:
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
当您以 SSH 远程登录 Windows 时,默认的命令行是 cmd.exe
。倘若要把它改为 PowerShell,则可执行以下命令:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
现在您应该能从 Ansible 控制节点透过 SSH 远程控制您的 Windows 客户端了:
ssh Administrator@192.168.1.203
此后假设您直接透过 SSH 远程控制 Windows,而且把默认终端设置为 PowerShell。
为了提升您在 Windows PowerShell 命令行的体验,强烈建议安装 Chocolatey 包管理器及 Vim 文本编辑器。
执行以下命令安装 Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
然后透过 Chocolatey 安装 Vim:
choco install vim
若要免密登录 Windows 客户端,先把 Ansible 控制节点的 SSH 公钥拷到 $env:ProgramData\ssh\administrators_authorized_keys
目录下,然后执行以下命令:
icacls.exe