Search code examples
powershellsalt-projectconfigurationmanager

Saltstack waiting for file appearing


Is it possible to do the same thing in Saltsack, but by embedded functionality (without powershell workaround)?

installation:
cmd.run:
- name: ./installation_script

wait for installation:
cmd.run:
 - name: powershell -command "Start-Sleep 10"
 - unless: powershell -command "Test-Path @('/path/to/file/to/appear')"

Solution

  • Unfortunately there is not a better way to do this in the current version of salt. But there was retry logic added into states in the next release Nitrogen.

    The way I would do this in that release is.

    installation:
      cmd.run:
        - name: ./installation_script
    
    wait for installation:
      cmd.run:
        - name: Test-Path @('/path/to/file/to/appear')
        - retry:
          - attempts: 15
          - interval: 10
          - until: True
        - shell: powershell
    

    And this will continue to run the Test-Path until it exits with a 0 exit code (or whatever the equivalent is in powershell)

    https://docs.saltstack.com/en/develop/ref/states/requisites.html#retrying-states

    Daniel