zoukankan      html  css  js  c++  java
  • Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack

    一、认识自动化运维

    传统运维效率低,大多工作人为完成

    传统运维工作繁琐,容易出错

    传统运维每日重复做相同的事情

    传统运维没有标准化流程

    传统运维的脚本繁多,不能方便管理

    自动化运维就是要解决上面所有问题

     Puppet www.puppetlabs.com
    基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。

     Saltstack(官网 https://saltstack.com,文档docs.saltstack.com
    基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。

     Ansible www.ansible.com
    更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令

    Satlstack比Ansible支持的机器更多

    二 、saltstack安装

     saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html

     可以使用salt-ssh远程执行,类似ansible

     也支持c/s模式中控中心,下面我们将讲述c/s种模式的使用,需要准备两台机器

     1.101为服务端,1.106为客户端

     设置hostname以及hostsdavery,davery01

    如果客户端机器比较多则需要内部弄个DNS

    vim /etc/hosts

     两台机器全部安装saltstack yum

     yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

     101上执行 yum install -y salt-master salt-minion

     yum list |grep salt

     106上执行 yum install -y salt-minion

     

    三、启动salt相关服务

     101上编辑配置文件

     vi /etc/salt/minion //增加

     master: davery

    添加

     启动服务

    systemctl start salt-master

    systemctl start salt-minion

     

     服务端监听4505和4506两个端口,4505为消息发布的端口,4506为和客户端通信的端口

     106上编辑配置文件

     vi /etc/salt/minion //增加

     master: davery

     启动服务systemctl start salt-minion

     

    客户端不监听端口

    四、saltstack配置认证

     master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的

     minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem私钥minion.pub公钥,其中.pub为公钥,它会把公钥传输给master

    [root@davery01 ~]# ls /etc/salt/pki/minion
    minion.pem minion.pub
    [root@davery01 ~]#

     cat /etc/salt/pki/minion/minion.pem私钥

     cat /etc/salt/pki/minion/minion.pub公钥

     master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,通过salt-key工具接受这个公钥,一旦接受后就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub

    [root@davery ~]# ls /etc/salt/pki/master

    cat /etc/salt/pki/master/master.pem

    cat /etc/salt/pki/master/master.pub

     以上过程需要借助salt-key工具来实现

     执行如下命令 salt-key -a davery  // -a后面跟主机名(增加),可以认证指定主机

     salt-key -a davery01

     

    报错了不能收到01机器key,先把所有key删除一下,然后重新设置一下hostname和hosts,就可以了,如下

    [root@davery ~]# ls /etc/salt/pki/minion
    minion.pem minion.pub

    [root@davery ~]# rm -rf /etc/salt/pki/minion/minion.pub

    [root@davery ~]# rm -rf /etc/salt/pki/minion/minion.pem

    [root@davery ~]# cd /etc/salt/pki/master
    [root@davery master]# ls
    master.pem minions minions_denied minions_rejected
    master.pub minions_autosign minions_pre
    [root@davery master]# rm -rf master.pem
    [root@davery master]# rm -rf master.pub

     [root@davery ~]# ls /etc/salt/pki/master/minions

    [root@davery ~]# ls /etc/salt/pki/master/minions_denied

     

    五、salt-key命令用法

    -a  后面跟主机名,认证指定主机

     -A 认证所有主机

     -r  跟主机名,拒绝指定主机

     -R  拒绝所有主机

     -d 跟主机名,删除指定主机认证

     -D 删除全部主机认证

     -y 省略掉交互,相当于直接按了y,如果已经允许了一次第二次就不会接受了,要重新删除salt-key -D才能再次接受

     

    六、saltstack远程执行命令

    所有的指令都是在master上执行

    salt '*' test.ping //这里的*表示所有已经签名的minion端,也可以指定一个,测试对方机器是否存活

     salt 'davery' test.ping

     salt '*' cmd.run "hostname"

     说明: 这里的*必须是在master上已经被接受过认证的客户端,可以通过salt-key查到,通常是我们已经设定的id值。关于这部分内容,它支持通配、列表以及正则。

    比如两台客户端davery01,davery02, 那我们可以写成,正则表达式

     salt 'davery*' cmd.run 'hostname'

    salt 'davery0[12]'

    salt -L 'davery01,davery02'   

    salt -E 'davery(01|02)'

    等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持grains,加-G选项,pillar -I选项,下面会介绍到

    七、saltstack - grains 都是在master davery上操作

     grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。

     salt 'davery01' grains.ls 列出所有的grains项目名字

     salt 'davery01' grains.items 列出所有grains项目以及值

     grains的信息并不是动态的,并不会实时变更,它是在minion启动时收集到的。

     我们可以根据grains收集到的一些信息,做配置管理工作。

     grains支持自定义信息。

    minion上:

     vim /etc/salt/grains  //添加:

     role: nginx

     env: test

     重启minion服务

     systemctl restart salt-minion

     master上:

     获取grains

     salt '*' grains.item role env

     可以借助grains的一些属性信息来执行

     salt -G role:nginx cmd.run 'hostname'

     八、saltstack – pillar

     pillargrains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。

     配置自定义pillar

     vim  /etc/salt/master

     找到如下配置://去掉前面的警号

    pillar_roots:

    改为

      base: #此行前面有两个空格

        - /srv/pillar #此行前面有4个空格

    重启

    [root@davery ~]# systemctl restart salt-master

     mkdir /srv/pillar

     vim /srv/pillar/test.sls  //内容如下

     conf: /etc/123.conf

      

     vi /srv/pillar/top.sls  //内容如下

    base:

      'aming-02': #此行前面有两个空格

        - test #此行前面有4个空格

     重启master

     systemctl  restart salt-master

     当更改完pillar配置文件后,我们可以通过刷新pillar配置来获取新的pillar状态:

     salt '*' saltutil.refresh_pillar

     验证:salt  '*' pillar.item conf

     pillar同样可以用来作为salt的匹配对象。比如 salt  -I 'conf:/etc/123.conf'  test.ping

     

  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/davery/p/9260703.html
Copyright © 2011-2022 走看看