一、开发目标命令格式如下:

二、目录结构

三、代码注解

01、salt.py 只是一个入口,没干什么事情

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:luoahong import os, sys if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Stark.settings")
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# print(BASE_DIR)
sys.path.append(BASE_DIR)
from Arya.action_list import actions
from Arya.backends.utils import ArgvManagement obj = ArgvManagement(sys.argv)
 

02、action_list.py 路由分发器

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:luoahong from Arya.plugins import cmd,state
actions = {
'cmd': cmd.CMD,
'state':state.State
}  

03、 建了一个目录backends目录下 创建一个utils.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:luoahong from Arya import action_list
import django
django.setup() from Stark import settings
from Arya import models
class ArgvManagement(object):
'''
接收用户指令并分配到相应模块
'''
def __init__(self,argvs):
self.argvs = argvs
self.argv_parse() def help_msg(self):
print("Available modules:")
for registered_module in action_list.actions:
print(" %s" % registered_module)
exit()
def argv_parse(self):
print(self.argvs)
if len(self.argvs) <2:
self.help_msg()
module_name = self.argvs[1]
if '.' in module_name:
mod_name,mod_method = module_name.split('.')
module_instance = action_list.actions.get(mod_name)
if module_instance:#matched
module_instance(self.argvs,models,settings) else:
exit("invalid module name argument")
 

04、plugins 建立一个目录创建两个类

1、 cmd.py

from Arya.backends.base_module import BaseSaltModule
class CMD(BaseSaltModule):
print('in cmd module ')

2、state.py

from Arya.plugins import cmd,state

from Arya.backends.base_module import BaseSaltModule
class State(BaseSaltModule):
print('in state module ')

四、命令行运行截图

saltstack主机管理项目:计主机管理项目命令分发器(三)的更多相关文章

  1. saltstack主机管理项目:主机管理项目架构设计(二)

    1.salt架构图 https://docs.saltstack.com/en/getstarted/system/plugins.html plug-ins(左边):场景可插拔 subsystem- ...

  2. 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

    一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...

  3. [转]3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】

    本文转自:http://www.cnblogs.com/jirigala/archive/2010/10/07/1845275.html 2010-10-07 21:39 by 通用C#系统架构, 5 ...

  4. http://182.92.241.20/mypro/login 偶的点金项目细化分包管理平台即将上线!!

    http://182.92.241.20/mypro/login            偶的点金项目细化分包管理平台即将上线!! 敬请期待! 项目外包利器 项目管理利器

  5. 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

    上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...

  6. [课程分享]IT软件项目管理(企业项目甘特如是评价、维护管理、文档管理、风险管理、人力资源管理)

    [课程分享]IT件项目管理(企业项目甘特图案例评价.维护管理.文档管理.风险管理.人力资源管理) 对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 课程讲师:丁冬博士 课程分类:Jav ...

  7. IT项目各阶段管理

  8. linkinFrame--测试项目添加git管理

    OK,前面一篇博客,已经搭建好了项目的基础的结构.现在我们添加一个简单的servlet来测试下项目能不能跑,然后在讲项目添加到coding上用git管理. 1,我们编写一个servlet,编写一个js ...

  9. java传统web项目添加maven管理jar包,log4j无法正常输出日志

    本文适合1年以上编程基础的开发人员阅读,非技术创新,可作为故障排除实录参考/收藏. 背景 笔者最近在给公司一个老的web项目改造升级,项目使用springmvc+mybatis,由于项目比较久远,没有 ...

随机推荐

  1. LeetCode算法题-Binary Search(Java实现)

    这是悦乐书的第297次更新,第316篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第165题(顺位题号是704).给定n个元素的排序(按升序)整数数组nums和目标值,编 ...

  2. 【Python 补充01】Python运算符

    Python运算符 举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. 1.算术运算符 + - * / # 加减乘除 % # 取模(返回除 ...

  3. ubuntu下安装飞鸽传书

    1.从官网下载Linux版本飞鸽传书(http://www.ipmsg.org.cn/) 2.解压后执行 ./QIpmsg 若报错 libstdc++.so.6: version `CXXABI_AR ...

  4. C# — 创建Windows服务进阶版

    1.新建一个Windows服务项目:FaceService 2.将service1.cs重命名为FaceService.cs,然后在主界面右击鼠标,选择添加安装程序 3.鼠标选择serviceInst ...

  5. Skyline 7 版本TerraExplorer Pro二次开发快速入门

    年底了,给大家整理了一下Skyline 7版本的二次开发学习初级入门教程,献给那些喜欢学习的年轻朋友. 我这整理的是Web控件版本的开发示例,里面页面代码保存成html,都可以直接运行的. 测试使用的 ...

  6. springBoot2.0+redis+fastJson+自定义注解实现方法上添加过期时间

    springBoot2.0集成redis实例 一.首先引入项目依赖的maven jar包,主要包括 spring-boot-starter-data-redis包,这个再springBoot2.0之前 ...

  7. 静态代理与JDK动态代理

    demo地址: https://github.com/ZbLeaning/leaning 代理: 为其他对象提供一种代理以控制对这个对象的访问.分为静态代理和动态代理.代理模式的目的就是为真实业务对象 ...

  8. C#中字节数组(byte[])和字符串相互转换

    转换过程主要使用到System.Text.Encoding命名空间下的类 1. 字符串转换成字节数组byte[]: string str = "This is test string&quo ...

  9. 进程与线程的通信机制----Queue

    进程运行时候变量是隔离的,线程间共享全局变量. 进程: from multiprocessing import Process from threading import Thread def get ...

  10. OpenStack-Glance(3)

    一. Glance功能 传统 IT 环境下,安装一个系统是要么从CD安装,要么用 Ghost 等克隆工具恢复.有如下几个问题: 如果要安装的系统多了效率就很低 时间长,工作量大 安装完还要进行手工配置 ...