美文网首页
saltstack入门(-)

saltstack入门(-)

作者: bdslinux | 来源:发表于2016-02-05 00:08 被阅读1250次

    img

    saltstack介绍

    关于Saltstack的介绍,简单一句话:整合了Puppet和 Chef的功能,更加强大,更适合大规模批量管理服务器。

    • 开发语言: python
    • 工作方式: master/minion(zeroMQ) ,masterless , salt-ssh(0.17+)
    • 三大方式:
      remote exection: 远程执行
      config mamagement: 配置管理
      cloud mangement(?): 云端的管理

    基本概念

    Saltstack基于C/S架构,服务端master和客户端minions

    • 部署简单、方便;
    • 支持大部分UNIX/Linux及Windows环境;
    • 主从集中化管理;
    • 配置简单、功能强大、扩展性强;
    • 主控端(master)和被控端(minion)基于证书认证,安全可靠;
    • 支持API及自定义模块,可通过Python轻松扩展

    Master : 控制中心,salt命令运行和资源状态管理
    Minions : 需要管理的客户端机器,会主动去连接Mater端,并从Master端得到资源状态
    信息,同步资源管理信息
    States: 配置管理的指令集
    Modules: 在命令行中和配置文件中使用的指令模块,可以在命令行中运行
    Grains: minion端的变量,静态的
    Pillar:minion端的变量,动态的比较私密的变量,可以通过配置文件实现同步minions定义
    highstate: 为minion端下发永久添加状态,从sls配置文件读取.即同步状态配置
    salt_schedule: 会自动保持客户端配置

    Master与Minion认证

    • minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
    • master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。

    master与minion之间的通信

    • SaltStack master启动后默认监听4505和4506两个端口。
    • 4505(publish_port)为saltstack的消息发布系统
    • 4506(ret_port)为saltstack客户端与服务端通信的端口,负责接收客户端发送过来的结果

    • img

    安装+配置

    配置域名hosts文件,也可以使用ip地址

    cat /etc/hosts
    10.10.10.14 test14.salt.cn 
    10.10.10.15 master15.salt.cn
    

    环境系统

    master: 10.10.10.15 
    minion: 10.10.10.14
    

    yum安装

    master端:

    yum install salt-master
    

    配置文件地址: /etc/salt/master
    _启动的端口: _

    • 4505(publisth_port) : 用于salt的消息发布系统
    • 4506(retrun_port): salt客户端与服务器端通信的端口,接受客户端返回结果

    ** 启动服务: **

    /etc/init.d/salt-master 
    

    minion端:

    yum install  salt-minion
    

    配置文件地址: /etc/salt/minion

    master: 10.10.10.15                    #服务器端的主机名
    id:  test14.salt..cn                          #客户端的主机名 ,唯一标识
    

    *注意: 配置文件要格式统一 *
    启动服务:

    /etc/init.d/salt-minion start 
    

    通信认证

    salt 的master和minion 之间是通过证书通信的. 所以存在证书的信任颁发问题
    ** master端**

    salt-key -L  : 查看当前需要接受的keys 
    salt-key-a hostname   : 接受来自一个主机的证书
    salt-key-A  :接受所有请求的证书 
    /etc/salt/master 配置文件 : 自动接受请求证书 
        auto_accept: true 
    
    [root@bj-idc-15 master]# salt-key -L   
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    test14.salt.cn                             #未被认证的主机
    Rejected Keys:
    
    [root@bj-idc-15 master]# salt-key -a test14.salt.cn    
    The following keys are going to be accepted:
    Unaccepted Keys:
    test14.salt.cn
    Proceed? [n/Y] y
    Key for minion test14.salt.cn accepted.      #请求认证已经被接受 
    

    测试通信

    [root@bj-idc-15 master]# salt "test14.salt.cn"  test.ping 
    test14.salt.cn:
        True 
    

    返回True代表成功了

    [root@bj-idc-15 master]# mkdir -p /srv/salt ; cd /srv/salt
    [root@bj-idc-15 salt]# mkdir /srv/salt/dev 
    [root@bj-idc-15 salt]# cat top.sls 
    base:
      '*': 
        - dev.http 
    
    [root@bj-idc-15 salt]# cat dev/http.sls 
    http: 
      pkg:
      - name: httpd 
      - installed 
      service: 
      - name: httpd 
      - running 
      - reload: True 
      - watch: 
        - file: /etc/httpd/conf/httpd.conf 
    /etc/httpd/conf/httpd.conf: 
      file.managede:
      - source: salt://files/httpd.conf 
      - user: root 
      - group: root
      - mode: 644 
      - backup: minion 
    

    执行命令

    sls文件写好以后,在master执行命令

    [root@bj-idc-15 ~]# salt “test14.salt.cn” state.highstate
    

    检查执行结果

    [root@bj-idc-14 ~]# rpm -qa httpd
    httpd-2.2.15-47.el6.centos.1.x86_64
    [root@bj-idc-14 ~]# ss -tunlp | grep 1000 
    tcp    LISTEN     0      128                   :::1000                 :::*      users:(("httpd",29395,4),("httpd",29397,4),("httpd",29398,4),("httpd",29399,4),("httpd",29400
    

    相关文章

      网友评论

          本文标题:saltstack入门(-)

          本文链接:https://www.haomeiwen.com/subject/fuwekttx.html