glcui 发表于 2018-7-31 11:53:53

SaltStack基础入门

  
  目录
  1:自动化运维可以实现的功能-----------------------------------------1
  2:自动化发展的阶段-------------------------------------------------2
  3:saltstack三大功能------------------------------------------------3
  4:salt三种运行模式-------------------------------------------------4
  5:salt支持的系-----------------------------------------------------5
  6:安装配置saltstack(master端)------------------------------------6
  7:安装配置saltstack(monion端)------------------------------------7
  8:salt-key命令的使用-----------------------------------------------8
  9:saltstack远程执行命令--------------------------------------------9
  1:自动化运维可以实现的功能
  (0)需求分析
  (1)机房设备上下架
  (2)系统初始化
  (3)应用环境初始化
  (4)应用的部署调试配置……………….(saltstack)
  (5)代码的发布(jenkins + ant + svn)
  (6)服务监控应用
  (7)数据备份
  虚拟化的优势:弹性,扩展性,充分利用硬件资源。
  2:自动化发展的阶段
  1、标准化的制定,软件环境版本的统一。
  如果想做自动化必须要制定标准化,不然会产生很多问题。
  2、文档化:将搭建文档进行标准化
  2、工具化:使用统一的工具进行管理
  3、web化:
  4、平台化:
  5、服务化:
  6、智能化:
  3:saltstack三大功能
  1.远程执行
  2.配置管理
  3.云管理
  4:salt三种运行模式
  (1)local(本地,一台机器玩耍,不建议)
  (2)Master、Minion(通过server/agent的方式进行管理)1000台机器 25秒搞定
  (3)Salt SSH (通过SSH方式进行管理,效率很低)1000台机器 83秒搞定
  在这里有必要提一下salt的云管理,salt拥有强大的云管理功能,更支持如阿里云、亚马逊等一系列公有云的管理,so以后在创建阿里云主机的时候,就可以不需要登录相关账号密码,只需要一条命令即可创建。此外salt对openstack支持的也相当不错,同样能够管理openstack创建的虚拟机
  5:salt支持的系统
  从官网来看salt支持的系统有很多,如下所示
  CentoS,RedHat,Fedora,Gentoo,Debian,MAC OS X,Ubutun,suse,freeBSD,OpenBSD

  不过有必要提一点salt对Windows支持可能不太好,并且没有Windows的master端,因此十分不建议大家在windows上使用salt
  6:安装配置saltstack(master端)
  
  1.安装saltstack需要配置epel源
  wget -O /etc/yum.repos.d/epel.repo

  http://mirrors.aliyun.com/repo/epel-6.repo
  yum repolist
  2.安装master管理端
  yum install salt-master -y
  rpm -qa salt-master
  3.设置saltstack开机自动启动
  chkconfig salt-master on
  4.配置/etc/salt/master文件
  # vim /etc/salt/master
  -------#修改位置1
  file_roots:      将此处的注释取消   (406行)
  base:         前面必须有两个空格    (407行)
  –/srv/salt    前面必须有四个空格    (408行)
  -------#修改位置2
  pillar_roots:      将此处的注释取消    (529行)
  base:            前面必须有两个空格    (530行)
  - /srv/pillar   前面必须有四个空格
  5.将saltstack服务启动
  # /etc/init.d/salt-master start
  Starting salt-masterdaemon:                  
  7:安装配置saltstack(monion端)
  1.安装saltstack需要配置epel源
  wget -O /etc/yum.repos.d/epel.repo

  http://mirrors.aliyun.com/repo/epel-6.repo
  yum repolist
  2.安装minion客户端
  yum install salt-minion -y
  rpm -q salt-minion
  3.配置/etc/salt/minion文件
  # vim /etc/salt/minion
  # Set the location of the salt master server. Ifthe
  master server cannot be
  # resolved, then the minion will fail to start.
  master: 172.16.1.61 将此行取消注释,并填写master管理端的IP地址(16行),冒号前必须空格

  # Explicitly declare the>
  if left commented the>  # will be the hostname as returned by the python
  call: socket.getfqdn()

  # Since salt uses detached>  multiple minions on the

  # same machine but with different>  useful for salt compute
  # clusters.
  id: web01   将此行取消注释,这里是本机在管理端显示的名称(第78行 冒号前必须空格
  当然要想简单也可以采用如下方法
  sed -i '17i master: 172.16.1.61' /etc/salt/minion

  sed -i '78i>  
  4.设置saltstack客户端开机自启动
  chkconfig salt-minion on
  chkconfig --list salt-minion
  5.将minion服务进行启动
  # /etc/init.d/salt-minion start
  Starting salt-miniondaemon:                     
  
  6.当我们回到master管理端执行salt-key命令就可以看到被找到的客户端
  # salt-key
  Accepted Keys:
  Denied Keys:
  Unaccepted Keys:
  web01
  Rejected Keys:
  以上结果显示,等待管理的主机有web01
  8:salt-key命令的使用
  常见参数:
  参数
  解释
  -A
  同意并接受全部主机
  -a
  指定接收的主机,支持通配符操作
  -D
  删除全部已被管理主机(但是不建议这么做)
  -d
  指定主机,不在管理的指定主机
  这里我们使用-A参数,同意并管理saltstack的所有客户端的主机
  # salt-key -A
  The following keys are going to be accepted:
  Unaccepted
  Keys:
  web01
  Proceed? Y         这里配置选择同意
  Key for minion web01 accepted.
  # salt-key   当我们再次查看的时候就会发现已经被管理
  Accepted
  Keys:
  web01               表示已经被saltstack
  master端管理
  Denied Keys:
  Unaccepted Keys:
  Rejected Keys:
  状态说明:
  主机状态
  中文解释
  Unaccepted Keys:
  未被接受或同意的主机key
  Denied Keys:
  已经被拒绝的主机key
  Rejected Keys:
  明确拒绝的key,主接收任何通信
  Accepted Keys:
  已经同意被管理的主机key
  9:saltstack远程执行命令
  
  命令简单语法:salt “目标” 模块.方法 “命令”
  
  --------增加一台机器,web02
  
  一:检查主机存活状态
  下面我们来执行第一个远程命令(利用test模块来ping以下是否成功管理)
  # sasalt "*" test.ping
  web01:
  True
  web02:
  True
  salt“*” test.ping    #注意这里支持通配符哦,*表示所有,当然依旧也可以指定主机,在这里面test表示模块而ping则是方法。注意这里面的ping可不是Linux里面ICMP协议的ping是salt自己独有的东西,True表示成功
  
  二:批量执行命令
  查看所有被管理端的磁盘利用率(批量执行命令)
  # salt "*" cmd.run "df -h"
  web01:

  Filesystem   >  /dev/sda3      6.2G1.5G4   4G    26%    /
  tmpfs         242M12K    242M   1%   /dev/shm
  /dev/sda1      190M36M    145M   20%   /boot
  web02:

  Filesystem   >  /dev/sda3      6.2G   1.5G4.4G    26%    /
  tmpfs         242M   12K   242M    1%   /dev/shm
  /dev/sda1      190M   36M   145M    20%    /boot
  通过远程执行命令查看客户端的内存使用情况
  # salt "*" cmd.run "free -h"
  web01:
  total    used    free   shared    buffers   cached
  Mem:       475M   313M    161M    236K   19M       198M
  -/+ buffers/cache:   95M   379M
  Swap:   767M   0B   767M
  web02:
  total    used   free   shared    buffers   cached
  Mem:       475M   316M   159M    236K      22M       198M
  -/+ buffers/cache:   95M      379M
  Swap:      767M   0B      767M
  salt"*" cmd.run "free -h"#其中cmd为模块,而run是方法df -h则是传入的参数.此时就能够返回各个主机的磁盘使用情况。cmd下的run方法后面可以接任何shell参数。因此这个模块非常之强大。
  
  二:批量传输复制文件
  # salt-cp "*" /test.txt /
  'web01':{'/test.txt': True},
  'web02':{'/test.txt': True}}
  salt-cp "*" /test.txt /#这是批量执行拷贝传输文件的命令,是将master的test.txt文件复制到所有monion端的根(/)下'/test.txt': True 表示成功
  ----------------------------------------------------------------------
  # 针对cmd.run这个模块这个缺点,不支持交互式的命令
  # salt “*” cmd.run “vim /etc/hosts”
页: [1]
查看完整版本: SaltStack基础入门