How can I show progress for a long-running Ansible task?

后端 未结 4 1708
渐次进展
渐次进展 2021-01-30 16:41

I have a some Ansible tasks that perform unfortunately long operations - things like running an synchronization operation with an S3 folder. It\'s not always clear if they\'re

4条回答
  •  北海茫月
    2021-01-30 17:09

    If you're on Linux you may use systemd-run to create a transient unit and inspect the output with journalctl, like:

    sudo systemd-run --unit foo \                                      
         bash -c 'for i in {0..10}; do 
                       echo "$((i * 10))%"; sleep 1;
                  done;
                  echo "Complete"'
    

    And in another session

    sudo journalctl -xf --unit foo
    

    It would output something like:

    Apr 07 02:10:34 localhost.localdomain systemd[1]: Started /bin/bash -c for i in {0..10}; do echo "$((i * 10))%"; sleep 1; done; echo "Complete".
    -- Subject: Unit foo.service has finished start-up
    -- Defined-By: systemd
    -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit foo.service has finished starting up.
    -- 
    -- The start-up result is done.
    Apr 07 02:10:34 localhost.localdomain bash[10083]: 0%
    Apr 07 02:10:35 localhost.localdomain bash[10083]: 10%
    Apr 07 02:10:36 localhost.localdomain bash[10083]: 20%
    Apr 07 02:10:37 localhost.localdomain bash[10083]: 30%
    Apr 07 02:10:38 localhost.localdomain bash[10083]: 40%
    Apr 07 02:10:39 localhost.localdomain bash[10083]: 50%
    Apr 07 02:10:40 localhost.localdomain bash[10083]: 60%
    Apr 07 02:10:41 localhost.localdomain bash[10083]: 70%
    Apr 07 02:10:42 localhost.localdomain bash[10083]: 80%
    Apr 07 02:10:43 localhost.localdomain bash[10083]: 90%
    Apr 07 02:10:44 localhost.localdomain bash[10083]: 100%
    Apr 07 02:10:45 localhost.localdomain bash[10083]: Complete
    

提交回复
热议问题