zoukankan      html  css  js  c++  java
  • saltstack 基础

    salt简单介绍

      一个基础平台管理工具  

    一个配置管理系统,能够维护预定义状态的远程节点  

    一个分布式远程执行系统,用来在远程节点上执行命令和查询数据

    salt的核心功能

    使命令发送到远程系统是并行 使用安全加密的协议 使用最小最快的网络载荷 提供简单的编程接口

    salt的优点

    saltstack使用python编写的,设备是轻量级别的 saltstack通讯层采用zeroMQ实现使得它很快速 saltstack开源

    salt-master启动时会启动两个端口

    4505:为salt的消息发布专用端口(发布消息) 4506:为客户端与服务器端通讯的端口(接收消息)

    安装salt

    方法一

    rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm yum install salt-master # 安装server端 yum install salt-minion # 安装client端

    方法二

    # 安装Salt Master 
    curl -L https://bootstrap.saltstack.com -o install_salt.sh
    sudo sh install_salt.sh -M # 注意 安装master端需要加 “-M”
    # 安装Salt Minion
    curl -L https://bootstrap.saltstack.com -o install_salt.sh
    sudo sh install_salt.sh
    # 在安装Salt minion时,可以使用-A选项直接传递Salt Master IP地址。

     


    salt命令使用
    master端命令使用:
    salt-key:管理秘钥
    salt-cp: 复制
    salt-syndic: proxy使用
    minion端命令使用:
    salt-call: 在minion端主动执行任务使用

    修改配置文件:
    minion端需要配置
    master端IP:
    id:默认是主机名

    第一个命令:
    salt-key:管理所有minion的key
    查找的是缓存文件,在/etc/salt/pki下
    -L,--list-all : 列出所有的minion端发送过来的key
    -a ACCEPT,--accept=ACCEPT :允许一台minion
    -A,--accept-all:允许所有的minion
    -r REJECT,--reject=REJECT:拒绝一台minion
    -R,--reject-all:拒绝所有的minion
    -d DELETE,--delete=DELETE:删除指定的
    -D,--delete-all:删除所有的
    -y :默认运行yes

    salt-call:可以在minion上执行master对minion执行的所有动作

    minion:
    /etc/salt/minion :保存服务器的主机名
    /etc/salt/pki : 保存master的公钥和minion的密钥

    returner:
    默认情况下,发送给salt minion的命令执行结果将返回给salt master。
    Saltstack returner的接口允许将结果发送给任意系统
    内置returner模块列表

    event
    event是一个本地的ZeroMQ PUB interace,event是一个开放的系统,
    用于发送信息通知salt或其他的操作系统
    每个event都有一个标签。事件标签允许快速指定过滤时间。除了标签之外,
    每个事件都有一个数据结构。这个数据结构是一个dict类型,其中包含
    关于事件的信息

    通过监听event,master发送数据到mysql,记录日志步骤:
    准备过程
    mysql/master
    1.安装mysql
    2.创建数据库,授权

    master
    3.在master上修改配置文件,添加连接数据库的信息。
    4.准备监听even的py脚本,以及插入数据库操作
    5.安装python的mysql模块 MySQL-python


    执行过程
    1.运行监听event,插入数据库操作的脚步,后台运行
    注意:
    脚本是监听了event的信息直接写入到数据库中,和master本身没有关系。


    分组:
    G Grains glob匹配 G@os:Ubuntu
    E PCRE Minion id 匹配 E@^web 正则匹配
    P Frains PCRE 匹配 P@os:(RedHat|Fedora|CentOs)
    L Minions列表 L@minion1,minion2,minion3
    I
    S 子网/IP地址匹配 S@192.168.1.0/24 or 192.168.1.100

    配置文件示例:
    nodegroups: (固定语法)
    yz-app: 'E@yz-mob-app*' (组名: )
    gl-app: 'E@gl-mob-app*'
    app: 'N@yz-app or N@gl-app'

    模块介绍:
    test.ping
    sys.doc 返回帮助信息 salt 'minion' sys.doc
    system
    system.halt
    system.init
    system.poweroff
    system.reboot
    system.shutdown
    status 查看状态
    status.cpuinto
    status.cpustatus
    status.diskstatus
    status.uptime
    service 调用的是/etc/init.d/下某个服务的名字
    service.restart
    service.start
    service.stop
    service.status
    saltutil
    saltutil.is_running
    cmd
    cmd.running 执行命令
    cmd.script 执行脚本
    file 对文件进行管理
    salt命令
    -N 指定组名 salt -N app test.ping

    文件系统
    1.修改配置文件
    2.创建目录
    3.写sls文件

    1.修改配置文件
    vi /etc/salt/master
    file_roots: 固定语法
    base:
    - /srv/salt/
    dev:
    - /srv/salt/dev/services
    - /srv/salt/dev/states
    prod:
    - /srv/salt/prod/services
    - /srv/salt/prod/states
    2.创建目录
    mkdir /srv/salt -p
    3.写sls文件
    cd /srv/salt
    mkdir etc # 创建目录专门存放配置文件
    cd etc
    mkdir script # 创建脚本存放的位置
    cd script
    vi test.sh # 编辑脚本文件,内容如下
    #!/bin/bash
    whilt true
    do
    sleep 1
    echo 1 >> /tmp/log
    done
    salt '*' cmd.script salt://etc/script/test.sh # 执行文件系统下的sh脚本


    文件系统之同步文件:
    cd /srv/salt
    vi top.sls
    base: # 固定语法
    '*': # 你要匹配的minion ID
    - hosts # 执行相应的hosts.sls或hosts下的init.sls

    vi hosts.sls
    /tmp/hosts: #同步到哪里去
    file.managed: # 使用方法
    - source: salt://etc/hosts # 服务端文件位置(源文件位置)
    - user: root
    - group: root
    - mode : 600
    # 执行sls的两种方法
    salt '*' state.sls hosts
    或者在salt的更目录创建hosts目录,把hosts.sls移到hosts中
    执行命令为:
    salt '*' state.sls hosts.hosts
    或者把hosts下的hosts.sls文件改名为init.sls,salt会默认执行hosts下的init.sls
    执行命令为:
    slat '*' state.sls hosts
    salt '*' state.highstate

    grains 主要负责采集客户端一些基本信息。可以自定义
    grains的使用
    查看grains
    salt 'salt-client' grains.ls # 查看机器所有的grains
    salt 'salt-client' grains.items # 列出grains的名字和对应的值
    salt 'salt-client' grains.item os # 取指定的grains的值
    salt 'salt-client' grains.item shell
    grains的正则匹配
    salt -G 'os:CentOs' test.ping
    salt -G 'cpuarch:x86_64' grains.item num_cpus

    自定义grains
    在minion上进行配置grains
    grains: # 固定语法
    roles:
    - webserver
    - memcache
    deployment: detacenter4

    states
    salt状态系统的核心是sls。
    sls表示系统将会是什么样的一种状态,而且是以一种很简单的格式
    来包含这些数据。这经常也被叫做配置管理
    sls文件实际上只是一些:dict,list,str ,int

    YAML 语法
    1.缩进:YAML使用一个固定的缩进风格表示数据层结构关系。salt需要每个缩进级别由两个空格组成。不要使用tabs
    2.Python的字典是简单的键值对。字典的key在YAML中的表现形式是一个以冒号结尾的字符串。values的表现形式冒号下面的每一行,用一个空格隔开
    3.想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。
    更多关于YAML的使用:http://docs.saltstack.cn/topics/yaml/index.html

    更多的模块说明:http://docs.saltstack.cn/genindex.html#S

    pillar
    可以定义那些数据
    1.敏感信息:ssh key,加密证书。
    2.变量
    3.其他任何数据
    4.targetting

    pillar示例:
    schedult:
    highstate:
    function: state.highstate
    minutes: 1

    最新内容可以看我的blog: 40kuai
  • 相关阅读:
    在桌面创建robotframework Ride的快捷方式启动RIDE
    RIDE 接口自动化请求体参数中文时报错:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9......”
    下拉框选择
    Python下安装MySQLdb模块
    出现 Request Entity Too Large问题的解决方法
    Centos配置nginx反向代理8090端口到80端口
    超简单Centos+Docker+Halo搭建java向博客
    JAVA使用POI如何导出百万级别数据
    Mybatis的MapperRegistry错误
    Navicat连接mysql8出现1251错误
  • 原文地址:https://www.cnblogs.com/40kuai/p/6538863.html
Copyright © 2011-2022 走看看