爱猫家

基于saltstack(salt-ssh)开发的somssh发布平台

前端使用bootstrap,针对公司java项目发布而开发
目前所在公司使用蓝鲸进行项目更新,而配置文件(不同区域服务器配置文件差异)、服务启停等都是手动处理,效率低下

此发布平台目前完成的功能有:
项目版本更新回滚:以工单形式创建任务,支持发布前从nginx摘除后端、腾讯云负载均衡摘除后端,支持svn取包或者本地上传
项目进程管理:进程启动、重启、停止
配置文件更新回滚:根据机器各自区域属性获取各自的差异配置实现差异化管理、本地对比文件修改
日志审计:查看发布、回滚记录、人员登录记录等

Dashboard

...

django版本升级总会有一些方法变更
像获取models的所有field

django 1.8之前是通过这个方法直接获取field name:

model._meta.get_all_field_names()

而1.8及以后的版本则改为如下的方法:

model._meta.get_fields()

获取到的是model query,所以通常做法是这样的:

[f.name for f in MyModel._meta.get_fields()]

bootstrap的模态框默认是没有垂直居中的,网上有各种垂直居中的方法,甚至有的是暴力方法,直接修改bootstrap的js文件
这种方法实在太暴力了,所以推荐下面这种方法
Vertically Centering Bootstrap Modals

新建js文件,内容如下:

/**
 * Vertically center Bootstrap 3 modals so they aren't always stuck at the top
 */
$(function() {
    function reposition() {
        var modal = $(th...

之前部署oms运维平台一直没出现问题
但在新机器上部署完竟然抛出如下错误:

 File "/home/qitan/PycharmProjects/SOMS/deploy/saltapi.py", line 32, in postRequest
    opener = urllib2.urlopen(req)
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr...

为避免对数据库进行多次save,影响性能,可通过bulk_create()来进行批量插入数据到数据库

objs = [
    Message(
        recipient_number=e.mobile,
        content=batch.content,
        sender=e.contact_owner,
        billee=batch.user,
        sender_name=batch.sender_name
    )
    for e in q
]
msg = Message.objects.bulk_create(objs...

在配置saltstack的gitfs时,遇到如下错误:

WARNING: yacc table file version is out of date  
[py.warnings      ][WARNING ][7242] /usr/lib64/python2.7/site-packages/cffi/model.py:526: UserWarning: 'git_merge_tree_flag_t' has no values explicitly defined; next version will refuse to guess which integer ...

每次执行salt都会生成一个job,通过唯一的job id可以获取到job的执行状态或者Kill掉job
但在使用过程中发现kill_job或term_job都无法kill掉子进程

环境
salt-minion version < 2016.11.1

查看源码,kill_job或term_job都是调用saltutil.signal_job函数

# vim /usr/lib/python2.6/site-packages/salt/modules/saltutil.py
...
def signal_job(jid, sig):
    '''
    Se...

源码编译安装的php,在安装piwik依赖时会报如下错误

checking target system type... x86_64-unknown-linux-gnu
configure: error: Cannot find php-config. Please use --with-php-config=PATH

这里已经明确指出可以通过 --with-php-config来指定php-config的路径,所以解决的方法就是

[root@localhost]$ php composer.phar install --with-php-config=/usr/local/php/bi...

Zabbix Agentd进程存在,但是服务端无法与客户端正常通讯

查看zabbix日志

zabbix_agentd [11961]: cannot create Semaphore: [28] No space left on device
zabbix_agentd [11961]: unable to create mutex for log file
zabbix_agentd [11997]: cannot create Semaphore: [28] No space left on device
zabbix_agentd [11997]: unable to create...

Openldap和Gitlab的配置本文不再赘述
主要讲下gitlab和openldap的整合,同时测试一下openldap的连通性

修改gitlab配置,让其支持openldap认证

# cat /etc/gitlab/gitlab.rb |egrep -v "^#|^$"
...
external_url 'http://gitlab-server'
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<...

Hot Posts

Latest Comments

water 08月09日
 《基于saltstack开发的SOMSSH发布平台》 中的评论

版主https://github.com/qitan/SOMS 上边不是最新的吗?运行和你这显示的不一样哇。

打酱油的二师兄 05月08日
 《基于saltstack开发的SOMSSH发布平台》 中的评论

您好,想请教一下 配置salt-master 我这里把soms解压到了/data/wwwroot下 这个目录就是github中的SOMS项目?如果是的话,为什么没有/soms/saltconfig/*.conf的文件?

jja 09月25日
 《基于django的saltstack自动化运维平台SOMS》 中的评论

"上传的Html页面通过js限制了类型" 那个txt不是没有限制吗?所有的文件上传都提示上传失败

zander 07月21日
 《Django嵌套评论-icomments》 中的评论

这个好呀。学习一下,我是新手,才学django,收藏大神您了。

franjia 07月19日
 《基于django的saltstack自动化运维平台SOMS》 中的评论

你好,请问远程管理部分,目标主机是分组后的多个机器的话,执行命令后的返回信息如下: post tgt_select lcb-u-assets arg pwd check_type panel-group 源代码 tgt_select=lcb-u-assets&arg=pwd&check_type=panel-group 响应返回是{},空,是什么原因呢?