2015年7月30日星期四

利用saltstack 部署lnmp环境(yum版本)

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
利用saltstack 部署lnmp环境(yum版本)  阅读原文»

利用saltstack 部署lnmp环境(yum版本)

例行吐槽:有年月没更新博客了,最近太浮躁了,以前一起工作的小伙伴都找到新的东家了,薪资条那叫一个长,不开森了,都不带我[j_0004.gif]

#######################分隔线####################

一、简介

saltstack 是一个新基础设施管理工具,可以看做是强化的Func+弱化puppet的组合,间接的反映出了saltstack的两大功能:远程执行命令与配置管理,

saltstack是使用python开发的,非常简单易用和轻量级的管理工具,由master和minion构成,通过ZeroMQ进行通信

二、安装

安装时需要epel源的支持,请自行安装与当系统匹配的epel源

*:安装依赖包

  yum install python-jinja2 -y  

1、安装master端

  yum -y install salt-master enablerepr=epel-testing  

2、安装minion端

  yum -y install salt-minion enablerepr=epel-testing  

三、配置环境

a、master

1、修改本地绑定地址

  sed -ie 's/^#.*interface:.*/\  interface:  192.168.2.65/g' /etc/salt/master  

注:或是此处写上主机名,并绑定/etc/hosts文件

2、自动接收所有minion的请求

  sed -ie 's@^#\(auto_accept: \)False@\  \1true@g' /etc/salt/master  

b、minion

1、指向master

  sed -ie 's@^#.*master:.*@\  master:  salt@g' /etc/salt/minion  

注:由于saltstack配置文件所限,当启用每一个配置参数时对格式有严格要求,书写时请注意

四、环境测试

1、分别在master/minion中启动服务

  #service salt-master start  #service salt-minion start  

说明:

saltstack的master监听于4505,minion监听于4506;

可以将master与minion部署同一台服务器上(没有什么意义[哈哈~])。

2、salt 测试

  [root@openapi php-fpm]# salt "*" test.ping  192.168.2.36-CentOS.backup.test.backend:      True  192.168.2.30-centos.public.test:      True  

说明:salt的其它命令可用salt --help很简单,在此不多介绍

五、salt 常用的正则表达式(部分)

a、E:正则匹配

wKioL1W4_f7i-jLPAACz8jBS0LA203.jpg

可以在每一个句后面加一个 -l debug来显示命令具体执行过程

  [root@openapi self_userd]# salt -E '(backend81)' test.ping  backend81:      True  [root@openapi self_userd]# salt -E '(backend81)' test.ping -l debug  [DEBUG   ] Reading configuration from /etc/salt/master  [DEBUG   ] Guessing ID. The id can be explicitly in set /etc/salt/minion   Found minion id from generate_minion_id(): openapi.test.dns.com.cn  [DEBUG   ] Missing configuration file: ~/.saltrc  [DEBUG   ] Configuration file path: /etc/salt/master  [DEBUG   ] Reading configuration from /etc/salt/master  [DEBUG   ] Guessing ID. The id can be explicitly in set /etc/salt/minion   Found minion id from generate_minion_id(): openapi.test.dns.com.cn  [DEBUG   ] Missing configuration file: ~/.saltrc  [DEBUG   ] MasterEvent PUB socket URI: ipc:///var/run/salt/master/master_event_pub.ipc  [DEBUG   ] MasterEvent PULL socket URI: ipc:///var/run/salt/master/master_event_pull.ipc  [DEBUG   ] LazyLoaded local_cache.get_load  [DEBUG   ] get_iter_returns for jid 20150727212822728009 sent to set(['backend81']) will timeout at 21:28:27.732956  [DEBUG   ] jid 20150727212822728009 return from backend81  backend81:      True  [DEBUG   ] jid 20150727212822728009 found all minions set(['backend81'])  

b、-L :命令行里面一般是以列表的形式来指定对象的。

wKioL1W4_wXxyIZXAACFo_8-OSc489.jpg

c、-G:这个参数很强大,会根据默认的grain的结果来过滤。(grains也可以自己定义)

wKiom1W4_X6xGjf0AACqkBNK2kM670.jpg

wKioL1W4_4Oiz6lcAACmVYdhGlY139.jpg

d、-N:这个参数是基于分组的,前提是你得先分好组。(分组可以定义于主匹配文件/etc/salt/master中,也可以定义于/etc/salt/master.d/*.conf)

wKioL1W5ADKxFDpLAAHISTdTPI8672.jpg

然后可以这样使用

wKiom1W4_mOzPyZWAABgST-EzN4712.jpg

e、-C :表示tagger可是一个复合语句

  [root@openapi salt]# salt -C 'G@virtual:physical and E@backend81' test.ping  backend81:      True  

f、-b :一次操作多少台,也可以使使用百分比来操作(--batch-size)

  [root@openapi salt]# salt "*" -b 3 grains.item os  #salt "*" --batch-size 25%  grains.item os  36 Detected for this batch run  backend81 Detected for this batch run  backend84 Detected for this batch run  zabbix.server.dns.com.cn Detected for this batch run  backend83 Detected for this batch run  webdata.backup Detected for this batch run  Executing run on ['zabbix.server.dns.com.cn', 'webdata.backup', 'backend84']  webdata.backup:      ----------      os:          CentOS  backend84:      ----------      os:          CentOS  zabbix.server.dns.com.cn:      ----------      os:          CentOS  Executing run on ['backend83', 'backend81', '36']  backend81:      ----------      os:          CentOS  backend83:      ----------      os:          CentOS  36:      ----------      os:          CentOS  

注:

更多的模块使用说明可以使用

  salt \* sys.doc |grep <模块名称>  

salt 的每一个子命令都可以用-d来查看具体的用法

六、自定义grains

1、grains的优先级

grains可以保持在minion端、通过master端下发等多个方式来分发。但不同的方法有不同的优先级的:

a. /etc/salt/grains

b. /etc/salt/minion

c./srv/salt/_grains/ master端_grains目录下

优先级顺序依次为存在在minion端/etc/salt/minion配置文件中的同名grains会覆盖/etc/salt/grains文件中的值,而通过master端_grains目录下grains文件下发的值可以会覆盖minion端的所有同名值。比较拗口,总之记得,通过master下发的grains优先级是最高的可,/etc/salt/minion次之,/etc/salt/grains最低(core grains不大懂,就不讨论了,这个比/etc/salt/grains还低)

2、自定义grains

注:

利用Java注解将常量类生成js文件供前端调用  阅读原文»

利用Java注解将常量类生成js文件供前端调用

  注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事标记可以加在包,类,字段,方法,方法的参数以及局部变量上。

1)定义一个最简单的注解

public@interfaceMyAnnotation{

2)把注解加在某个类上:

publicclassAnnotationTest{

  我们的常量类注解如下:

packagecom.gaochao.platform.util;
importjava.lang.annotation.ElementType;
importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
importjava.lang.annotation.Target;
*@authorchao.gao
*@date2013-12-20下午1:02:02
*@version<b>1.0.0</b>
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public@interfaceConstantsText{
*数据字典的label,获取中文含义时使用
*@authorchao.gao
*@date2013-12-20下午1:17:19
publicStringtermsLable()default"";
*当数据字典中不存在对面的中文时使用,手动设置
*@authorchao.gao
*@date2013-12-20下午1:17:40
publicStringtext()default"";

  注解的上方有两个元注解,是注解的注解,含义及用法如下:

//Java中提供了四种元注解,专门负责注解其他的注解,分别如下//@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:
//RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
//RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
//RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息//@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括
//ElementType.CONSTRUCTOR: 构造器声明
//ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
//ElementType.LOCAL_VARIABLE: 局部变量声明
//ElementType.METHOD: 方法声明
//ElementType.PACKAGE: 包声明
//ElementType.PARAMETER: 参数声明
//ElementType.TYPE: 类、接口(包括注解类型)或enum声明

//@Documented将注解包含在JavaDoc中//@Inheried允许子类继承父类中的注解

在常量类中应用注解:

publicclassRelationshipConstants{
publicstaticfinalStringSTATUS_SAVED="saved";
publicstaticfinalStringSTATUS_FINISHED="finished";
publicstaticfinalintHAVE_YES=1;
publicstaticfinalintHAVE_NO=0;

  添加注解后

@ConstantsText(text="我是手动审核")
publicstaticfinalStringPLANSTATUS_AUDITED="audited";
*计划状态:已作废,从数据字典查找
@ConstantsText(termsLable="planStatus")
publicstaticfinalStringPLANSTATUS_CANCELED="canceled";
@ConstantsText(termsLable="planStatus")
publicstaticfinalStringPLANSTATUS_FINISHED="finished";

阅读更多内容

没有评论:

发表评论