zoukankan      html  css  js  c++  java
  • salt基本使用之一(1)

    1.帮助文档

    以cmd函数为例子说下salt中的一些帮助信息

    # 查看指定modules用法
    	salt '*' sys.doc cmd
    
    # 查看所有的modules列表
    	salt '*' sys.list_modules 
    
    # 查看模块下的方法
    	salt '*' sys.list_functions cmd
    	
    	
    # 查看所有states列表
    	salt '*' sys.list_state_modules
    	
    # 查看指定state的所有functions
    	salt '*' sys.list_state_functions
    	
    # 查看指定states的用法
    	salt '*' sys.state_doc cmd
    
    # 查看指定states指定function用法
    	salt '*' sys.state_doc cmd.run
    

    2.准备工作

    一台master(192.168.111.128)

    两台minion(192.168.111.129,192.168.111.133)

    minion需要配置/etc/salt/minion中的id(为minion ID)和master(设置为master地址)

    1.加入认证列表

    [root@master salt]# salt-key -L
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    Centos
    Ubuntu
    Rejected Keys:
    [root@master salt]# salt-key -A -y
    The following keys are going to be accepted:
    Unaccepted Keys:
    Centos
    Ubuntu
    Key for minion Centos accepted.
    Key for minion Ubuntu accepted.
    

    2.测试是否可以远程操作

    [root@master salt]# salt '*' test.ping # 测试服务器是否联通
    Centos:
        True
    Ubuntu:
        True

    2.state.sls文件入门

    salt默认的管理目录为/srv/salt,在这里我们改为了/base/salt(在master的/etc/salt/master中修改file_roots)

    看下/base/salt中的文件结构

    ├── foo.conf  # 配置文件(需要下发到minion)
    ├── one
    │   └── init.sls
    ├── three
    │   └── init.sls
    ├── top.sls
    └── tow
        └── init.sls
    

    在看下各个文件里的内容

    [root@master salt]# cat top.sls 
    base:  # base环境
      '*':
        - one  # 执行one.sls或者one下的init.sls
      'Centos':
        - tow  # 执行tow.;sls或者tow下的init.sls
      'Ubuntu':
        - three  # 执行three.sls或者three下的init.sls
    [root@master salt]# cat one/init.sls 
    /tmp/foo.conf:  # 如果为指定name参数,这name的参数为这个
      file.managed:  # 上传文件
        - source: salt://foo.conf  # 源地址为/base/salt下(salt://表示在master配置文件中配置的地址)
        - user: root
        - group: root
        - mode: 777
    #- name: /tmp/foo.conf # 或在这里定义name并赋值 [root@master salt]# cat tow/init.sls show_ip: cmd.run: # 远程执行命令的函数 - name: ifconfig [root@master salt]# cat three/init.sls show_file: cmd.run: - name: cat /tmp/foo.conf [root@master salt]#

    3.关于sls文件的说明

    一,普通的state文件说明:

      1.state文件的编写时YAML语法(后面会介绍YAML的具体规则)

      2.文件的执行使用state.sls

    salt '*' state.sls one  # 默认找到/base/salt下的one.sls,如果没有找one/init.sls,如果在没有则报错

    二,top.sls文件说明:

      1.top.sls文件不是必须的。

      2.top.sls入口文件可以同时对多台机器进行一个简单的配置管理。

      3.运行top.sls文件使用state.highstate。

    salt '*' state.highstate
    

    4.执行结果处理(redis)

    Teturn是在Master端触发任务,然后Minion接受处理任务后直接与Return存储服务器建立连接

    Return组件可以理解为salt的执行结果返回存储或者返回给其他程序,可以对salt的操作进行记录。

    查看所有的Return列表

    salt '*' sys.list_returners
    

    下面我来演示下把执行结果返回到redis中

    一,环境配置

      1.在所有的minion端安装pip,通过pip安装python的redis模块。

      2.所有的minion端配置文件中添加以下内容(Return 数据库信息)

    redis.db: '0'
    redis.host: '127.0.0.1'  # 这里的主机为192.168.111.131
    redis.port: 6379
    

    二,安装redis并配置

      3.在192.168.111.129上用yum安装redis数据库,并配置redis地址

    yum install redis
    sed -i -e 's@^bind 127.0.0.1@bind 192.168.111.129@g' /etc/redis.conf 
    

    三,信息的查看

      4.在redis上查看信息

    redis-cli -h 192.168.111.129 monitor  # 动态查看数据库信息
    redis-cli -h 192.168.111.129  # 连接数据库查询
    

    四,执行命令

    [root@master jobs]# salt '*' test.ping
    Centos:
        True
    Ubuntu:
        True
    # 此时去redis服务器就可以查看job的信息了。

    4.Job管理

    在salt里执行任何一个操作都会在master上产生一个jid号,minion端在/var/cache/salt/minion/proc目录下创建一个以jid号码为名称的文件,文件内是此次操作的记录,操作处理完成后改文件会自动删除。而master端会记录每次操作的详细信息,这个记录保存到/var/cache/salt/master/jobs目录下两位16进制数组成的目录名下。

    一,salt-run jobs管理

    下面列除salt-run中jobs的用法:

    [root@master jobs]# salt-run -d | grep jobs
    'jobs.active:'  # 查看正在运行的jobs
        Return a report on all actively running jobs from a job id centric
            salt-run jobs.active
    'jobs.list_job:'  # 指定jid查看jobs详细信息
            salt-run jobs.list_job 20130916125524463507
    'jobs.list_jobs:'  # 查看所有jobs信息
        List all detectable jobs and associated functions
            salt-run jobs.list_jobs
    'jobs.lookup_jid:'  # 指定jid查询jobs结果
            salt-run jobs.lookup_jid 20130916125524463507
            salt-run jobs.lookup_jid 20130916125524463507 outputter=highstate
    'jobs.print_job:'  # 指定jid查询jobs详细信息
            salt-run jobs.print_job 20130916125524463507
    

    二,通过saltutil模块管理job

    salt-run不支持kill某个job,所有使用saltutil模块管理job

    先来看看saltutil模块的使用:

    [root@master jobs]# salt * sys.doc saltutil | grep job
    'saltutil.find_cached_job:'  # 查询job cache信息
        Return the data for a specific cached job id
            salt '*' saltutil.find_cached_job <job id>
    'saltutil.find_job:'  # 指定jid查看job信息
        Return the data for a specific job id
            salt '*' saltutil.find_job <job id>
    'saltutil.kill_job:'  # 杀掉job(发送SIGTERM 9信号方式)
        Sends a kill signal (SIGKILL 9) to the named salt job's process
            salt '*' saltutil.kill_job <job id>
            salt '*' saltutil.runner jobs.list_jobs
    'saltutil.signal_job:'  # 发送指定信号
        Sends a signal to the named salt job's process
            salt '*' saltutil.signal_job <job id> 15
    'saltutil.term_job:'  # 删掉job(发送SIGTERM 15信号方式)
        Sends a termination signal (SIGTERM 15) to the named salt job's process
            salt '*' saltutil.term_job <job id>
    
    最新内容可以看我的blog: 40kuai
  • 相关阅读:
    设计模式(十)—— 装饰者模式
    设计模式(九)—— 组合模式
    设计模式(八)—— 桥接模式
    设计模式(七)—— 适配器模式
    LINQ to XML
    设计模式(六)—— 单例模式
    设计模式(五)—— 原型模式
    Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案
    基于.Net平台常用的组件和框架整理
    Javascript中最常用的55个经典技巧(转)
  • 原文地址:https://www.cnblogs.com/40kuai/p/6655211.html
Copyright © 2011-2022 走看看