zoukankan      html  css  js  c++  java
  • saltstack

    1.安装启动配置服务及简单使用
    yum install python-jinja2 salt salt-master salt-minion -y
    systemctl start salt-master && systemctl start salt-minion && systemctl enable salt-master && systemctl enable salt-minion
    或者pip install salt(因为salt是python程序),会打开4505端口用于发送命令与4506端口用来接收结果

    cat /etc/hosts
    127.0.0.1 master minion-one

    vim /etc/salt/minion
    master:
    - master # master为master的主机名,也可以是ip,可设置多个master
    - new-master
    id: minion-one # :后面必须要有个空格,一般设置成你的主机名

    minion执行:systemctl restart salt-minion
    master执行:salt-key -L # 看到minion-one存在于Unaccepted Keys里
    salt-key -f minion-one # 查看minion-one密钥更具体的信息
    minion执行:salt-call --local key.finger # 查看本地密钥,跟刚才在master查看是一致的
    master执行:salt-key -a minion-one # 为minion-one接受密钥
    salt-key -L # 看到minion-one存在于Accepted Keys里,表示签发成功了

    在minion较多的情况下可以编辑master的/etc/salt/master文件修改#auto_accept: False为auto_accept: True就可以自动签发了

    master执行:salt '*' test.ping
    minion-one:
    True
    这是一条测试主机是否存活的命令,返回为True为存活,False不一定为不存活,如果拥有多个minion则会返回各minion的True(False)

    salt 'minion-one' sys.list_functions test # 查看其他内置方法
    salt minion-one sys.doc test.sleep # 查看某方法的帮助文档

    2.常用操作
    salt '*' cmd.run 'whoami' # 执行某条命令
    salt '*' pkg.install 'httpd' # 安装某个包
    salt '*' pkg.version 'httpd' # 查看包的版本
    salt '*' pkg.remove 'httpd' # 删除某个包
    salt '*' service.status 'httpd' # 查看某服务状态
    salt '*' service.start 'httpd' # 开
    salt '*' service.stop 'httpd' # 关
    salt '*' file.stats /etc/yum.repos.d/base.repo # 查看某文件(目录)状态,返回所有者、组、ctime、atime、权限等
    salt '*' file.chown /etc/yum.repos.d/base.repo apache root # 更改权限等,返回值是None(估计有BUG)
    salt '*' user.add bfmq # 加用户
    salt '*' user.delete bfmq # 删除用户
    salt '*' user.info bfmq # 查看用户信息


    3.自定义模块
    mkdir -p /srv/salt/_modules/
    salt '*' saltutil.sync_modules # 同步模块


    4.state
    执行模块是过程式的,而状态模块是描述性的
    调用命令时仅仅实质性命令,而使用state模块会先检测当前状态与目标状态,状态不同才会进行操作
    sls配置文件使用yaml语言,层级关系用缩进(两个空格来表示)
    salt '*' sys.list_state_modules # 列出所有状态模块
    salt '*' sys.list_state_functions pkg # 列出某状态模块内所有函数


    5.常用state
    下发文件(文件必须存在!)
    /etc/foo.conf: # 目标路径
    file.managed:
    - source:
    - salt://foo.conf # 源路径,默认情况下salt的base目录在/srv/salt/中
    - user: foo # 目标所有者
    - group: users # 目标所有组
    - mode: 644 # 目标权限

    创建目录
    /srv/stuff/substuf: # 目标路径
    file.directory:
    - user: root # 目标所有者
    - group: root # 目标所有组
    - mode: 755 # 目标权限
    - makedirs: True # 允许创建目录

    创建软连接
    /etc/grub.conf: # 目标路径
    file.symlink:
    - target: /boot/grub/grub.conf # 源路径

    下发整个目录
    /opt/code/flask: # 目标路径
    file.recurse:
    - source: salt://code/flask # 目标所有者
    - include_empty: True # 包含空目录

    安装软件
    mypkgs:
    pkg.installed:
    - pkgs:
    - foo
    - bar: 1.2.3-4
    - baz

    安装指定版本
    mypkgs:
    pkg.installed:
    - pkgs:
    - foo
    - bar: ‘>=1.2.3-4’
    - baz

    指定源安装
    mypkgs:
    pkg.installed:
    - sources:
    - foo: salt://rpms/foo.rpm
    - bar: http://some.org/bar.rpm
    - baz: ftp://some.rog/baz.rpm
    - gux: /var/ftp/pub/gux.rpm

    安装最新版本
    mypkgs:
    pkg.latest:
    - pkgs:
    - foo
    - bar
    - baz

    启动redis
    redis:
    service.running:
    - enable: True
    - reload: True
    - watch:
    -pkg: redis

    自动任务
    date > /tmp/crontest:
    cron.present:
    - user: root
    - minute: '*/5'

    创建用户
    user.present:
    - fullname: bfmq
    - shell: /bin/bash
    - home: /home/bfmq
    - uid: 666
    - gid: 666
    - groups:
    - root
    - bfmq
    - apache

    内核参数
    vm.swappiness:
    sysctl.present:
    - value: 20

    安装python模块
    django:
    pip.installed:
    - name: django >= 1.6, <= 1.7
    -require:
    -pkg.python-pip


    5.watch和require
    require前置
    watch变更后执行


    6.jinja2
    模版语言{{}},{%%}


    7.grain
    minion上的静态信息,如操作系统、cpu、内存、内核数量,重启后会重新计算生成
    salt '*' grains.ls # 查看grains项
    salt '*' grains.item os # 查看某项的值
    salt '*' grains.items # 查看全部项的值
    salt '*' grains.setval my_grain bar # 设置kv
    salt '*' grains.setval "{'k1':'v1', 'k2':'v2'}" # 设置多个kv
    salt -E '^m' grains.setval my_grain '['1','2','3']' # 设置单k多v
    minion的/etc/salt/grains内可查询到刚才设置的值,因此直接在此文件内修改也可以达到添加自定义grain的目的
    salt '*' grains.delval my_grain # 删除grains项,文件内直接删除也是可以的

    mkdir -p /srv/salt/_grains
    vim /srv/salt/_grains/my_grain_mod.py
    salt '*' saltutil.sync_all # 同步全部
    salt '*' sys.reload_modules # 重载模块
    salt '*' grains.item now


    8.pillar
    储存在master上,每台minion只可以查询到自己的pillar
    mkdir -p /srv/salt/_pillar
    vim /srv/salt/_pillar/top.sls # 入口文件
    base:
    'minion_one':
    - minion_one_key

    vim /srv/salt/_pillar/minion_one_key.sls # 各minion自己的pillar文件
    private_key: minion_one_key

    salt '*' saltutil.refresh_pillar # 刷新pillar数据


    9.jinja2+grain+pillar
    呵呵

  • 相关阅读:
    Sea Battle<海战>(思路题)
    Hat's Fibonacci hdu 1250
    Nearest Neighbor Search
    Divisible by Seven CodeForces
    手机自动化测试:appium源码分析之bootstrap六
    手机自动化测试:appium源码分析之bootstrap五
    手机自动化测试:appium源码分析之bootstrap四
    手机自动化测试:appium源码分析之bootstrap三
    手机自动化测试:appium源码分析之bootstrap二
    手机自动化测试:appium源码分析之bootstrap一
  • 原文地址:https://www.cnblogs.com/bfmq/p/6345500.html
Copyright © 2011-2022 走看看