首页 > 其他 > 详细

saltstack

时间:2016-02-25 21:27:03      阅读:140      评论:0      收藏:0      [点我收藏+]

saltstack 安装


两台机器

192.168.1.122 192.168.1.124

设置hostname以及hosts

192.168.1.122 web1.bbs.com

192.168.1.124 web2.bbs.com

关闭selinux,清空iptables规则


122上

yum install -y epel-release

yum install -y salt-master salt-minion


124上

yum install -y epel-release

yum install -y salt-minion


启动服务

122上 vim /etc/salt/minion 

master:192.168.1.122


启动服务

service salt-master start

service salt-minion start


124上

vim /etc/salt/minion

master: 192.168.1.122

启动服务

service salt-minion start

查看进程 

ps aux |grep salt





配置认证

一下操作都是在122上

salt-key -a web2.bbs.com

此时在client的/etc/salt/pki/minion命令下面会多出一个minion—_master.pub文件

可以使用salt-key命令查看到已经签名的客户端

salt-key可以使用-A签名所有主机,也可以使用-d删除制定主机的key



远程执行命令

示例1 salt ‘*‘ test.ping 这里的*表示所有已经签名的客户端,也可以制定其中一个 比如web2.bbs.com

示例2 salt ‘*‘ cmd.run ‘df -h‘

说明这里的*是在master上已经被接受过的客户端,可以通过salt-key查到,通常是已经设定的id值,关于这部分内容,它支持通配,列表以及正则。比如两台可以端web2 web3 ,那么可以写成salt ’web*‘ salt ‘web1[01]‘ sakt -L ‘web2,web3‘ salt -E ‘web(10|11)等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项> . 他还支持grains,加-G选项,pillar-l选项,下面会介绍到


[root@web1 puppet]# salt ‘*‘ test.ping

web2.bbs.com:

    True

web1.bbs.com:

    True

[root@web1 puppet]# salt ‘*‘ cmd.run ‘df -h‘

web1.bbs.com:

    Filesystem      Size  Used Avail Use% Mounted on

    /dev/sda3        18G  2.5G   15G  15% /

    tmpfs           491M   16K  491M   1% /dev/shm

    /dev/sda1       190M   27M  154M  15% /boot

web2.bbs.com:

    Filesystem      Size  Used Avail Use% Mounted on

    /dev/sda3        18G  1.2G   16G   8% /

    tmpfs           238M   12K  238M   1% /dev/shm

    /dev/sda1       190M   27M  154M  15% /boot

[root@web1 puppet]# salt ‘*‘ cmd.run ‘hostname‘

web2.bbs.com:

    web2.bbs.com

web1.bbs.com:

    web1.bbs.com

[root@web1 puppet]# salt ‘*‘ cmd.run ‘w‘

web1.bbs.com:

     11:17:25 up  2:20,  1 user,  load average: 0.21, 0.13, 0.09

    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    root     pts/0    192.168.1.104    16:58    1.00s  1.59s  0.75s /usr/bin/python

web2.bbs.com:

     11:17:25 up  2:20,  1 user,  load average: 0.48, 0.51, 0.46

    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    root     pts/0    192.168.1.104    08Jan16 16:34   0.32s  0.32s -bas



单个执行命令

[root@web1 puppet]# salt ‘web2.bbs.com‘ cmd.run ‘w‘

web2.bbs.com:

     11:18:34 up  2:21,  1 user,  load average: 0.52, 0.51, 0.46

    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    root     pts/0    192.168.1.104    08Jan16 17:43   0.32s  0.32s -bas


 正则

 salt -E ‘web(1|2).bbs.com‘ cmd.run ‘w‘

 列表

 salt -L ‘web1.bbs.com,web2.bbs.com‘ cmd.run ‘w‘



grains

grains是在minion启动时收集到的一些信息,比如操作系统类型,网卡ip,内核版本,CPU架构等。

salt ‘web2.bbs.com‘ grains.ls 列出所有的grains项目名字

salt ‘web2.bbs.com‘ grains.items 列出所有grains项目以及值

grains的信息并不是动态的,并不会实时变更,他只是在minion启动时收集到的 不能变化

可以根据grains收集到的一些信息,做配置管理工作

grains支持自定义信息



自定义grains 

124上

vim /etc/salt/grains 添加

role: nginx

env:test

重启minion服务

service salt-minion restart

122上

获取grains:

salt ‘*‘ grains.item role env

可以借助grains的一些属性信息来执行

salt -G role:nginx cmd.run ‘hostname‘




pillar



pillar和grains不一样,实在master上定义的,并且针对minion定义的一些信息,像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等


配置自定义pillar

vim /etc/salt/mster

找到如下配置

pillar_roots:

  base:

    - /srv/pillar

去掉前面的警号



 mkdir /srv/pillar

 

vim /srv/pillar/test.sls 

   conf: /etc/123.conf


vim /srv/pillar/top.sls 作为总入口配置文件 不定义它test.sls不生效

base:

  ‘web2.bbs.com‘:

    - test



重启master

/etc/init.d/salt-master restart

 salt ‘web2.bbs.com‘ pillar.items

 salt ‘*‘ pillar.item conf


当更改玩pillar配置文件后,可以通过刷新pillar配置来获取新的pillar状态:

salt ‘*‘ saltutil.refresh_pillar

验证: salt ‘*‘ pillar.items test

pillar 同样可以用来作为salt的匹配对象 比如salt -l ‘conf:/etc/123.conf test.ping

 在添加模块

在 cd pillar/

 vim aaa.sls

system: Centos


 vim top.sls

base:

  ‘web2.bbs.com‘:

    - test

    - aaa


 salt ‘*‘ saltutil.refresh_pillar


[root@web1 pillar]# salt -I system:Centos cmd.run ‘w‘

web2.bbs.com:

     13:36:51 up  4:39,  1 user,  load average: 0.60, 0.52, 0.46

    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    root     pts/0    192.168.1.104    08Jan16 18:22   0.35s  0.35s -bash




配置管理安装Apache

122上 vim /etc/salt/master 找到file_roots

打开如下内容的注释

file_roots:

  base:

    - /srv/salt

mkdir /srv/salt ; cd /srv/salt

vim /srv/salt/top.sls 加入以下内容

base:

  ‘*‘:

    - apache

意思是。在所有的客户端上执行Apache模块

重启/etc/init.d/salt-master restart


vim apache.sls

apache-service:

  pkg.installed:

    - names:  这里如果只有一个服务,那么就可以写成 -name:httpd 不用在换行了

      - httpd

      - httpd-devel

  service.running:

    - name: httpd

    - enables: True


说明 Apache-service是id的名字 自定义的 pkg.installed为包安装函数,下面是要安装的包的名字 service.running也是一个函数,来保证制定的服务启动 ,enable开机启动

执行salt ‘web2.bbs.com‘ state.highstate





管理管理文件

/srv/salt

vim filetest.sls

file_test:

  file.managed:

    - name: /tmp/12.conf

    - source: salt://test/123/1.txt

    - user: root

    - group: root

    - mode: 644

说明:第一行的file_test为自定义名字,表示该配置段的名字,可以在别的配置段中引用它,source指定文件从哪里拷贝,这里的test相当于是/srv/salt/test

salt://==/srv/salt

/srv/salt

[root@web1 salt]# mkdir test

[root@web1 salt]# mkdir test/123

vim test/123/1.txt

执行salt ‘web2.bbs.com‘ state.highstate


管理目录

[root@web1 salt]# vim dirtest.sls


file_dir:

  file.recurse:

    - name: /tmp/testdir

    - source: salt://test/123

    - user: root

    - file_mode: 644

    - dir_mode: 755

    - mkdir: True

    - clean: True


[root@web1 salt]# touch test/123/111111.txt

[root@web1 salt]# salt ‘web2.bbs.com‘ state.highstate



配置管理远程命令

cmd_test:

  cmd.run:

    - onlyif: test -f /tmp/111.txt

    - name:

      - touch /tmp/111.txt

      - mkdir /tmp/1233

    - user: root



配置管理远程脚本

vim shelltest.sls

shell_test:

  cmd.script:

    - source: salt://test/1.sh

    - user: root

vim /srv/salt/test/1.sh

#!/bin/bash

touch /tmp/111111.txt

if [ -d /tmp/123333 ]

then 

  rm -rf /tmp/123333

fi 


[root@web1 salt]# vim top.sls

base:

  ‘web2.bbs.com‘:

    - shelltest



 salt ‘web2.bbs.com‘ state.highstate




配置管理任务计划

cron.absent:表示删除

cron_test:

  cron.present:

    - name: /bin/touch /tmp/1.ttt

    - user: root

    - minute: ‘*‘

    - hour: 20

    - daymonth: ‘*‘

    - month: ‘*‘

    - dayweek: ‘*‘


vim top.sls

base:

  ‘web2.bbs.com‘:

    - shelltest

    - crontest



salt ‘web2.bbs.com‘ state.highstate




可能会用到的命令

cp.get_file 拷贝master上的文件到客户端



[root@web1 salt]# salt ‘web2.bbs.com‘ cp.get_file salt://apache.sls /tmp/apeda

web2.bbs.com:

    /tmp/apeda


cp.get_dir拷贝目录

salt ‘*‘ cp.get_dir salt://test/conf /tmp/ 会自动在客户端创建conf目录,所以后面不要加conf, 如果写成/tmp/conf/则会在/tmp/conf/目录下又创建conf

[root@web1 salt]# salt ‘web2.bbs.com‘ cp.get_dir salt://test /tmp/

web2.bbs.com:

    - /tmp//test/1.sh

    - /tmp//test/123/1.txt

    - /tmp//test/123/111111.txt




salt-run manage.up 显示存活的minion


salt ‘*‘ cmd.script salt://test/1.sh 命令下执行master上的shell脚本



本文出自 “10897714” 博客,请务必保留此出处http://10907714.blog.51cto.com/10897714/1745085

saltstack

原文:http://10907714.blog.51cto.com/10897714/1745085

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!