Ansible 有没有办法让一个角色一直演到成功?

Ansible 有没有办法让一个角色一直演到成功?,ansible,repeat,roles,Ansible,Repeat,Roles,我有一个角色名称系统检查。 系统启动后,我需要等待此角色成功。 有没有办法重复运行此角色直到成功 问:“有没有办法让一个角色在一出戏中成功之前一直运行下去?” 不可能。模块说 忽略某些关键字,如直到和重试 相反,使用。例如和测试(rc、status、stdout)。 比如说 #!/bin/bash rcfile=private1/artifacts/ID01/rc statusfile=private1/artifacts/ID01/status ansible-runner -p

我有一个角色名称系统检查。 系统启动后,我需要等待此角色成功。 有没有办法重复运行此角色直到成功

问:“有没有办法让一个角色在一出戏中成功之前一直运行下去?”

不可能。模块说

忽略某些关键字,如直到和重试

相反,使用。例如和测试(rc、status、stdout)。
比如说

#!/bin/bash

rcfile=private1/artifacts/ID01/rc
statusfile=private1/artifacts/ID01/status

    ansible-runner -p test.yml -i ID01 run private1
    rc=$(cat $rcfile)
    echo "rc: $rc"

    until [ "0"  == "$rc" ]; do
        ansible-runner -p test.yml -i ID01 run private1
        rc=$(cat $rcfile)
        echo "rc: $rc"
    done


$ tree private1
private1
├── artifacts
├── daemon.log
├── env
│   ├── envvars
│   ├── extravars
│   ├── passwords
│   ├── settings
│   └── ssh_key
├── inventory
│   └── hosts
└── project
    ├── roles
    │   └── testrole
    │       ├── defaults
    │       │   └── main.yml
    │       ├── handlers
    │       │   └── main.yml
    │       ├── meta
    │       │   └── main.yml
    │       ├── README.md
    │       ├── tasks
    │       │   └── main.yml
    │       ├── tests
    │       │   ├── inventory
    │       │   └── test.yml
    │       └── vars
    │           └── main.yml
    └── test.yml

我相信您只能重新运行任务,直到它们通过一定次数的重试成功。您最好确定哪些任务容易失败,并在那里实现重试机制。使用来确保您的计算机已(重新)启动,并在之后扮演系统检查角色可能是更好的主意。直到循环到一个完整的角色/include,才有干净简单的方法来做
。这个问题在2020年9月仍然存在。希望能尽快解决。我遇到了一个计时问题,即有多个进程在运行以配置相同的服务器。当它们重叠时,角色将失败,但重新启动角色将解决问题。