Ansible Collection - c2platform.wincore

GitLab: c2platform/rws/ansible-collection-wincore 

Pipeline Status Latest Release

C2 Platform generic roles for MS Windows that are used by all or some other roles. These roles typically don’t create services / processes on target node but are dependencies e.g. packages required by those roles. Or these roles help with Ansible provisioning for example offers generic Ansible modules, filters etc.


  • download  manage downloads.
  • win  manage users, features, services, scheduled_tasks, packages ( chocolatey), files, directories etc.
  • ad  Active Directory ( AD) management using  Ansible collection.


Module plugins:


The c2platform.wincore.win_certificate module allows you to create TLS/SSL certificates. It provides four variables: dns_name, validity_days (default: 365), store_location (default: Cert:\LocalMachine\My), and state (default: present). The example below demonstrates how to create a TLS/SSL certificate and use it to configure an IIS HTTPS Binding on port 443 using module

- name: Manage certificate
    dns_name: "{{ ansible_hostname }}"
    validity_days: 3650
    state: present
    # tmp_file_path: D:\Temp\ExportedCertificate.cer
  register: _cert

- name: Add a HTTPS binding
    name: "{{ arcgis_webadaptor_ssl_certificate_iis_web_site_name }}"
    protocol: https
    port: 443
    ip: '*'
    certificate_hash: "{{ _cert.thumbPrint }}"
    state: present
  when: '"thumbPrint" in _cert'


To retrieve a list of installed packages and store it in the Ansible fact installed_packages, you can utilize the c2platform.wincore.win_package_facts module. Below is an example that demonstrates how to use this module to install Microsoft Web Deploy, but only if it is not already installed.

- name: Get Installed packages

- name: Display Installed Packages
    var: ansible_facts.installed_packages

- name: Install WebDeploy for IIS
    path: '{{ arcgis_webadaptor_temp_dir["path"] }}\{{ arcgis_webadaptor_versions[arcgis_webadaptor_version]["webdeploy"]["url"] | basename }}'
    arguments: 'ADDLOCAL=ALL LicenseAccepted="0"'
    state: present
  when: '"Microsoft Web Deploy 3.6" not in ansible_facts.installed_packages'

In this example, the win_package_facts module is used to collect information about installed packages on the Windows system and store it in the installed_packages fact. Additionally, it demonstrates how to conditionally install Microsoft Web Deploy only if it is not already present in the list of installed packages.



When leveraging the download  role for downloading tasks, the download_file_path filter proves invaluable for obtaining the precise download path.

Consider the following comparison:

Instead of:

fme_flow_installer_path: '{{ fme_flow_temp_dir["path"] }}\{{ fme_flow_versions[fme_flow_version]["url"] | basename }}'

Opt for:

fme_flow_installer_path: >-
  {{ fme_flow_versions[fme_flow_version]["url"]
  | c2platform.wincore.download_file_path(fme_flow_temp_dir["path"]) }}  


When utilizing the download  role to manage downloads and unzip files, the download_extract_folder filter is your go-to solution for retrieving the path of the extracted contents.

For instance:

fme_flow_extraction_path: "{{ fme_flow_installer_path.removesuffix('.' + fme_flow_installer_extname) }}"

Opt for the cleaner alternative:

fme_flow_extraction_path: >-
  {{ fme_flow_versions[fme_flow_version]["url"]
  | c2platform.wincore.download_extract_folder(fme_flow_temp_dir["path"]) }}  

This revised syntax not only improves readability but also ensures a more efficient and maintainable configuration.

Last modified April 19, 2024: 0.0.4 (12b2895)