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目录
  • 相关阅读:
    js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
    js 日期比较大小,js判断日期是否在区间内,js判断时间段是否在另外一个时间段内
    tfs 2013 利用 web deploy 完成asp.net站点自动发布
    Web Deploy 服务器安装设置与使用
    MD5加密解密类(asp.net)&使用MD5过时处理
    C# 中Web.config文件的读取与写入
    巧用Ajax的beforeSend 提高用户体验
    一个通用的分页类
    EventSource 对象用于接收服务器发送事件通知,是网页自动获取来自服务器的更新
    Java WebSockets
  • 原文地址:https://www.cnblogs.com/Tang-Yuan/p/14307464.html
Copyright © 2011-2022 走看看