saltstack主机管理项目:计主机管理项目命令分发器(三)
一、开发目标命令格式如下:

二、目录结构

三、代码注解
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主机管理项目:计主机管理项目命令分发器(三)的更多相关文章
- saltstack主机管理项目:主机管理项目架构设计(二)
1.salt架构图 https://docs.saltstack.com/en/getstarted/system/plugins.html plug-ins(左边):场景可插拔 subsystem- ...
- 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架
一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...
- [转]3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
本文转自:http://www.cnblogs.com/jirigala/archive/2010/10/07/1845275.html 2010-10-07 21:39 by 通用C#系统架构, 5 ...
- http://182.92.241.20/mypro/login 偶的点金项目细化分包管理平台即将上线!!
http://182.92.241.20/mypro/login 偶的点金项目细化分包管理平台即将上线!! 敬请期待! 项目外包利器 项目管理利器
- 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群
上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...
- [课程分享]IT软件项目管理(企业项目甘特如是评价、维护管理、文档管理、风险管理、人力资源管理)
[课程分享]IT件项目管理(企业项目甘特图案例评价.维护管理.文档管理.风险管理.人力资源管理) 对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 课程讲师:丁冬博士 课程分类:Jav ...
- IT项目各阶段管理
- linkinFrame--测试项目添加git管理
OK,前面一篇博客,已经搭建好了项目的基础的结构.现在我们添加一个简单的servlet来测试下项目能不能跑,然后在讲项目添加到coding上用git管理. 1,我们编写一个servlet,编写一个js ...
- java传统web项目添加maven管理jar包,log4j无法正常输出日志
本文适合1年以上编程基础的开发人员阅读,非技术创新,可作为故障排除实录参考/收藏. 背景 笔者最近在给公司一个老的web项目改造升级,项目使用springmvc+mybatis,由于项目比较久远,没有 ...
随机推荐
- 高端内存映射之vmalloc分配内存中不连续的页--Linux内存管理(十九)
1 内存中不连续的页的分配 根据上文的讲述, 我们知道物理上连续的映射对内核是最好的, 但并不总能成功地使用. 在分配一大块内存时, 可能竭尽全力也无法找到连续的内存块. 在用户空间中这不是问题,因为 ...
- Linux内存描述之内存区域zone--Linux内存管理(三)
1 内存管理域zone 为了支持NUMA模型,也即CPU对不同内存单元的访问时间可能不同,此时系统的物理内存被划分为几个节点(node), 一个node对应一个内存簇bank,即每个内存簇被认为是一个 ...
- c/c++ 重载运算符 类型转换运算符
重载运算符 类型转换运算符 问题:能不能把一个类型A的对象a,转换成另一个类型B的对象b呢?? 是可以的.这就必须要用类型A的类型转换运算符(conversion operator) 下面的opera ...
- c/c++ linux epoll系列2 利用epoll_wait查看是否可以送信
linux epoll系列2 利用epoll_wait查看是否可以送信 write函数本来是非阻塞函数,但是当缓存区被写满后,再往缓存区里写的时候,就必须等待缓存区再次变成可写,所以这是write就变 ...
- Linux 通过编译安装apache服务以及配置
Linux 编译安装apache服务 一.安装 1.通过编译安装,首先需要下载源代码安装包 apache下载链接:http://httpd.apache.org/download.cgi 2.解开源代 ...
- android 实现点击edittext的“小眼睛”切换明密文
android 实现点击edittext的“小眼睛”切换明密文 版权声明:本文为博主原创文章,未经博主允许不得转载. 很多时候,我们为了用户的隐私安全,需要在密码输入的时候,显示密文.为了更 ...
- Python—kmeans算法学习笔记
一. 什么是聚类 聚类简单的说就是要把一个文档集合根据文档的相似性把文档分成若干类,但是究竟分成多少类,这个要取决于文档集合里文档自身的性质.下面这个图就是一个简单的例子,我们可以把不同的文档聚合 ...
- sass的使用
1.声明变量-全局声明-局部声明 中划线或下划线两种用法相互兼容 $nav-color: #F90; $highlight-border: 1px solid $nav-color; nav{ $ ...
- 整合Spring5+Struts2.5+Hibernate5+maven
1. 使用Eclipse创建Maven项目 2. 配置pom.xml引入需要的依赖包 <dependencies> <dependency> <groupId>ju ...
- css3 box-shadow阴影(外阴影与外发光)讲解
基础说明: 外阴影:box-shadow: X轴 Y轴 Rpx color; 属性说明(顺序依次对应): 阴影的X轴(可以使用负值) 阴影的Y轴(可以使用负值) 阴影 ...