Skip to main content

Tool to manage remote systems and services

Project description

Build Status Code Coverage Code Health

python-rrmngmnt

Remote Resources MaNaGeMeNT

Intro

This tool helps you manage remote machines and services running on that. It is targeted to Linux based machines. All is done via SSH connection, that means SSH server must be running there already.

from rrmngmnt import Host, RootUser

h = Host("10.11.12.13")
h.users.append(RootUser('123456'))
exec = h.executor()
print exec.run_cmd(['echo', 'Hello World'])

Features

List of provided interfaces to manage resources on machine, and examples.

Filesystem

Basic file operations, you can find there subset of python ‘os’ module related to files.

print h.fs.exists("/path/to/file")
h.fs.chown("/path/to/file", "root", "root")
h.fs.chmod("/path/to/file", "644")
h.fs.unlink("/path/to/file")

In additional there are methods to fetch / put file from / to remote system to / from local system.

h.fs.get("/path/to/remote/file", "/path/to/local/file/or/target/dir")
h.fs.put("/path/to/local/file", "/path/to/remote/file/or/target/dir")

There is one special method which allows transfer file between hosts.

h1.fs.transfer(
    "/path/to/file/on/h1",
    h2, "/path/to/file/on/h2/or/target/dir",
)

You can also mount devices.

with h.fs.mount_point(
    '//example.com/share', opts='ro,guest',
    fstype='cifs', target='/mnt/netdisk'
) as mp:
    h.fs.listdir(mp.target) # list mounted directory
    mp.remount('rw,sync,guest') # remount with different options
    h.fs.touch('%s/new_file' % mp.target) # touch file

Network

It allows to manage network configuration.

print h.network.hostname
h.network.hostname = "my.machine.org"
print h.network.all_interfaces()
print h.network.list_bridges()

Package Management

It encapsulates various package managements. It is able to determine which package management to use. You can still specify package management explicitly.

Implemented managements:

  • APT

  • YUM

  • DNF

  • RPM

# install htop package using implicit management
h.package_management.install('htop')
# remove htop package using rpm explicitly
h.package_management('rpm').remove('htop')

System Services

You can toggle system services, it encapsulates various service managements. It is able to determine which service management to use in most cases.

Implemented managements:

  • Systemd

  • SysVinit

  • InitCtl

if h.service('httpd').status():
    h.service('httpd').stop()
if h.service('httpd').is_enabled():
    h.service('httpd').disable()

Operating System Info

Host provide os attribute which allows obtain basic operating system info. Note that os.release_info depends on systemd init system.

print h.os.distribution
# Distribution(distname='Fedora', version='23', id='Twenty Three')

print h.os.release_info
# {'HOME_URL': 'https://fedoraproject.org/',
#  'ID': 'fedora',
#  'NAME': 'Fedora',
#  'PRETTY_NAME': 'Fedora 23 (Workstation Edition)',
#  'VARIANT': 'Workstation Edition',
#  'VARIANT_ID': 'workstation',
#  'VERSION': '23 (Workstation Edition)',
#  'VERSION_ID': '23',
#  ...
# }

print h.os.release_str
# Fedora release 23 (Twenty Three)

Storage Management

It is in PROGRESS state. Planed are NFS & LVM services.

Power Management

Give you possibility to control host power state, you can restart, poweron, poweroff host and get host power status.

Implemented managements:

  • SSH

  • IPMI

ipmi_user = User(pm_user, pm_password)
ipmi_params = {
    'pm_if_type': 'lan',
    'pm_address': 'test-mgmt.testdomain',
    'user': ipmi_user
}
h.add_power_manager(
    power_manager.IPMI_TYPE, **ipmi_params
)
# restart host via ipmitool
h.power_manager.restart()

Requires

  • paramiko

  • netaddr

  • six

Install

python setup.py devop

Test

tox

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

python-rrmngmnt-0.1.6.zip (60.8 kB view details)

Uploaded Source

python-rrmngmnt-0.1.6.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

python_rrmngmnt-0.1.6-py2.7.egg (74.8 kB view details)

Uploaded Source

File details

Details for the file python-rrmngmnt-0.1.6.zip.

File metadata

File hashes

Hashes for python-rrmngmnt-0.1.6.zip
Algorithm Hash digest
SHA256 eb56a0d1ada7811bcf82a7eb797b63577e044a0a94f4d49b4895f1b6c5711e29
MD5 d9442e0ef693b654d46abfaadc19e3d5
BLAKE2b-256 e4287ddc5a6a8e83c697c2f2de25796bbc13016ea6b7fbf8f2bd2a227e06b93a

See more details on using hashes here.

File details

Details for the file python-rrmngmnt-0.1.6.tar.gz.

File metadata

File hashes

Hashes for python-rrmngmnt-0.1.6.tar.gz
Algorithm Hash digest
SHA256 f143af246d660fd63e19aca917eba2bc94632383005d4047e6ebfa46f58ef649
MD5 e475d2fc4e8ae72fe10553446b029916
BLAKE2b-256 f8840f4299316c4fb5ce8594c4510004d769dc34ab1ca35275fb10f734013662

See more details on using hashes here.

File details

Details for the file python_rrmngmnt-0.1.6-py2.7.egg.

File metadata

File hashes

Hashes for python_rrmngmnt-0.1.6-py2.7.egg
Algorithm Hash digest
SHA256 f302e6d90fd29ccfb726821c4b3711eab0629a11efc6734f2755040d3564e720
MD5 8291bfeeab87318cbbbdd920b3cf7b36
BLAKE2b-256 3e4cb4cf1f70a0b71a8947525d71e5bae627b07cbfd9ef8367734ca3647eec4b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page