ACIL FM
Dark
Refresh
Current DIR:
/usr/share/ansible/collections/ansible_collections/community/general/plugins/callback
/
usr
share
ansible
collections
ansible_collections
community
general
plugins
callback
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
cgroup_memory_recap.py
4.12 MB
chmod
View
DL
Edit
Rename
Delete
context_demo.py
1.88 MB
chmod
View
DL
Edit
Rename
Delete
counter_enabled.py
10.95 MB
chmod
View
DL
Edit
Rename
Delete
dense.py
17.1 MB
chmod
View
DL
Edit
Rename
Delete
diy.py
52.32 MB
chmod
View
DL
Edit
Rename
Delete
elastic.py
14.17 MB
chmod
View
DL
Edit
Rename
Delete
hipchat.py
8.04 MB
chmod
View
DL
Edit
Rename
Delete
jabber.py
3.94 MB
chmod
View
DL
Edit
Rename
Delete
loganalytics.py
8.24 MB
chmod
View
DL
Edit
Rename
Delete
logdna.py
6.77 MB
chmod
View
DL
Edit
Rename
Delete
logentries.py
10.87 MB
chmod
View
DL
Edit
Rename
Delete
logstash.py
13.51 MB
chmod
View
DL
Edit
Rename
Delete
log_plays.py
4.23 MB
chmod
View
DL
Edit
Rename
Delete
mail.py
8.81 MB
chmod
View
DL
Edit
Rename
Delete
nrdp.py
6.57 MB
chmod
View
DL
Edit
Rename
Delete
null.py
911 B
chmod
View
DL
Edit
Rename
Delete
opentelemetry.py
20.92 MB
chmod
View
DL
Edit
Rename
Delete
say.py
4.13 MB
chmod
View
DL
Edit
Rename
Delete
selective.py
10.72 MB
chmod
View
DL
Edit
Rename
Delete
slack.py
8.18 MB
chmod
View
DL
Edit
Rename
Delete
splunk.py
9.78 MB
chmod
View
DL
Edit
Rename
Delete
sumologic.py
6.3 MB
chmod
View
DL
Edit
Rename
Delete
syslog_json.py
4.61 MB
chmod
View
DL
Edit
Rename
Delete
unixy.py
10.82 MB
chmod
View
DL
Edit
Rename
Delete
yaml.py
4.86 MB
chmod
View
DL
Edit
Rename
Delete
Edit file: /usr/share/ansible/collections/ansible_collections/community/general/plugins/callback/logdna.py
# -*- coding: utf-8 -*- # Copyright (c) 2018, Samir Musali <samir.musali@logdna.com> # 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: Unknown (!UNKNOWN) name: logdna type: notification short_description: Sends playbook logs to LogDNA description: - This callback will report logs from playbook actions, tasks, and events to LogDNA (U(https://app.logdna.com)). requirements: - LogDNA Python Library (U(https://github.com/logdna/python)) - whitelisting in configuration options: conf_key: required: true description: LogDNA Ingestion Key. type: string env: - name: LOGDNA_INGESTION_KEY ini: - section: callback_logdna key: conf_key plugin_ignore_errors: required: false description: Whether to ignore errors on failing or not. type: boolean env: - name: ANSIBLE_IGNORE_ERRORS ini: - section: callback_logdna key: plugin_ignore_errors default: false conf_hostname: required: false description: Alternative Host Name; the current host name by default. type: string env: - name: LOGDNA_HOSTNAME ini: - section: callback_logdna key: conf_hostname conf_tags: required: false description: Tags. type: string env: - name: LOGDNA_TAGS ini: - section: callback_logdna key: conf_tags default: ansible ''' import logging import json import socket from uuid import getnode from ansible.plugins.callback import CallbackBase from ansible.parsing.ajson import AnsibleJSONEncoder try: from logdna import LogDNAHandler HAS_LOGDNA = True except ImportError: HAS_LOGDNA = False # Getting MAC Address of system: def get_mac(): mac = "%012x" % getnode() return ":".join(map(lambda index: mac[index:index + 2], range(int(len(mac) / 2)))) # Getting hostname of system: def get_hostname(): return str(socket.gethostname()).split('.local', 1)[0] # Getting IP of system: def get_ip(): try: return socket.gethostbyname(get_hostname()) except Exception: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: s.connect(('10.255.255.255', 1)) IP = s.getsockname()[0] except Exception: IP = '127.0.0.1' finally: s.close() return IP # Is it JSON? def isJSONable(obj): try: json.dumps(obj, sort_keys=True, cls=AnsibleJSONEncoder) return True except Exception: return False # LogDNA Callback Module: class CallbackModule(CallbackBase): CALLBACK_VERSION = 0.1 CALLBACK_TYPE = 'notification' CALLBACK_NAME = 'community.general.logdna' CALLBACK_NEEDS_WHITELIST = True def __init__(self, display=None): super(CallbackModule, self).__init__(display=display) self.disabled = True self.playbook_name = None self.playbook = None self.conf_key = None self.plugin_ignore_errors = None self.conf_hostname = None self.conf_tags = None def set_options(self, task_keys=None, var_options=None, direct=None): super(CallbackModule, self).set_options(task_keys=task_keys, var_options=var_options, direct=direct) self.conf_key = self.get_option('conf_key') self.plugin_ignore_errors = self.get_option('plugin_ignore_errors') self.conf_hostname = self.get_option('conf_hostname') self.conf_tags = self.get_option('conf_tags') self.mac = get_mac() self.ip = get_ip() if self.conf_hostname is None: self.conf_hostname = get_hostname() self.conf_tags = self.conf_tags.split(',') if HAS_LOGDNA: self.log = logging.getLogger('logdna') self.log.setLevel(logging.INFO) self.options = {'hostname': self.conf_hostname, 'mac': self.mac, 'index_meta': True} self.log.addHandler(LogDNAHandler(self.conf_key, self.options)) self.disabled = False else: self.disabled = True self._display.warning('WARNING:\nPlease, install LogDNA Python Package: `pip install logdna`') def metaIndexing(self, meta): invalidKeys = [] ninvalidKeys = 0 for key, value in meta.items(): if not isJSONable(value): invalidKeys.append(key) ninvalidKeys += 1 if ninvalidKeys > 0: for key in invalidKeys: del meta[key] meta['__errors'] = 'These keys have been sanitized: ' + ', '.join(invalidKeys) return meta def sanitizeJSON(self, data): try: return json.loads(json.dumps(data, sort_keys=True, cls=AnsibleJSONEncoder)) except Exception: return {'warnings': ['JSON Formatting Issue', json.dumps(data, sort_keys=True, cls=AnsibleJSONEncoder)]} def flush(self, log, options): if HAS_LOGDNA: self.log.info(json.dumps(log), options) def sendLog(self, host, category, logdata): options = {'app': 'ansible', 'meta': {'playbook': self.playbook_name, 'host': host, 'category': category}} logdata['info'].pop('invocation', None) warnings = logdata['info'].pop('warnings', None) if warnings is not None: self.flush({'warn': warnings}, options) self.flush(logdata, options) def v2_playbook_on_start(self, playbook): self.playbook = playbook self.playbook_name = playbook._file_name def v2_playbook_on_stats(self, stats): result = dict() for host in stats.processed.keys(): result[host] = stats.summarize(host) self.sendLog(self.conf_hostname, 'STATS', {'info': self.sanitizeJSON(result)}) def runner_on_failed(self, host, res, ignore_errors=False): if self.plugin_ignore_errors: ignore_errors = self.plugin_ignore_errors self.sendLog(host, 'FAILED', {'info': self.sanitizeJSON(res), 'ignore_errors': ignore_errors}) def runner_on_ok(self, host, res): self.sendLog(host, 'OK', {'info': self.sanitizeJSON(res)}) def runner_on_unreachable(self, host, res): self.sendLog(host, 'UNREACHABLE', {'info': self.sanitizeJSON(res)}) def runner_on_async_failed(self, host, res, jid): self.sendLog(host, 'ASYNC_FAILED', {'info': self.sanitizeJSON(res), 'job_id': jid}) def runner_on_async_ok(self, host, res, jid): self.sendLog(host, 'ASYNC_OK', {'info': self.sanitizeJSON(res), 'job_id': jid})
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply