You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/windows/win_unzip.py

143 lines
4.5 KiB
Python

10 years ago
#!/usr/bin/python
# -*- coding: utf-8 -*-
# (c) 2015, Phil Schwartz <schwartzmx@gmail.com>
10 years ago
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# this is a windows documentation stub. actual code lives in the .ps1
# file of the same name
DOCUMENTATION = '''
---
module: win_unzip
version_added: ""
short_description: Unzips compressed files on the Windows node
description:
- Unzips compressed files, and can force reboot (if needed, i.e. such as hotfixes). Has ability to recursively unzip files within the src zip file provided using Read-Archive and piping to Expand-Archive (Using PSCX). If the destination directory does not exist, it will be created before unzipping the file. If a .zip file is specified as src and recurse is true then PSCX will be installed. Specifying rm parameter will allow removal of the src file after extraction.
10 years ago
options:
src:
10 years ago
description:
- File to be unzipped (provide absolute path)
10 years ago
required: true
default: null
aliases: []
dest:
description:
- Destination of zip file (provide absolute path of directory). If it does not exist, the directory will be created.
10 years ago
required: true
default: null
aliases: []
rm:
description:
- Remove the zip file, after unzipping
required: no
choices:
- true
- false
- yes
- no
10 years ago
default: false
aliases: []
recurse:
description:
- Recursively expand zipped files within the src file.
required: no
default: false
choices:
- true
- false
- yes
- no
aliases: []
10 years ago
restart:
description:
- Restarts the computer after unzip, can be useful for hotfixes such as http://support.microsoft.com/kb/2842230 (Restarts will have to be accounted for with wait_for module)
choices:
- true
- false
- yes
- no
10 years ago
required: false
default: false
aliases: []
author: Phil Schwartz
10 years ago
'''
EXAMPLES = '''
# This unzips a library that was downloaded with win_get_url, and removes the file after extraction
$ ansible -i hosts -m win_unzip -a "src=C:\\LibraryToUnzip.zip dest=C:\\Lib rm=true" all
10 years ago
# Playbook example
# Simple unzip
---
- name: Unzip a bz2 (BZip) file
win_unzip:
src: "C:\Users\Phil\Logs.bz2"
dest: "C:\Users\Phil\OldLogs"
# This playbook example unzips a .zip file and recursively decompresses the contained .gz files and removes all unneeded compressed files after completion.
---
- name: Unzip ApplicationLogs.zip and decompress all GZipped log files
hosts: all
gather_facts: false
tasks:
- name: Recursively decompress GZ files in ApplicationLogs.zip
win_unzip:
src: C:\Downloads\ApplicationLogs.zip
dest: C:\Application\Logs
recurse: yes
rm: true
# Install hotfix (self-extracting .exe)
10 years ago
---
- name: Install WinRM PowerShell Hotfix for Windows Server 2008 SP1
hosts: all
gather_facts: false
tasks:
- name: Grab Hotfix from URL
win_get_url:
url: 'http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix467402/7600/free/463984_intl_x64_zip.exe'
dest: 'C:\\463984_intl_x64_zip.exe'
- name: Unzip hotfix
win_unzip:
src: "C:\\463984_intl_x64_zip.exe"
10 years ago
dest: "C:\\Hotfix"
recurse: true
10 years ago
restart: true
- name: Wait for server reboot...
local_action:
module: wait_for
host={{ inventory_hostname }}
port={{ansible_ssh_port|default(5986)}}
delay=15
timeout=600
state=started
# Install PSCX to use for extracting a gz file
- name: Grab PSCX msi
win_get_url:
url: 'http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=pscx&DownloadId=923562&FileTime=130585918034470000&Build=20959'
dest: 'C:\\pscx.msi'
- name: Install PSCX
win_msi:
path: 'C:\\pscx.msi'
- name: Unzip gz log
win_unzip:
src: "C:\\Logs\\application-error-logs.gz"
dest: "C:\\ExtractedLogs\\application-error-logs"
10 years ago
'''