王艳玲 发表于 2018-7-31 09:51:21

saltstack安装配置使用

  背景:puppet 用ruby开发,saltstack用python语言开发的包
  环境:
  修改hostname和hosts文件, 关闭selinux,清空iptables
  172.16.115.157master.huangzp.com;hostname master
  172.16.115.203agent.huangzp.com;hostname agent
  一、配置认证
  1. 安装和启动Saltstack服务
  master上:
  yum install-y epel-release
  yum install -y salt-master salt-minion
  vim /etc/salt/minion    //修改
  master: 172.16.115.157
  service salt-master start
  service salt-minion start
  agent上:
  yum install -y epel-release
  yum install -y salt-minion
  vim /etc/salt/minion    //修改
  master: 172.16.115.157
  service salt-minion start
  2. 配置saltstack认证
  master上:
  salt-key -a agent.huangzp.com      // agent机器/etc/salt/pki/minion目录下生产一个minion_master.pub文件
  salt-key      //查看已经签名的客户端
  salt-key -a    //签名指定的主机
  salt-key -A    //签名所有的主机
  salt-key -d    //删除指定主机的签名
  salt-key --help   //查看各命令的用法
  3.salstack远程执行命令
  3.1 ping测试
  salt '*' test.ping    //*表示所有已经签名的客户端,也可以指定某一台;test为模块名,ping为函数
  3.2 查看磁盘信息
  salt '*' cmd.run 'df -h'//*星号位置支持通配、正则、列表等
  例如:
  salt 'web*'
  salt 'web'
  salt -L 'web10,web11'    //多个机器用分号隔开,需要加-L
  salt -E 'web(10|11)'      //使用正则,需加-E
  支持grains               //加-G
  支持pillar               //加-l
  二、saltstack grains
  grains概念
  minion启动时,收集的一些系统信息,比如操作系统类型、网卡IP、内核版本、cpu架构等;
  根据收集的信息可以做配置管理工作;
  静态不实时信息;
  支持自定义信息
  salt 'agent.huangzp.com' grains.ls   //列出所有grains项目名字
  salt 'agent.huangzp.com' grains.items//列出所有grains项目以及值
  1. 自定义编辑/etc/salt/grains//minion端添加:
  role: nginx   //分号后空一格
  env: test
  myname: silen
  mydomian: silen.com
  2. 重启minion服务,查看结果
  service salt-minion restart
  salt ‘agent.huangzp.com’ grains.item role env myname mydomian   //item没有s
  3. 使用-G,指定机器
  salt -G mydomian:silen.com cmd.run 'w'
  三、saltstack pillar
  pillar概念
  和grains不一样,是在master上定义;
  针对minion定义的重要数据信息,如密码等,存在pillar中
  可以定义变量
  1. 配置自定义pillar
  vim /etc/salt/master    //修改配置文件,找到:
  pillar_roots:                //相当于key-value
  base:                        //相当于二层key,空2格
  - /srv/pillar                //相当于value,空4格,,指定主目录
  去掉前面的#号
  2. mkdir /srv/pillar   //创建目录
  vim /srv/pillar/test.sls//自定义test模块,名称不能是纯数字
  conf: /etc/123.conf       //自定义conf位置目录
  myname: silen             //自定义
  vim /srv/pillar/top.sls//配置总入口配置文件,固定名称,否则test.sls不生效,指定客户端和同目录先的配置文件(test.sls也可直接放置在总配置文件中)内容:
  base:                                 //固定格式开头
  'agent':      //作用的机器,空两格,agent是master识别出来的名字
  - test                                 //模块名称,空四格,也该目录下,为test.sls
  3. /etc/init.d/salt-master restart   //重启master
  salt '*' saltutil.refresh_pillar    //刷新pillar配置来获取新的pillar状态,不需要重启
  salt '*' pillar.itme conf             //查看conf
  salt '*' pillar.itmes                  //查看所有
  pillar同样可以用来作为salt的匹配对象,大写I如
  salt -l 'conf:/etc/123.conf' test.ping
  四、saltstack配置apache
  1. master上:
  vim /etc/salt/master   //找到file_roots
  file_roots:
  base:
  - /srv/salt
  #去掉注释
  2. mkdir /srv/salt ;cd /srv/salt
  vim /srv/salt/top.sls    //加入
  base:
  '*':
  - apache
  # 即在所有的客户机上执行apache模块的安装
  3. vim /srv/salt/apache.sls //加入
  apache-service://显示的名称,当使用该配置文件中的pkg.installed时,名称可以被调用
  pkg.installed:   //模块名称.函数名
  - names:      //如果只有个一个服务,则直接写成-name: httpd
  - httpd
  - httpd-devel
  service.running:   //保证服务启动的函数
  - name: httpd
  - enable: True//开机启动
  重启 /etc/init.d/salt-master restart
  刷新配置文件 salt '*' saltutil.refresh_pillar
  4. 执行
  salt 'agent' state.highstate
  五、saltstack文件和目录管理
  1. vim /srv/salt/filetest.sls,关键函数 file.managed
  file_test:   //名称
  file.managed:   //模块名.函数
  - name: /tmp/huanzp.com   //放到对方机器的文件名字
  - source: salt://test/123/1.txt   //来源,salt:// == /srv/salt/
  - user: root
  - group: root
  - mode: 644
  2. vim /srv/salt/top.sls   //加入
  base:
  'agent':
  - filetest
  3. 执行
  mkdir -p /srv/salt/test/123
  echo "test123456">/srv/salt/test/123/1.txt
  salt 'agent' state.highstate   // 只要是涉及配置的,都执行这个语法
  4. vim /srv/salt/testdir.sls,关键函数 file.resurce
  file_dir:   //名称
  file.recurse:   //模块名.函数
  - name: /tmp/testdir   //放到对方机器的目录
  - source: salt://test/123   //来源,salt:// == /srv/salt/
  - user: root
  - group: root
  - file_mode: 644
  - dir_mode: 755
  - mkdir: True
  - clean: True//加上它之后,源删除文件或者目录也会删除
  5. vim /srv/salt/top.sls   //加入
  base:
  'agent':
  - testdir
  6. 执行
  salt 'agent' state.highstate
  六、saltstack远程执行命令
  1. vim /srv/salt/cmdtest.sls,关键函数cmd.run
  cmd_test:
  cmd.run:
  - onlyif: test -f /tmp/3.txt   //onlyif表示条件,与unless相反
  - names:
  - touch /tmp/4.txt       //没有冒号
  - mkdir /tmp/dir1
  - user: root//user 使用哪个用户去操作
  2. vim /srv/salt/top.sls //加入
  base:
  'agent':
  - cmdtest
  3. 执行
  salt 'agent' state.highstate
  七、saltstack远程执行shell脚本
  1. vim /srv/salt/shelltest.sls,关键函数cmd.script
  shell_test:
  cmd.script:
  - source: salt://test/1.sh
  - user: root
  2. vim /srv/salt/test/1.sh
  #! /bin/bash
  touch /tmp/5.txt
  3. vim /srv/salt/top.sls //加入
  base:
  'agent':
  - shelltest
  4. 执行
  salt 'agent' state.highstate
  八、saltstack管理任务计划
  1. vim /srv/salt/crontest.sls,关键函数 cron.present;cron.present    //删除计划任务
  cron_test:
  cron.present:
  - name: /bin/touch /tmp/6.txt
  - user: root
  - minute: '*'   //*需要用单引号引起来
  - hour: 18
  - daymonth: '*'
  - dayweek: '*'
  2. vim /srv/salt/top.sls //加入
  base:
  'agent':
  - cronlltest
  3. 执行
  salt 'agent' state.highstate
  
  九、saltstack几个常用的命令
  cp.get_file //拷贝master上的文件到客户端
  salt '*' cp.get_file salt://test/1.txt /tmp/001.txt
  cp.get_dir //拷贝目录
  salt '*' cp.get_dir salt://test/conf/tmp/   //自动在客户端创建conf目录
  salt-run manage.up    //显示存活的minion
  salt '*' cmd.script salt://test/1.sh//命令行下在master上执行shell脚本
页: [1]
查看完整版本: saltstack安装配置使用