使用Ansible进行WindowsServer的初始设置
您好。
在虚拟环境中,使用模板克隆虚拟机,但在Windows环境中会遇到SID重复的问题,因此需要在进行Sysprep后创建模板。
由於克隆的虛擬機的設置被初始化,所以每台機器都需要手動進行IP地址設置和本地管理者的刪除等操作。
本次為了自動化這些GUI操作,我們將嘗試使用Ansible。具體流程如下:
• 在Win2019的模板映像中启用WinRM功能。
• 在Ansible服务器(可以称为initiator)中更新主机列表。
• 执行播放脚本。
当安装完成后,请在目标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
确认接待状态。如果端口5985和5986正在监听,则表示正常。在此状态下进行Sysprep并将其存储为Proxmox的模板。
winrm enumerate winrm/config/listener
使用以下命令,将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
可以使用ping命令进行确认,若返回SUCCESS则表示OK。
ansible windows -i hosts -m win_ping
将其保存为ansible/test.yml文件名,并创建一个名为C:\ansible_test的文件夹,以进行简单的验证,即禁用本地管理员。
- hosts: windows
tasks:
- win_file:
path: C:\ansible_test
state: directory
- win_user:
name: Administrator
account_disabled : yes
执行Playbook。
ansible-playbook -i hosts test.yml
WinRMイニシエータユーザーによるエラーが発生していますが、これは無効にしたいユーザーと同じ(ビルトインAdministrator)であるためです。
使用Ansible,例如可以在以下常见情况下实现效率提升。
使用模板克隆5台Windows电脑
确认通过DHCP获取的IP,并在hosts文件中追加
为每台电脑添加静态IP和DNS服务器
分配计算机名
加入域
删除本地Admin账户
据说Ansible具有归纳性这一特点。我还没有完全理解,但我认为这是在运维过程中需要注意的一点。这个网站很容易理解。
此外,Ansible服务器的规格似乎不需要太高,512MB/1核心的配置已经足够运行。这样就可以避免搭建庞大的服务器,比如SCCM或者工作流程,这些方面也很好。