salt -stack 学习积累

回复 收藏

Saltstack 学习

1、        saltstack 安装
salt安装过程比较方便
在我们的主控机器上安装salt-master
yum  -y  install salt-master
          在我们客户机上;
          Yum -y  intall salt-minion

2、        /etc/salt/master 主要配置
Interfere:address (本机Ip)
定义管理群组:
        nodegroups:
        mygroup:  ‘L@id1,id2,id3’
        组名 (表示下面是minion列表)   idx(表示 minion 系统主机名)
Ps:线上机器的脚本中就是这样管理下面的机器的
Ps:注意在配置日志文件路径和配置文件路径的时候,前面不要留空格
详细配置:
http://docs.saltstack.cn/zh_CN/latest/ref/configuration/master.html
3、        minion 配置:
master  address  (服务器主机名或IPV4地址)
          Id  系统主机名
详细配置:
http://docs.saltstack.cn/zh_CN/latest/ref/configuration/minion.html

4、        配置完成后重启 /etc/init.d/salt-master 和 /etc/init.d/salt-mionion 客户端重启时会自动将mionion.pub 传给服务端机器并保存在 /etc/salt/pki/master/mionion/下 并以客户端id min命名保存。
Ps:注意服务机器上的防火墙规则,测试的话建议关闭防火墙在测试


Ps:如果salt 执行命令很慢的话,请将虚拟机的网络模式改一下。Net改成桥接

常用命令:
Salt-key  - -help:
                                -L:
Accepted Keys:已接受的KEY
Denied Keys:否认的KEY
Unaccepted Keys:没被接受的KEY
Rejected Keys:拒绝的KEY
                                -A: 接受全部未被接受的KEY
                                -a: 单个接受key ps:salt-key  idname

Salt –S:配置ip
Salt  -S “192.168.0.1,192.168.0.2”  …command….
Salt –L :minion 列表匹配
Salt –L “id1,id2”….command.. (ps: id表示客户机系统名称id )
Target Options:
    Target Selection Options

    -E, --pcre          使用pcre(perl)的正则表达式规则匹配目标
    -L, --list          列出一组用逗号或空格隔开的minions id作为执行目标.
    -G, --grain         使用grain信息中指定的机器作为目标
                        例如: "os:Arch*"   'os:CentOS'
    --grain-pcre        使用基于pcre正则式规则的grain匹配目录
                        例如: "os:Arch.*"
    -N, --nodegroup     使用预先定义的节点组作为匹配目标.
    -R, --range         使用一个范围表达式去查找目标.
            例如: %cluster
    -C, --compound      多条件指定目标,根据多个条件筛选匹配目标
                        类似: salt 'G@os:RedHat and webser* or E@database.*'
    -X, --exsel         Instead of using shell globs use the return code of a
                        function.
    -I, --pillar        使用一个pillar 的值来筛选目标,
                        例如: "role:production*"
    -S, --ipcidr        基于子网络匹配 (CIDR notation) or IPv4 address.


官方内置模块:https://docs.saltstack.com/en/latest/ref/modules/all/index.html
(里面有详细的内置模块和使用方法)

常用内置执行模块       
example:salt  ‘id’ cmd.run “df -h”
rsync.rsync

salt * rsync.rsync  root@192.168.1.1(src ip)  /tmp/ passwordfile=”/passwordfile”


cp模块
          example:cp.get_file
                             Eg: salt * cp.get_file salt://file  /etc/file
              Ps:该语法让所有minion 会 master配置文件的路径下去找file下载并拷贝到/etc/file文件服务路径
       
           file_roots:   
base:   
- /srv/salt
- /srv/failover
                                                    dev:   
  - /srv/salt/dev  
                          - /srv/salt/base   
prod:                     
        - /srv/salt/prod  
                                                        - /srv/salt/base




这个salt文件服务配置传输的文件的根路径是/srv/salt/base和/srv/salt/failover(路径可以随便取)优先从salt 目录下找相应文件若找不到就在failover目录下查找下面的dev、prod 他们的根路径都是/srv/salt,若找不到的话就会在根路径查找
               
常用cp 模块:
salt '*' cp.get_dir salt://etc/apache2 /etc
ps:将apache2 目录下的cp 到 etc下
salt '*' cp.get_file salt://vimrc /etc/vimrc
ps:将 vimrc 文件传到客户端

pkgin 模块:       
pkg.list_pkgs  列出当前以安装的包   salt ‘*’ pkg.list_pkgs
pkg.intall packname  安装该包  salt ‘*’ pkg.install nginx
安装很多的包需要遵从 python列表格式
salt ‘*’ pkg.install pkgs=’[“packname”,”packname”]’
pkg.remove packname  移除包

cmd 模块:
cmd.script   执行脚本salt ‘*’ cmd.script salt://test.sh 在客户上执行脚本  脚本也要放在 master 定义的根路径中
cmd.run cmd.shell cmd .run_all           执行远程shell 命令


sls 配置管理文件

top.sls 是所有配置文件的入口
正则匹配目标
base :
“*”:
-        httpd.Webserver  
ps (httpd.webserver) : webserver.sls 配置文件在httpd的目录下
分组名nodegroup进行匹配 match: nodegroup
         base :
                 groupname :
-        match: nodegroup
-        httpd.webserver
grain 模块名匹配 match: grain
     base:
                        ‘os:centos’:
-        match: grain
-        httpd.webserver
state 文件
/srv/salt/httpd/webserver.sls

apache:     
                pkg:
-        installed


salt  ‘*’  state.highstate
主控端对目标主机(targeted minions)发出指令运行state.highstatem模块,目标主机首先会对top.sls下载,解析,然后按照top.sls内匹配规则内的定义的模块将被下载,解析,执行,然后结果反馈给 master.


state 多文件引用
ssh/server.sls
ssh/ssh_config
httpd/server.sls
httpd/http.config

创建一个server.sls 引用上述文件
server :
- httpd
- ssh

State 逻辑关系列表
match: 配模某个模块,比如 match: grain match: nodegroup
require:依赖某个state,在运行此state前,先运行依赖的state,
赖可以有多个
watch:在某个state变化时运行此模块
order:优先级比require和watch低,有order指定的state比
order指定的优先级高







管理工具 列表地址
https://docs.saltstack.com/en/latest/ref/states/all/index.html
ps:这里面有很多类似下面的管理工具,用法很详细。
这里只是列出一小部分工具的一小部分的功能

server.runing:
                - name: httpd
                - enable: ture
                - reload: ture
                - watch:
                        - file:  /usr/local/apache.conf

pki.install:
-        name: httpd
-        verion:
-        pkgs:
- foo
- bar
                - sources:
                         - foo: salt://rpms/foo.rpm
                         - bar: http://somesite.org/bar.rpm
                - skip_verfiy:  true|false
        写这个stack 文件一定要注意格式,否则对于新手来说很容写错
1、缩进
YAML使用一个固定的缩进风格表示数据层结构关系。Salt需要每个缩进级别由两个空格组成。不要使用tabs。
2、冒号
Python的字典当然理所当然是简单的键值对。其他语言的用户应该知道这个数据类型叫哈希表或者关联数组。字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的表现形式冒号下面的每一行,用一个空格隔开:
3、短横杠
想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。



       

                       







2016-03-08 13:49 举报
已邀请:
0

prospect

赞同来自:

6666666666666666666
0

Kry1702

赞同来自:

get 刚好在研究。。

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: