Windows运维自动化:Ansible自动激活Windows

使用Ansible对Windows客户端及服务器进行激活。接下来我们逐步对playbook进行分解,在文章的最后部分会提供完整的playbook。

Windows Server 2022 未激活状态
Windows Server 2022 未激活状态

获取主机名和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 
ansible playbook 执行结果
ansible playbook 执行结果
Windows Server 2022 激活完成
Windows Server 2022 激活完成

完整 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

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2024年10月30日 下午5:35
下一篇 2024年11月4日 下午3:37

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注