Server IP : 85.214.239.14 / Your IP : 3.137.182.206 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 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/community/general/plugins/connection/ |
Upload File : |
# -*- coding: utf-8 -*- # Based on jail.py # (c) 2013, Michael Scherer <misc@zarb.org> # (c) 2015, Toshio Kuratomi <tkuratomi@ansible.com> # (c) 2016, Stephan Lohse <dev-github@ploek.org> # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later from __future__ import (absolute_import, division, print_function) __metaclass__ = type DOCUMENTATION = ''' author: Stephan Lohse (!UNKNOWN) <dev-github@ploek.org> name: iocage short_description: Run tasks in iocage jails description: - Run commands or put/fetch files to an existing iocage jail options: remote_addr: description: - Path to the jail vars: - name: ansible_host - name: ansible_iocage_host remote_user: description: - User to execute as inside the jail vars: - name: ansible_user - name: ansible_iocage_user ''' import subprocess from ansible_collections.community.general.plugins.connection.jail import Connection as Jail from ansible.module_utils.common.text.converters import to_native from ansible.errors import AnsibleError from ansible.utils.display import Display display = Display() class Connection(Jail): """ Local iocage based connections """ transport = 'community.general.iocage' def __init__(self, play_context, new_stdin, *args, **kwargs): self.ioc_jail = play_context.remote_addr self.iocage_cmd = Jail._search_executable('iocage') jail_uuid = self.get_jail_uuid() kwargs[Jail.modified_jailname_key] = 'ioc-{0}'.format(jail_uuid) display.vvv(u"Jail {iocjail} has been translated to {rawjail}".format( iocjail=self.ioc_jail, rawjail=kwargs[Jail.modified_jailname_key]), host=kwargs[Jail.modified_jailname_key]) super(Connection, self).__init__(play_context, new_stdin, *args, **kwargs) def get_jail_uuid(self): p = subprocess.Popen([self.iocage_cmd, 'get', 'host_hostuuid', self.ioc_jail], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) stdout, stderr = p.communicate() if stdout is not None: stdout = to_native(stdout) if stderr is not None: stderr = to_native(stderr) # otherwise p.returncode would not be set p.wait() if p.returncode != 0: raise AnsibleError(u"iocage returned an error: {0}".format(stdout)) return stdout.strip('\n')