Alexander
Alexander

Reputation: 91

SaltStack result success only if return is expected

I'm using win_wua.list to check if the servers have available updates

update_system:
  module.run:
    - name: win_wua.list

The problem is that no meter if the server have pending updates or not the state result is "True" But my goal is to run this as post-check so I want the state to be "successful" only if the return is "Nothing to return" in any other case I would like the state to be with result "False"

LKA5:
----------
          ID: update_system
    Function: module.run
        Name: win_wua.list
      Result: True
     Comment: Module function win_wua.list executed
     Started: 17:04:29.326587
    Duration: 4017.653 ms
     Changes:
              ----------
              ret:
                  Nothing to return

Summary for LKA5
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1
Total run time:   4.018 s
LKA3:
----------
          ID: update_system
    Function: module.run
        Name: win_wua.list
      Result: True
     Comment: Module function win_wua.list executed
     Started: 17:04:25.563111
    Duration: 7113.497 ms
     Changes:
              ----------
              ret:
                  Nothing to return

Summary for LKA3
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1
Total run time:   7.113 s

Upvotes: 0

Views: 1270

Answers (1)

seshadri_c
seshadri_c

Reputation: 7340

So there are two modules to manage Windows updates with Saltstack:

Seems you are using the execution module, which always runs irrespective of the current state of system. So it will always report as changed. On the other hand, the state module will only run if updates are required.

The following state ID will ensure that the system is updated (as specified), and it will report as changed. Then we can use the requisite system to trigger another state.

Example:

# Including driver updates for example
update_system:
  wua.uptodate:
    - drivers: True

# Verify if further updates are there
verify_updates:
  module.run:
    - name: win_wua.list
    - install: True
    - onchanges:
        - wua: update_system

In the above example, if update_system didn't update anything (there were no updates), then verify_updates won't run. If some packages were updated, then verify_updates will run. There are other requisites (linked above) that can be considered as per your use case.

Upvotes: 1

Related Questions