ansible/test/integration/targets/win_psmodule/tasks/setup.yml
2019-03-11 05:43:21 +10:00

115 lines
3 KiB
YAML

# Sets up 2 local repos that contains mock packages for testing.
#
# PSRepo 1 contains
# ansible-test1 - 1.0.0
# ansible-test1 - 1.0.5
# ansible-test1 - 1.1.0
# ansible-test2 - 1.0.0
# ansible-test2 - 1.0.1 (Not signed for skip_publisher tests)
# ansible-test2 - 1.1.0-beta1
# ansible-clobber - 0.1.0
#
# PSRepo 2 contains
# ansible-test2 - 1.0.0
#
# These modules will have the following cmdlets
# ansible-test1
# Get-AnsibleTest1
#
# ansible-test2
# Get-AnsibleTest2
#
# ansible-clobber
# Enable-PSTrace (clobbers the Enable-PSTrace cmdlet)
#
# All cmdlets return
# [PSCustomObject]@{
# Name = "the name of the module"
# Version = "the version of the module"
# Repo = "the repo where the module was sourced from"
# }
---
- name: create test repo folders
win_file:
path: '{{ remote_tmp_dir }}\{{ item }}'
state: directory
loop:
- PSRepo 1
- PSRepo 2
- name: register test repos
win_psrepository:
name: '{{ item.name }}'
source: '{{ remote_tmp_dir }}\{{ item.name }}'
installation_policy: '{{ item.policy }}'
notify: remove registered repos
loop:
- name: PSRepo 1
policy: trusted
- name: PSRepo 2
policy: untrusted
- name: remove PSGallery repository
win_psrepository:
name: PSGallery
state: absent
notify: re-add PSGallery repository
- name: create custom openssl conf
copy:
src: openssl.conf
dest: '{{ output_dir }}/openssl.conf'
delegate_to: localhost
- name: get absolute path of output_dir for script
shell: echo {{ output_dir }}
delegate_to: localhost
register: output_dir_abs
- name: create certificates for code signing
script: setup_certs.sh
args:
chdir: '{{ output_dir_abs.stdout }}'
delegate_to: localhost
- name: copy the CA and sign certificates
win_copy:
src: '{{ output_dir }}/{{ item }}'
dest: '{{ remote_tmp_dir }}\'
loop:
- ca.pem
- sign.pem
- sign.pfx
- name: import the CA key to the trusted root store
win_certificate_store:
path: '{{ remote_tmp_dir }}\ca.pem'
state: present
store_location: LocalMachine
store_name: Root
register: ca_cert_import
notify: remove CA cert from trusted root store
- name: import the sign key to the trusted publisher store
win_certificate_store:
path: '{{ remote_tmp_dir }}\sign.pem'
state: present
store_location: LocalMachine
store_name: TrustedPublisher
register: sign_cert_import
notify: remove signing key from trusted publisher store
- name: copy across module template files
win_copy:
src: module/
dest: '{{ remote_tmp_dir }}'
# Used in the script below to create the .nupkg for each test module
- name: download NuGet binary for module publishing
win_get_url:
url: https://s3.amazonaws.com/ansible-ci-files/test/integration/targets/win_psmodule/nuget.exe
dest: '{{ remote_tmp_dir }}'
- name: create test PowerShell modules
script: setup_modules.ps1 "{{ remote_tmp_dir }}"
notify: remove test packages