Server IP : 85.214.239.14 / Your IP : 3.133.153.224 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/lookup/ |
Upload File : |
# -*- coding: utf-8 -*- # Copyright (c) 2017, Juan Manuel Parrilla <jparrill@redhat.com> # Copyright (c) 2012-17 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: - Juan Manuel Parrilla (@jparrill) name: hiera short_description: get info from hiera data requirements: - hiera (command line utility) description: - Retrieves data from an Puppetmaster node using Hiera as ENC. options: _terms: description: - The list of keys to lookup on the Puppetmaster. type: list elements: string required: true executable: description: - Binary file to execute Hiera. default: '/usr/bin/hiera' env: - name: ANSIBLE_HIERA_BIN config_file: description: - File that describes the hierarchy of Hiera. default: '/etc/hiera.yaml' env: - name: ANSIBLE_HIERA_CFG # FIXME: incomplete options .. _terms? environment/fqdn? ''' EXAMPLES = """ # All this examples depends on hiera.yml that describes the hierarchy - name: "a value from Hiera 'DB'" ansible.builtin.debug: msg: "{{ lookup('community.general.hiera', 'foo') }}" - name: "a value from a Hiera 'DB' on other environment" ansible.builtin.debug: msg: "{{ lookup('community.general.hiera', 'foo environment=production') }}" - name: "a value from a Hiera 'DB' for a concrete node" ansible.builtin.debug: msg: "{{ lookup('community.general.hiera', 'foo fqdn=puppet01.localdomain') }}" """ RETURN = """ _raw: description: - a value associated with input key type: list elements: str """ from ansible.plugins.lookup import LookupBase from ansible.utils.cmd_functions import run_cmd from ansible.module_utils.common.text.converters import to_text class Hiera(object): def __init__(self, hiera_cfg, hiera_bin): self.hiera_cfg = hiera_cfg self.hiera_bin = hiera_bin def get(self, hiera_key): pargs = [self.hiera_bin] pargs.extend(['-c', self.hiera_cfg]) pargs.extend(hiera_key) rc, output, err = run_cmd("{0} -c {1} {2}".format( self.hiera_bin, self.hiera_cfg, hiera_key[0])) return to_text(output.strip()) class LookupModule(LookupBase): def run(self, terms, variables=None, **kwargs): self.set_options(var_options=variables, direct=kwargs) hiera = Hiera(self.get_option('config_file'), self.get_option('executable')) ret = [hiera.get(terms)] return ret