mofdan 发表于 2018-8-1 10:19:34

saltstack测试 [二]

  一.远程命令执行
  1.1测试联通性
  salt '*' test.ping
  1.2# 查询主机运行了多长时间
  salt '*' cmd.run "uptime"
  1.3 # 批量重启服务
  salt '*' cmd.run "service httpd restart"
  1.4测试多个单独客户端
  salt -L 'web202,db203' test.ping
  1.5主机分组测试
  需要在master上面做配置修改。
  vim /etc/salt/master
  增加下面分组
  nodegroups:
  web:  'web202'         #web为组名
  db:  'db203'             #db为组名
  service salt-master restart #重新启动master让添加的配置生效
  1.6测试web分组下所有机器联通性
  salt -N web test.ping
  1.7测试db分组下所有机器联通性
  salt -N db test.ping
  二.配置管理
  2.1批量安装配置测试
  在master服务器端:
  vim /etc/salt/master #添加里面内容
  file_roots:
  base:
  - /srv/salt               #基础路径
  service salt-master restart #重新启动master让添加的配置生效
  2.2#需要自己创建/srv/salt目录
  mkdir -p /srv/salt               #salt基础路径
  mkdir /srv/salt/nginx         #nginx配置路径
  mkdir /srv/salt/mysql         #mysql配置路径
  mkdir /srv/salt/conf_sls      #nginx,mysql,packs的sls文件
  mkdir /srv/salt/software   #软件包存放路径
  mkdir /srv/salt/scripts      #脚本文件存放路径
  mkdir /srv/salt/_modules    #模板文件存放路径
  2.3#为客户端安装vsftpd这个软件包,通过yum安装。
  vim /srv/salt/conf_sls/packs.sls
  vsftpd:
  pkg:
  - installed    #卸载是- removed
  service:         #如果带有service,running表示安装的包需要自动运行
  - running
  - enable: True
  修改top.sls为基础配置文件
  vim /srv/salt/top.sls
  base:
  '*':                      #'*'表示所有监控客户端
  - conf_sls.packs#表示调用/srv/salt/conf_sls/packs.sls文件
  #在master服务端上面执行发布到客户端
  salt '*' state.highstate
  2.4分发文件及修改文件权限
  vim/srv/salt/conf_sls/nginx.sls
  /usr/local/nginx/conf/nginx.conf:
  file:
  - managed
  - source: salt://nginx/nginx.conf
  - mode: 777
  - owner: root
  - group: root
  修改top.sls为基础配置文件
  vim /srv/salt/top.sls
  base:
  '*':                      #'*'表示所有监控客户端
  - conf_sls.nginx#表示调用/srv/salt/conf_sls/nginx.sls文件
  #在master服务端上面执行发布到web组客户端
  salt -N web state.highstate
  2.5分发单个脚本文件到客户端
  salt '*' cp.get_file salt://scripts/hello.sh /root/scripts/hello.sh makedirs=True
  #把/srv/salt/scripts/hello.sh文件拷贝到所有监控客户端的/root/scripts/目录下,如果不存在此目录,将自动建此目录
  salt '*' cmd.run 'sh /root/scripts/hello.sh'#执行拷贝的hello.sh脚本文件
  2.6分发目录到客户端
  salt '*' cp.get_dir salt://software /root gzip=5
  2.7分发crontab到客户端
  vim /srv/salt/scripts/cron.sh
  #!/bin/bash
  /usr/sbin/ntpdate ntp.api.bz
  chmod u+x /srv/salt/scripts/cron.sh
  vim/srv/salt/conf_sls/crontab.sls
  /root/scripts/cron.sh:
  file.managed:
  - source: salt://scripts/cron.sh
  - mode: 700
  cron.present:
  - minute: '5'
  - hour: '*/2'
  修改top.sls为基础配置文件
  vim /srv/salt/top.sls
  base:
  '*':                      #'*'表示所有监控客户端
  - conf_sls.crontab#表示调用/srv/salt/conf_sls/crontab.sls文件
  salt '*' state.highstate
  2.8为客户端添加系统用户
  vim/srv/salt/conf_sls/useradd.sls
  test_user:                     #添加的用户名
  user.present:                #次状态为添加用户
  - fullname: test          #全名
  - shell: /bin/bash       #shell环境
  - password: '$1$NdyLqU0s$yxa4TI//RmBmQ/hQwE0NR1'#默认密码是123456
  - home: /home/test_user   #用户家目录
  - uid: 10001                     #用户id
  - gid: 10001                     #组id
  - groups:                           #所包含为root和test_user组
  - root
  - test_user
  - require:
  - group: test_user
  group.present:                     #次状态为添加组
  - gid: 10001                        #组id
  修改top.sls为基础配置文件
  vim /srv/salt/top.sls
  base:
  '*':                      #'*'表示所有监控客户端
  - conf_sls.useradd#表示调用/srv/salt/conf_sls/useradd.sls文件
  salt '*' state.highstate
  2.9为客户端删除系统用户
  vim/srv/salt/conf_sls/userdel.sls
  test_user:
  user.absent:
  - purge: True#设置清除用户的文件(家目录)
  - force: True#如果用户当前已登录,则absent state会失败. 设置force选项为True时,就算用户当前处于登录状态也会删除本用户.
  修改top.sls为基础配置文件
  vim /srv/salt/top.sls
  base:
  '*':                      #'*'表示所有监控客户端
  - conf_sls.userdel#表示调用/srv/salt/conf_sls/userdel.sls文件
  salt '*' state.highstate
  3.1为客户端删除系统用户组
  vim/srv/salt/conf_sls/groupdel.sls
  test_user:
  group.absent
  vim /srv/salt/top.sls
  base:
  '*':                      #'*'表示所有监控客户端
  - conf_sls.group#表示调用/srv/salt/conf_sls/group.sls文件
  salt '*' state.highstate
  3.2自定义模板
  cd/srv/salt/_modules   #存放模板文件
  vim check_web.py
  #!usr/bin/python
  import os
  num=int(os.popen("netstat -tunlp|grep nginx|wc -l").readline().strip())
  def status():
  if num==1:
  return"thisis nginx server!!!"
  else:
  return"thisis not nginx server!!!"
  salt '*' saltutil.sync_all    #同步到所有客户端
  salt '*' check_web.status      #调用自定义模板方法
  3.2目录显示
  #tree /srv/salt/
  /srv/salt/
  |-- _modules
  |   `-- check_web.py
  |-- conf_sls
  |   |-- crontab.sls
  |   |-- groupdel.sls
  |   |-- nginx.sls
  |   |-- packs.sls
  |   |-- useradd.sls
  |   `-- userdel.sls
  |-- mysql
  |-- nginx
  |   `-- nginx.conf
  |-- scripts
  |   `-- cron.sh
  |-- software
  |   `-- Django-1.5.8.tar.gz
  `-- top.sls
页: [1]
查看完整版本: saltstack测试 [二]