FastHandle - IT Operations Examples

FastHandle is fast operation tools for infrastructure configurations and tests.

User Tools

Site Tools


Sidebar


Top     SiteMap

Manager Server

Target Server

$FHHOME/bin/xxx.sh | xxxx.exp













.

preparation:fhhome:init.py.html



Top#Preparation

$FHHOME/linux/fabfile/__init__.py

fabfile/__init__.py

import sys, os, glob, select, importlib, re
from fabric.api import *
from fabric.contrib import files
from datetime import datetime

#======================================================
# SSH User
#======================================================
hostname = os.uname()[1]

if hostname == "fasthandle-1":
    env.user = 'fasthandle'
    env.password = 'fastpass'
elif hostname == "stg-fasthandle-1":
    env.user = 'fasthandle'
    env.password = 'fastpass'
elif hostname == "dev-fasthandle-1":
    env.user = 'fasthandle'
    env.key_filename = '$FHHOME/key/id_rsa.fasthandle.dev-fasthandle-1'
    #env.password = 'passphrase-for-key'

#======================================================
# Variable
#======================================================
FHHOME=os.environ["FHHOME"]

env.warn_only = True
env.port = 22
env.eagerly_disconnect = True

#don't create *.pyc without __init__.pyc
sys.dont_write_bytecode = True



#======================================================
#======================================================
# standard in for example echo x.x.x.x
if select.select([sys.stdin,],[],[],0.0)[0]:
    lines = sys.stdin.read().splitlines()
    env.hosts = filter(bool, lines)


#FastHandle Operation History to log file
TIME = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
yymm = datetime.now().strftime('%Y%m')

f=open("%s/log/fab.%s.log" % (FHHOME,yymm) ,"a")

if env.hosts == []:
  f.write("%s stdin-null " % TIME)
  f.write(' '.join(str(p) for p in sys.argv))
  f.write("\n")

for p in env.hosts:
  f.write("%s %s " % (TIME,p))
  f.write(' '.join(str(p) for p in sys.argv))
  f.write("\n")
f.close()


# auto import *.py
# Ref. https://gist.github.com/fereria/3331554f4c480679716b#file-__init__-py
pathThisFile = os.path.dirname(os.path.abspath(__file__))

def loadModule():

    myself = sys.modules[__name__]

    #print __name__

    mod_paths = glob.glob(os.path.join(pathThisFile, '*.py'))
    for py_file in mod_paths:
        mod_name = os.path.splitext(os.path.basename(py_file))[0]
        if re.search(".*__init__.*",mod_name) is None:
            mod = importlib.import_module(__name__+ "." + mod_name)
            #for m in mod.__dict__.keys():
                #if not m in ['__builtins__', '__doc__', '__file__', '__name__', '__package__']:
                    #myself.__dict__[m] = mod.__dict__[m]
loadModule()




Top#Preparation



Top#Preparation



preparation/fhhome/init.py.html.txt ยท Last modified: 2019/02/13 00:18 by kurihara