设为首页 收藏本站
查看: 1465|回复: 0

[经验分享] saltstack安装配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-2-26 10:52:44 | 显示全部楼层 |阅读模式
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选项,下面会介绍到

[iyunv@web1 puppet]# salt '*' test.ping
web2.bbs.com:
    True
web1.bbs.com:
    True
[iyunv@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
[iyunv@web1 puppet]# salt '*' cmd.run 'hostname'
web2.bbs.com:
    web2.bbs.com
web1.bbs.com:
    web1.bbs.com
[iyunv@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


单个执行命令
[iyunv@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

[iyunv@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
[iyunv@web1 salt]# mkdir test
[iyunv@web1 salt]# mkdir test/123
vim test/123/1.txt
执行salt 'web2.bbs.com' state.highstate

        管理目录
[iyunv@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

[iyunv@web1 salt]# touch test/123/111111.txt
[iyunv@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

[iyunv@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上的文件到客户端


[iyunv@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
[iyunv@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脚本




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-182992-1-1.html 上篇帖子: ubuntu安装salt-ssh 下篇帖子: Saltstack 安装配置详解 service master start 认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表