zoukankan      html  css  js  c++  java
  • salt 基本配置管理

    使用salt state执行一个复制文件

    1、在master 的file_root目录/srv/salt下编辑top.sls:

    base:
      '*':
        - pip

    2、在/srv/salt目录下创建pip目录,编辑init.sls文件:

    这里是复制get-pip.py文件:

    pip:
      file.managed:
        - source: salt://get-pip.py
        - name: /home/cheeron/get-pip.py
        - user: cheeron
        - group: cheeron
        - mode: 644

    这里的pip定义,使用了file.managed函数,

    1. source指定要复制的文件在master上的路径,此处salt://是相对于salt root目录的
    2. name 指定复制到minion上的路径
    3. user 指定文件的所有用户 group指定文件的所属用户
    4. mode指定文件的权限用数字表示 4代表读权限 2代表写权限 1代表执行权限

    3. 然后就可以通过命令 salt ‘*’ state.highstate 执行文件复制任务

    执行过程:

    test1:
    ----------
              ID: pip
        Function: file.managed
            Name: /home/cheeron/get-pip.py
          Result: True
         Comment: File /home/cheeron/get-pip.py is in the correct state
         Started: 14:44:18.203548
        Duration: 36.115 ms
         Changes:   
    
    Summary
    ------------
    Succeeded: 1
    Failed:    0
    ------------
    Total states run:     1
    test2:
    ----------
              ID: pip
        Function: file.managed
            Name: /home/cheeron/get-pip.py
          Result: True
         Comment: File /home/cheeron/get-pip.py updated
         Started: 18:14:04.441644
        Duration: 5567.605 ms
         Changes:   
                  ----------
                  diff:
                      New file
                  group:
                      cheeron
                  mode:
                      0644
                  user:
                      cheeron
    
    Summary
    ------------
    Succeeded: 1 (changed=1)
    Failed:    0
    ------------
    Total states run:     1

    如果get-pip.py文件有变化,那么在执行state.highstate命令时对通过diff对比是哪里有改动。

    1. .sls 这个文件是被放弃的不被允许的 (i.e. webserver.sls 来源于 webserver)

    2. 使用子目录来做组织是个很好的选择
      1. 每个子目录描述一个资源

      2. pip.dev 用来表示子目录 pip/dev.sls

    3. init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以``pip/init.sls`` 就是表示``pip``.

    4. 如果同时存在``pip.sls`` 和 pip/init.sls,则 pip/init.sls 被过滤,pip.sls``将被用来表示pip.

    复制文件并且执行,通过cmd.run实现:

    pip:
      file.managed:
        - source: salt://get-pip.py
        - name: /home/cheeron/get-pip.py
        - user: cheeron
        - group: cheeron
        - mode: 644
      cmd.run:
        - name: python /home/cheeron/get-pip.py
        - require:
          - file: /home/cheeron/get-pip.py

    这样,在执行了复制命令之后就会执行python /home/cheeron/get-pip.py

  • 相关阅读:
    正则表达式 之领宽断言
    bat(续七)-for语句(循环结构)
    RBAC权限管理
    Redis缓存服务搭建及实现数据读写
    Myeclipse集成Maven(图文说明)
    实习第四周
    POJ 3461 Oulipo KMP算法题解
    原创文章
    apue和unp的学习之旅07——多种边界条件的讨论
    单链表的实现
  • 原文地址:https://www.cnblogs.com/cheerong/p/4829003.html
Copyright © 2011-2022 走看看