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目录
  • 相关阅读:
    Ubuntu把在任事器范围起更次要的脚色
    linux下firefox 3.0 flash失效的治理法子
    Fedora的一些根蒂设置装备摆设(三、有关Firefox的放慢设置装备摆设)
    Linux操纵零碎下即时通讯软件
    QGtkStyle 让 KDE 法式拥有 Gnome 外不雅
    Ubuntu 8.04 告白登岸德国柏林的地铁零碎
    关于linux的一些重要日记文件
    linux下挂载U盘进程
    对Fedora9的一些心得领会(另附一些末尾设置装备安插)
    使用distinct在mysql中查询多条不重复记载值的处理责罚步调
  • 原文地址:https://www.cnblogs.com/Tang-Yuan/p/14307464.html
Copyright © 2011-2022 走看看