ansible.windows.win_feature – Installs and uninstalls Windows Features on Windows Server

Note

This plugin is part of the ansible.windows collection (version 1.9.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install ansible.windows.

To use it in a playbook, specify: ansible.windows.win_feature.

Synopsis

  • Installs or uninstalls Windows Roles or Features on Windows Server.

  • This module uses the Add/Remove-WindowsFeature Cmdlets on Windows 2008 R2 and Install/Uninstall-WindowsFeature Cmdlets on Windows 2012, which are not available on client os machines.

Parameters

Parameter Choices/Defaults Comments
include_management_tools
boolean
    Choices:
  • no ←
  • yes
Adds the corresponding management tools to the specified feature.
Not supported in Windows 2008 R2 and will be ignored.
include_sub_features
boolean
    Choices:
  • no ←
  • yes
Adds all subfeatures of the specified feature.
name
list / elements=string / required
Names of roles or features to install as a single feature or a comma-separated list of features.
To list all available features use the PowerShell command Get-WindowsFeature.
source
string
Specify a source to install the feature from.
Not supported in Windows 2008 R2 and will be ignored.
Can either be {driveletter}:\sources\sxs or \\{IP}\share\sources\sxs.
state
string
    Choices:
  • absent
  • present ←
State of the features or roles on the system.

See Also

See also

chocolatey.chocolatey.win_chocolatey

The official documentation on the chocolatey.chocolatey.win_chocolatey module.

ansible.windows.win_package

The official documentation on the ansible.windows.win_package module.

Examples

- name: Install IIS (Web-Server only)
  ansible.windows.win_feature:
    name: Web-Server
    state: present

- name: Install IIS (Web-Server and Web-Common-Http)
  ansible.windows.win_feature:
    name:
    - Web-Server
    - Web-Common-Http
    state: present

- name: Install NET-Framework-Core from file
  ansible.windows.win_feature:
    name: NET-Framework-Core
    source: C:\Temp\iso\sources\sxs
    state: present

- name: Install IIS Web-Server with sub features and management tools
  ansible.windows.win_feature:
    name: Web-Server
    state: present
    include_sub_features: yes
    include_management_tools: yes
  register: win_feature

- name: Reboot if installing Web-Server feature requires it
  ansible.windows.win_reboot:
  when: win_feature.reboot_required

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
exitcode
string
always
The stringified exit code from the feature installation/removal command.

Sample:
Success
feature_result
complex
success
List of features that were installed or removed.

 
display_name
string
always
Feature display name.

Sample:
Telnet Client
 
id
integer
always
A list of KB article IDs that apply to the update.

Sample:
44
 
message
list / elements=string
always
Any messages returned from the feature subsystem that occurred during installation or removal of this feature.

 
reboot_required
boolean
always
True when the target server requires a reboot as a result of installing or removing this feature.

Sample:
True
 
restart_needed
boolean
always
DEPRECATED in Ansible 2.4 (refer to reboot_required instead). True when the target server requires a reboot as a result of installing or removing this feature.

Sample:
True
 
skip_reason
string
always
The reason a feature installation or removal was skipped.

Sample:
NotSkipped
 
success
boolean
always
If the feature installation or removal was successful.

Sample:
True
reboot_required
boolean
success
True when the target server indicates a reboot is required (no further updates can be installed until after a reboot).
This my be true even if not change had occurred as the value is derived from the server state.

Sample:
True


Authors

  • Paul Durivage (@angstwad)

  • Trond Hindenes (@trondhindenes)