Server IP : 85.214.239.14 / Your IP : 3.149.255.21 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/containers/podman/plugins/modules/ |
Upload File : |
#!/usr/bin/python # coding: utf-8 -*- # Copyright (c) 2021, Sagi Shnaidman <sshnaidm@redhat.com> # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = r''' module: podman_export short_description: Export a podman container author: Sagi Shnaidman (@sshnaidm) description: - podman export exports the filesystem of a container and saves it as a tarball on the local machine options: dest: description: - Path to export container to. type: str required: true container: description: - Container to export. type: str required: true force: description: - Force saving to file even if it exists. type: bool default: True executable: description: - Path to C(podman) executable if it is not in the C($PATH) on the machine running C(podman) default: 'podman' type: str requirements: - "Podman installed on host" ''' RETURN = ''' ''' EXAMPLES = ''' # What modules does for example - containers.podman.podman_export: dest: /path/to/tar/file container: container-name ''' import os # noqa: E402 from ansible.module_utils.basic import AnsibleModule # noqa: E402 from ..module_utils.podman.common import remove_file_or_dir # noqa: E402 def export(module, executable): changed = False command = [executable, 'export'] command += ['-o=%s' % module.params['dest'], module.params['container']] if module.params['force']: dest = module.params['dest'] if os.path.exists(dest): changed = True if module.check_mode: return changed, '', '' try: remove_file_or_dir(dest) except Exception as e: module.fail_json(msg="Error deleting %s path: %s" % (dest, e)) else: changed = not os.path.exists(module.params['dest']) if module.check_mode: return changed, '', '' rc, out, err = module.run_command(command) if rc != 0: module.fail_json(msg="Error exporting container %s: %s" % ( module.params['container'], err)) return changed, out, err def main(): module = AnsibleModule( argument_spec=dict( dest=dict(type='str', required=True), container=dict(type='str', required=True), force=dict(type='bool', default=True), executable=dict(type='str', default='podman') ), supports_check_mode=True, ) executable = module.get_bin_path(module.params['executable'], required=True) changed, out, err = export(module, executable) results = { "changed": changed, "stdout": out, "stderr": err, } module.exit_json(**results) if __name__ == '__main__': main()