win_description Module (#61629)
* win_description Module Module to change Windows description and Windows license owner information. * LiteralPath updated changed -path to -LiteralPath in the script * Version and metadata_version version_added updated to 2.10 Metadata_version set to 1.1 * version updated version_added changed to '2.10' * Changes based on feedback * removed some redundant checks * Rename win_description.ps1 to win_computer_description.ps1 * Rename win_description.py to win_computer_description.py * Module name change * Integration tests added * added aliases file * Change compatibility from 2008 to 2008R2 * Update aliases
This commit is contained in:
parent
cfb6cb4cef
commit
2d074f2a31
5 changed files with 337 additions and 0 deletions
54
lib/ansible/modules/windows/win_computer_description.ps1
Normal file
54
lib/ansible/modules/windows/win_computer_description.ps1
Normal file
|
@ -0,0 +1,54 @@
|
|||
#!powershell
|
||||
|
||||
# Copyright: (c) 2019, RusoSova
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
#AnsibleRequires -CSharpUtil Ansible.Basic
|
||||
#AnsibleRequires -OSVersion 6.1
|
||||
|
||||
$spec = @{
|
||||
options = @{
|
||||
owner = @{ type="str" }
|
||||
organization = @{ type="str" }
|
||||
description = @{ type="str" }
|
||||
}
|
||||
required_one_of = @(
|
||||
,@('owner', 'organization', 'description')
|
||||
)
|
||||
supports_check_mode = $true
|
||||
}
|
||||
|
||||
$module = [Ansible.Basic.AnsibleModule]::Create($args, $spec)
|
||||
|
||||
$owner = $module.Params.owner
|
||||
$organization = $module.Params.organization
|
||||
$description = $module.Params.description
|
||||
$regPath="HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
|
||||
|
||||
#Change description
|
||||
if ($description -or $description -eq "") {
|
||||
$descriptionObject=Get-CimInstance -class "Win32_OperatingSystem"
|
||||
if ($description -cne $descriptionObject.description) {
|
||||
Set-CimInstance -InputObject $descriptionObject -Property @{"Description"="$description"} -WhatIf:$module.CheckMode
|
||||
$module.Result.changed = $true
|
||||
}
|
||||
}
|
||||
|
||||
#Change owner
|
||||
if ($owner -or $owner -eq "") {
|
||||
$curentOwner=(Get-ItemProperty -LiteralPath $regPath -Name RegisteredOwner).RegisteredOwner
|
||||
if ($curentOwner -cne $owner) {
|
||||
Set-ItemProperty -LiteralPath $regPath -Name "RegisteredOwner" -Value $owner -WhatIf:$module.CheckMode
|
||||
$module.Result.changed = $true
|
||||
}
|
||||
}
|
||||
|
||||
#Change organization
|
||||
if ($organization -or $organization -eq "") {
|
||||
$curentOrganization=(Get-ItemProperty -LiteralPath $regPath -Name RegisteredOrganization).RegisteredOrganization
|
||||
if ($curentOrganization -cne $organization) {
|
||||
Set-ItemProperty -LiteralPath $regPath -Name "RegisteredOrganization" -Value $organization -WhatIf:$module.CheckMode
|
||||
$module.Result.changed = $true
|
||||
}
|
||||
}
|
||||
$module.ExitJson()
|
75
lib/ansible/modules/windows/win_computer_description.py
Normal file
75
lib/ansible/modules/windows/win_computer_description.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright: (c) 2019, RusoSova
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
# this is a windows documentation stub. actual code lives in the .ps1
|
||||
# file of the same name
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
ANSIBLE_METADATA = {
|
||||
'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'
|
||||
}
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: win_computer_description
|
||||
short_description: Set windows description, owner and organization
|
||||
description:
|
||||
- This module sets Windows description that is shown under My Computer properties. Module also sets
|
||||
Windows license owner and organization. License information can be viewed by running winver commad.
|
||||
options:
|
||||
description:
|
||||
description:
|
||||
- String value to apply to Windows descripton. Specify value of "" to clear the value.
|
||||
required: false
|
||||
type: str
|
||||
organization:
|
||||
description:
|
||||
- String value of organization that the Windows is licensed to. Specify value of "" to clear the value.
|
||||
required: false
|
||||
type: str
|
||||
owner:
|
||||
description:
|
||||
- String value of the persona that the Windows is licensed to. Specify value of "" to clear the value.
|
||||
required: false
|
||||
type: str
|
||||
version_added: '2.10'
|
||||
author:
|
||||
- RusoSova (@RusoSova)
|
||||
'''
|
||||
|
||||
EXAMPLES = r'''
|
||||
- name: Set Windows description, owner and organization
|
||||
win_computer_description:
|
||||
description: Best Box
|
||||
owner: RusoSova
|
||||
organization: MyOrg
|
||||
register: result
|
||||
|
||||
- name: Set Windows description only
|
||||
win_computer_description:
|
||||
description: This is my Windows machine
|
||||
register: result
|
||||
|
||||
- name: Set organization and clear owner field
|
||||
win_computer_description:
|
||||
owner: ''
|
||||
organization: Black Mesa
|
||||
|
||||
- name: Clear organization, description and owner
|
||||
win_computer_description:
|
||||
organization: ""
|
||||
owner: ""
|
||||
description: ""
|
||||
register: result
|
||||
'''
|
||||
|
||||
RETURN = r'''
|
||||
#
|
||||
'''
|
|
@ -0,0 +1,2 @@
|
|||
shippable/windows/group3
|
||||
skip/windows/2008
|
|
@ -0,0 +1,6 @@
|
|||
test_description: This is my computer
|
||||
test_organization: iddqd
|
||||
test_owner: BFG
|
||||
test_description2: This is not my computer
|
||||
test_organization2: idkfa
|
||||
test_owner2: CACODEMON
|
200
test/integration/targets/win_computer_description/tasks/main.yml
Normal file
200
test/integration/targets/win_computer_description/tasks/main.yml
Normal file
|
@ -0,0 +1,200 @@
|
|||
---
|
||||
- name: Blank out description, organization and owner
|
||||
win_computer_description:
|
||||
description: ""
|
||||
organization: ""
|
||||
owner: ""
|
||||
register: blank_set
|
||||
check_mode: no
|
||||
|
||||
- name: Change description, organization and owner in check mode
|
||||
win_computer_description:
|
||||
description: "{{ test_description }}"
|
||||
organization: "{{ test_organization }}"
|
||||
owner: "{{ test_owner }}"
|
||||
register: change1_checkmode
|
||||
check_mode: yes
|
||||
|
||||
- name: Change description, organization and owner
|
||||
win_computer_description:
|
||||
description: "{{ test_description }}"
|
||||
organization: "{{ test_organization }}"
|
||||
owner: "{{ test_owner }}"
|
||||
register: change1_set
|
||||
check_mode: no
|
||||
|
||||
- name: Change description, organization and owner 2nd time, there should be no change happening
|
||||
win_computer_description:
|
||||
description: "{{ test_description }}"
|
||||
organization: "{{ test_organization }}"
|
||||
owner: "{{ test_owner }}"
|
||||
register: change1_set2
|
||||
check_mode: no
|
||||
|
||||
- name: Assert that the above tasks returned the expected results
|
||||
assert:
|
||||
that:
|
||||
- change1_checkmode is changed
|
||||
- change1_set is changed
|
||||
- change1_set2 is not changed
|
||||
|
||||
- name: Get machine description
|
||||
win_shell: (Get-CimInstance -class "Win32_OperatingSystem").description
|
||||
register: description1_changed
|
||||
|
||||
- name: Get organization name
|
||||
win_reg_stat:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
||||
name: RegisteredOrganization
|
||||
register: organization1_changed
|
||||
|
||||
- name: Get owner
|
||||
win_reg_stat:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
||||
name: RegisteredOwner
|
||||
register: owner1_changed
|
||||
|
||||
- name: Assert that retrieved values are equal to the values provided in the variables
|
||||
assert:
|
||||
that:
|
||||
- description1_changed.stdout == "{{ test_description }}\r\n"
|
||||
- organization1_changed.value == "{{ test_organization }}"
|
||||
- owner1_changed.value == "{{ test_owner }}"
|
||||
|
||||
- name: Change description and owner only in check mode
|
||||
win_computer_description:
|
||||
description: "{{ test_description2 }}"
|
||||
owner: "{{ test_owner2 }}"
|
||||
register: change2_checkmode
|
||||
check_mode: yes
|
||||
|
||||
- name: Change description and owner only
|
||||
win_computer_description:
|
||||
description: "{{ test_description2 }}"
|
||||
owner: "{{ test_owner2 }}"
|
||||
register: change2_set
|
||||
check_mode: no
|
||||
|
||||
- name: Change description and owner only 2nd time, there should be no change happening
|
||||
win_computer_description:
|
||||
description: "{{ test_description2 }}"
|
||||
owner: "{{ test_owner2 }}"
|
||||
register: change2_set2
|
||||
check_mode: no
|
||||
|
||||
- name: Assert that the above tasks returned the expected results
|
||||
assert:
|
||||
that:
|
||||
- change2_checkmode is changed
|
||||
- change2_set is changed
|
||||
- change2_set2 is not changed
|
||||
|
||||
- name: Get machine description
|
||||
win_shell: (Get-CimInstance -class "Win32_OperatingSystem").description
|
||||
register: description2_changed
|
||||
|
||||
- name: Get organization name
|
||||
win_reg_stat:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
||||
name: RegisteredOrganization
|
||||
register: organization2_changed
|
||||
|
||||
- name: Get owner
|
||||
win_reg_stat:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
||||
name: RegisteredOwner
|
||||
register: owner2_changed
|
||||
|
||||
- name: Assert that retrieved values are equal to the desired values
|
||||
assert:
|
||||
that:
|
||||
- description2_changed.stdout == "{{ test_description2 }}\r\n"
|
||||
- organization2_changed.value == "{{ test_organization }}"
|
||||
- owner2_changed.value == "{{ test_owner2 }}"
|
||||
|
||||
- name: Change organization only in check mode
|
||||
win_computer_description:
|
||||
organization: "{{ test_organization2 }}"
|
||||
register: change3_checkmode
|
||||
check_mode: yes
|
||||
|
||||
- name: Change organization only in check mode
|
||||
win_computer_description:
|
||||
organization: "{{ test_organization2 }}"
|
||||
register: change3_set
|
||||
check_mode: no
|
||||
|
||||
- name: Change organization only in check mode
|
||||
win_computer_description:
|
||||
organization: "{{ test_organization2 }}"
|
||||
register: change3_set2
|
||||
check_mode: no
|
||||
|
||||
- name: Assert that the above tasks returned the expected results
|
||||
assert:
|
||||
that:
|
||||
- change3_checkmode is changed
|
||||
- change3_set is changed
|
||||
- change3_set2 is not changed
|
||||
|
||||
- name: Get machine description
|
||||
win_shell: (Get-CimInstance -class "Win32_OperatingSystem").description
|
||||
register: description3_changed
|
||||
|
||||
- name: Get organization name
|
||||
win_reg_stat:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
||||
name: RegisteredOrganization
|
||||
register: organization3_changed
|
||||
|
||||
- name: Get owner
|
||||
win_reg_stat:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
||||
name: RegisteredOwner
|
||||
register: owner3_changed
|
||||
|
||||
- name: Assert that retrieved values are equal to the desired values
|
||||
assert:
|
||||
that:
|
||||
- description3_changed.stdout == "{{ test_description2 }}\r\n"
|
||||
- organization3_changed.value == "{{ test_organization2 }}"
|
||||
- owner3_changed.value == "{{ test_owner2 }}"
|
||||
|
||||
- name: Try to apply the same values again in check mode, there should be no change
|
||||
win_computer_description:
|
||||
description: "{{ test_description2 }}"
|
||||
organization: "{{ test_organization2 }}"
|
||||
owner: "{{ test_owner2 }}"
|
||||
register: change4_checkmode
|
||||
check_mode: yes
|
||||
|
||||
- name: Try to apply the same values again, there should be no change
|
||||
win_computer_description:
|
||||
description: "{{ test_description2 }}"
|
||||
organization: "{{ test_organization2 }}"
|
||||
owner: "{{ test_owner2 }}"
|
||||
register: change4_set
|
||||
check_mode: no
|
||||
|
||||
- name: Try to apply the same values again for 2nd time, there should be no change
|
||||
win_computer_description:
|
||||
description: "{{ test_description2 }}"
|
||||
organization: "{{ test_organization2 }}"
|
||||
owner: "{{ test_owner2 }}"
|
||||
register: change4_set2
|
||||
check_mode: no
|
||||
|
||||
- name: Assert that the above tasks returned the expected results
|
||||
assert:
|
||||
that:
|
||||
- change4_checkmode is not changed
|
||||
- change4_set is not changed
|
||||
- change4_set2 is not changed
|
||||
|
||||
- name: Blank the test values
|
||||
win_computer_description:
|
||||
description: ''
|
||||
organization: ''
|
||||
owner: ''
|
||||
register: blank2_set
|
||||
check_mode: no
|
Loading…
Reference in a new issue