zoukankan      html  css  js  c++  java
  • saltstack状态判断unless与onlyif

    很多时候我们在编写 state 文件时候需要进行判断,判断该目录或文件是否存在,判断该配置是否已经已添加,然后根据判断结果再决定命令或动作是否执行,这时候就需要用到了状态判断的unlessonlyif

    unless

    unless示例:需求创建/tmp/unless.txt文件,存在则不创建,不存在则创建

    [root@salt-master ~]# cat /home/salt/unless.sls 
    test-unless:
      cmd.run:
        - name: touch /tmp/unless.txt
        - unless: test -f /tmp/unless.txt
    
    
    [root@salt-master ~]# salt 'salt-minion01' state.sls unless
    salt-minion01:
    ----------
              ID: test-unless
        Function: cmd.run
            Name: touch /tmp/unless.txt
          Result: True
         Comment: Command "touch /tmp/unless.txt" run
         Started: 15:10:51.522319
        Duration: 31.822 ms
         Changes:   
                  ----------
                  pid:
                      6538
                  retcode:
                      0
                  stderr:
                  stdout:
    
    Summary for salt-minion01
    ------------
    Succeeded: 1 (changed=1)
    Failed:    0
    ------------
    Total states run:     1
    Total run time:  31.822 ms
    #上面第一次执行,可以看到发生了一次更改,创建了 /tmp/unless.txt文件
    
    
    [root@salt-master ~]# salt 'salt-minion01' state.sls unless 
    salt-minion01:
    ----------
              ID: test-unless
        Function: cmd.run
            Name: touch /tmp/unless.txt
          Result: True
         Comment: unless condition is true
         Started: 15:11:40.819789
        Duration: 10.477 ms
         Changes:   
    
    Summary for salt-minion01
    ------------
    Succeeded: 1
    Failed:    0
    ------------
    Total states run:     1
    Total run time:  10.477 ms
    #第二次执行,可以看到该文件已经存在,并没有再次创建

    通过上面的小案例可以看出,当unless返回为真则不执行,当unless返回为假才执行。

    onlyif

    onlyif正好和unless相反,当onlyif返回为真执行,当onlyif返回为假不执行

    onlyif示例:需求,当/tmp/onlyif.txt文件存在,则创建/tmp/onlyif目录,不存在,则不创建/tmp/onlyif目录

    [root@salt-master ~]# cat /home/salt/onlyif.sls 
    test-onlyif:
      cmd.run:
        - name: mkdir /tmp/onlyif
        - onlyif: test -f /tmp/onlyif.txt
    
    
    [root@salt-master ~]# salt 'salt-minion01' state.sls onlyif 
    salt-minion01:
    ----------
              ID: test-onlyif
        Function: cmd.run
            Name: mkdir /tmp/onlyif
          Result: True
         Comment: onlyif condition is false
         Started: 15:34:56.460583
        Duration: 9.612 ms
         Changes:   
    
    Summary for salt-minion01
    ------------
    Succeeded: 1
    Failed:    0
    ------------
    Total states run:     1
    Total run time:   9.612 ms
    
    #通过上面可以看到,由于/tmp/onlyif.txt文件不存在,并没有创建;手动创建一个/tmp/onlyif.txt文件再次执行
    [root@salt-master ~]# salt 'salt-minion01' cmd.run "touch /tmp/onlyif.txt"
    salt-minion01:
    [root@salt-master ~]# salt 'salt-minion01' state.sls onlyif 
    salt-minion01:
    ----------
              ID: test-onlyif
        Function: cmd.run
            Name: mkdir /tmp/onlyif
          Result: True
         Comment: Command "mkdir /tmp/onlyif" run
         Started: 15:38:07.712492
        Duration: 14.646 ms
         Changes:   
                  ----------
                  pid:
                      6871
                  retcode:
                      0
                  stderr:
                  stdout:
    
    Summary for salt-minion01
    ------------
    Succeeded: 1 (changed=1)
    Failed:    0
    ------------
    Total states run:     1
    Total run time:  14.646 ms
    
    #可以看到上面我们手动创建了一个/tmp/onlyif.txt文件后再次执行,则发生了改变,在/tmp/创建了onlyif目录
  • 相关阅读:
    前方高能!!!一大泼干货来袭。。。。
    spring-cloud-gateway(三)自定义lb实现
    spring-cloud-gateway(二)es代理功能需求
    spring-cloud-gateway(一)代码分析
    一个spark MurmurHash map类加器
    hbase RegionTooBusyException报错异常处理
    hbase HexStringSplit 预分区
    spark读写hbase的几种方式,及读写相关问题
    实现elasticsearch网关,兼容不同版本es,滚动升级-功能验证开发
    k8s平台集成kong ingress 布署konga集成ui
  • 原文地址:https://www.cnblogs.com/Tang-Yuan/p/14307464.html
Copyright © 2011-2022 走看看