使用Ansible进行WindowsServer的初始设置

您好。

在虚拟环境中,使用模板克隆虚拟机,但在Windows环境中会遇到SID重复的问题,因此需要在进行Sysprep后创建模板。

由於克隆的虛擬機的設置被初始化,所以每台機器都需要手動進行IP地址設置和本地管理者的刪除等操作。
本次為了自動化這些GUI操作,我們將嘗試使用Ansible。具體流程如下:

• 在Win2019的模板映像中启用WinRM功能。
• 在Ansible服务器(可以称为initiator)中更新主机列表。
• 执行播放脚本。

image.png

当安装完成后,请在目标Windows服务器上执行以下命令。参考了以下网站:
https://qiita.com/yunano/items/f9d5652a296931a09a70

$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file
image.png

确认接待状态。如果端口5985和5986正在监听,则表示正常。在此状态下进行Sysprep并将其存储为Proxmox的模板。

winrm enumerate winrm/config/listener
image.png
image.png
image.png

使用以下命令,将WindowsServer添加到hosts列表中。请将IP更改为实际IP。

[windows]
<Windowsの解決可能なホスト名かIPアドレス>

[windows:vars]
ansible_ssh_user=<Windows側のユーザ名>
ansible_ssh_pass=<Windows側ユーザのパスワード>
ansible_ssh_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
image.png

可以使用ping命令进行确认,若返回SUCCESS则表示OK。

ansible windows -i hosts -m win_ping
image.png

将其保存为ansible/test.yml文件名,并创建一个名为C:\ansible_test的文件夹,以进行简单的验证,即禁用本地管理员。

- hosts: windows
  tasks:
    - win_file:
        path: C:\ansible_test
        state: directory
    - win_user:
        name: Administrator
        account_disabled : yes
image.png

执行Playbook。

ansible-playbook -i hosts test.yml
image.png

WinRMイニシエータユーザーによるエラーが発生していますが、これは無効にしたいユーザーと同じ(ビルトインAdministrator)であるためです。

image.png

使用Ansible,例如可以在以下常见情况下实现效率提升。

使用模板克隆5台Windows电脑
确认通过DHCP获取的IP,并在hosts文件中追加
为每台电脑添加静态IP和DNS服务器
分配计算机名
加入域
删除本地Admin账户

据说Ansible具有归纳性这一特点。我还没有完全理解,但我认为这是在运维过程中需要注意的一点。这个网站很容易理解。

此外,Ansible服务器的规格似乎不需要太高,512MB/1核心的配置已经足够运行。这样就可以避免搭建庞大的服务器,比如SCCM或者工作流程,这些方面也很好。