zoukankan      html  css  js  c++  java
  • salt demo 环境

    demo 环境

    安装 virtualBox和vagrant

    1. 安装工具包:virtualBox, vagrant
    2. 下载 https://github.com/UtahDave/salt-vagrant-demo,download zip或者clone项目。
      进入目标文件夹,启动
    cd %homepath%Downloadssalt-vagrant-demo-master
    cd ~Downloadssalt-vagrant-demo-master
    vagrant up
    

    vagrant的使用

    中止vagrant
    vagrant halt
    vagrant destroy  # 关闭
    vagrant up # 启动
    

    安装SaltStack

    • 可以使用pip,source code,或者bootstrap 脚本来安装
    • salt 也提供了用于创建机器,在共有或者私有云上安装salt的工具。salt在物理上,云和虚拟环境上的使用都是一样的。

    如果用的是salt,vagrant,按照上面的操作步骤,就已经安装好了;如果不是上述环境,bootstrap脚本是最简单的安装方式。

    接收连接

    salt master和salt minion之间的连接使用秘钥。
    cd 到 vagrant-demo-master目录下,执行如下命令,进入到salt master

    vagrant ssh master
    
    sudo su # 切到root用户
    
    #登录之后,可以看到salt minion机器的连接情况
    salt-key --list-all
    
    # 接受一个key
    salt-key --accept=<key>
    
    # 接受所有的key
    salt-key --accept-all
    
    # 发送命令
    确认salt minion是否在监听命令
    salt '*' test.ping
    
    

    执行命令

    运行shell命令

    salt '*' cmd.run 'ls -l /etc'
    

    命令语法

    salt '*' pgk.install cowsay
    # '*'是target minion, pgk.install 是 module.function ; cowsay是arguments;'*' 将匹配所有的minion机器
    
    # 使用目标机器过滤
    salt '*' sys.doc
    salt '*' sys.doc pkg
    salt '*' sys.doc pkg.install
    salt '*' disk.usage  # 查看磁盘使用情况
    salt '*' network.interfaces  # list network interfaces
    

    Targeting 指定执行命令的salt minion机器

    • 直接指定某个,或某几个minion机器,支持正则
    salt -E 'minion[0-9]' test.ping
    
    • 使用grains系统
    salt -G 'os:Ubuntu' test.ping
    

    grains用于收集操作系统数据,如域名,ip, kernal, os 类型,以及其它属性
    可以自定义grain,放在salt master的/etc/salt/grains下,或者放在salt minion的配置文件的grains 文件夹下。

    grains.ls 用于列出minion上所有的grains机器。
    grains的名字都是小写

    • minion list,使用逗号隔开
    salt -L 'minion1,minion2' test.pinghttps://docs.saltstack.com/en/getstarted/fundamentals/states.html
    
    • 以上几种方式结合使用
    salt -C 'G@os:Ubuntu and minion* or S@192.168.50.*' test.ping
    

    Create Salt State

    • sate 是可复用的配置模板
      一个任务可能是由多个命令组合成的,这些命令要在不同的salt minion上执行,而对于不同的minon机器而言,每个命令都有细微的差别,错误也不一样。为了解决这样的问题,salt的配置管理提供了可服用的模板,一个模板成为一个state,可以把系统组件或者应用放入一个配置中。

    • state 是用yaml来描述的
      /srv/salt maps 本地目录:salt-vagrant-demo-master/saltstack/salt
      可以使用本地编辑器,然后保存在本地文件系统中,vagrant呈现出来的就是感觉像是在salt master上操作一样

    • 编辑如下文件

    install_network_packages:
      pkg.installed:
        - pkgs:
          - rsync
          - lftp
          - curl
    
    • 保存至demo-master/saltstack/salt/nettools.sls
    • salt master 上应用这个文件,执行命令
    salt 'minion2' state.apply nettools
    # state.apply 添加于2015.5, 之前的版本调用 state.sls
    
    • salt minion上发布:
    salt minion2 state.sls nettools
    

    发布过之后,在没有更新的情况下再次发布,会提示没有任何更新,保持了幂等性。

    更新之后,state会重启服务,copy所有的路径,直接让其他states先使用变量,先运行。

    专业术语

    • formula
      salt state 和salt pillar文件的集合,用于配置一个应用或者系统组件。大多数fomulas是由若干个设计多个salt sate 文件的salt state构成

    • state
      可复用的声明,配置系统的某个部分。每个sate的定义都会使用sate 声明

    • sate 声明
      state file的高级部分,列出了构成state的 函数调用和参数。每个声明都用一个唯一ID开头

    • state 函数
      用于调用执行系统配置任务的命令

    • state file
      sls文件,包括一个或多个声明

    • pillar file
      sls文件,用于定义系统中的用户的变量和数据的

    • state 函数
      salt.state.* 开头的函数
      https://docs.saltstack.com/en/latest/salt-modindex.html#cap-s salt state函数文件

    • yaml 自己的标记语言
      salt使用yaml描述配置
      使用固定的缩进模式,来呈现数据层级之间的关系。salt要求每层开头有两个空行,不是tab。
      破折号代表list中的一个item
      键值对的表示形式key:value

    • 执行顺序
      命令的执行顺序是从上到下。salt提供了可以设置执行顺序的方法,后面介绍。

    Apply and Target State

    • github formulas仓库
    • 批量更新,限制每次更新的salt minon的数量 salt --batch-size 10 '*' state.apply
    • salt state中不包括应该接收配置的salt minion的信息, salt state只定义salt minion如何接收配置。
    • top file,定义在哪儿应用states
    • states和top file一起创建saltstack的核心配置。

    关于top file

    • highstate,会引发所有的目标 minion机器下载 /srv/salt/top.sls文件,找到匹配的目录。如果找到了 匹配的,minon会应用目录下列出的所有的state 文件。很多用户会规律地执行highstate,保证系统正常
    • top file 用于在highstate期间,使得salt minion应用多个state文件。minion使用哪个sate file,sate file的路径会在top file中列出来。
    • top file示例:
    All:
      - vim
      - script dir
      - Admin assts
    Web servers:
      - apache
      - python
      - django
    db server:
      - mysql
    
    转换为top.sls
    base:
      '*'
         - vim
         - script dir
         - Admin assts
      '*web*':
         - apache
         - python
         - jango
      '*db*':
        - mysql
    
    
    base:
      '*':
        - common
      'minion1':
        - nettools
    将这个部署
    salt '*' state.apply
    #calling state.apply with no arguments starts a highstate.
    结果就是,minion1上安装ntetools
    
  • 相关阅读:
    简单实现抽象工厂模式
    mongodb 最新版安装和配置(单机版)
    排序的三个基础算法 (python实现)
    关于学习,关于工具
    嵌入式linux教程
    用软件工程分析开源项目octave的移植
    C++高质量编程笔记
    从高级软件工程角度分析毕业设计项目存在的问题
    史话未完待续。。。
    乔治布尔
  • 原文地址:https://www.cnblogs.com/fthjane/p/6203112.html
Copyright © 2011-2022 走看看