使用Ansible对Windows客户端及服务器进行激活。接下来我们逐步对playbook进行分解,在文章的最后部分会提供完整的playbook。
获取主机名和IP地址
- name: 获取主机名和 IP 地址
set_fact:
system_info:
hostname: "{{ ansible_hostname }}"
ip_address: "{{ ansible_default_ipv4.address | default(ansible_host) }}"
在这一部分,我们使用 set_fact
指令来创建一个新的变量 system_info
,其中包含了主机的名称(hostname
)和 IP 地址(ip_address
)。这里的 ansible_hostname
和 ansible_default_ipv4.address
是 Ansible 自动收集的系统信息。👍
设置KMS客户端密钥
- name: 设置 KMS 客户端密钥
ansible.windows.win_shell: >
C:WindowsSystem32cscript.exe C:WindowsSystem32slmgr.vbs /ipk kms密钥
这一步使用 win_shell
模块在 Windows 服务器上运行一个命令,设置 KMS 客户端密钥。这个密钥是用来验证 Windows 操作系统的有效性。🔑
设置KMS服务器
- name: 设置 KMS 服务器
ansible.windows.win_shell: >
C:WindowsSystem32cscript.exe C:WindowsSystem32slmgr.vbs /skms KMS服务器IP
这里我们再次使用 win_shell
来指定 KMS 服务器的地址。这个地址是你要连接的 KMS 服务器,用于激活 Windows。🌐
激活Windows
- name: 激活 Windows
ansible.windows.win_shell: >
C:WindowsSystem32cscript.exe C:WindowsSystem32slmgr.vbs /ato
这一部分的任务是激活 Windows。它通过运行另一个命令来完成,这个命令会告诉系统去联系 KMS 服务器并完成激活。🎉
计算激活过期日期
- name: 获取激活过期日期
ansible.windows.win_shell: >
(Get-Date).AddDays(180).ToString('yyyy-MM-dd')
register: activate_end_time
在这一步,我们计算激活有效期的到期日期。这里,我们使用 PowerShell 命令来计算当前日期加上 180 天,并将结果存储在变量 activate_end_time
中。📅
显示激活信息
- name: 显示激活信息
debug:
msg:
- "计算机名称: {{ system_info.hostname }}"
- "IP 地址: {{ system_info.ip_address }}"
- "Windows 激活有效期至: {{ activate_end_time.stdout | trim }}"
最后,我们使用 debug
模块来输出刚才收集到的信息,包括计算机名称、IP 地址和激活到期日期。这样可以方便用户确认激活状态。🔍
运行 Playbook
ansible-playbook -i inventory.ini activate_kms.yml
完整 Playbook
这个 playbook 展示了如何使用 Ansible 自动激活 Windows 服务器的过程。每一步都清晰地定义了所需的操作和信息处理。通过这种方式,我们可以节省大量的手动操作时间,并确保每台服务器都能顺利激活。
- name: KMS Activation on Windows Server
hosts: all
gather_facts: yes
tasks:
- name: 获取主机名和 IP 地址
set_fact:
system_info:
hostname: "{{ ansible_hostname }}"
ip_address: "{{ ansible_default_ipv4.address | default(ansible_host) }}"
- name: 设置 KMS 客户端密钥
ansible.windows.win_shell: >
C:WindowsSystem32cscript.exe C:WindowsSystem32slmgr.vbs /ipk kms密钥
- name: 设置 KMS 服务器
ansible.windows.win_shell: >
C:WindowsSystem32cscript.exe C:WindowsSystem32slmgr.vbs /skms kms服务器地址
- name: 激活 Windows
ansible.windows.win_shell: >
C:WindowsSystem32cscript.exe C:WindowsSystem32slmgr.vbs /ato
- name: 获取激活过期日期
ansible.windows.win_shell: >
(Get-Date).AddDays(180).ToString('yyyy-MM-dd')
register: activate_end_time
- name: 显示激活信息
debug:
msg:
- "计算机名称: {{ system_info.hostname }}"
- "IP 地址: {{ system_info.ip_address }}"
- "Windows 激活有效期至: {{ activate_end_time.stdout | trim }}"
此文章为原创文章,作者:胖哥叨逼叨,如若转载,请与我联系并注明出处:https://www.pangshare.com/3147.htm