有没有办法让一个角色在戏剧中成功之前?

Posted

技术标签:

【中文标题】有没有办法让一个角色在戏剧中成功之前?【英文标题】:Is there a way to running a role until it succeeds in a play? 【发布时间】:2020-03-20 12:55:11 【问题描述】:

我有一个角色名称 system_check。 系统启动后,我需要等到这个角色成功。 有没有办法重复运行这个角色直到它成功?

【问题讨论】:

我相信你只能重新运行任务,直到它们成功并重试了一定次数。您最好确定哪些任务容易失败并在那里实施重试机制。 使用wait_for module 来确保您的机器已经(重新)启动并在之后扮演您的 system_check 角色可能是一个更好的主意。没有简单的方法可以在完整角色/包含上执行 until 循环。 【参考方案1】:

问:“有没有办法让一个角色在演戏成功之前运行?”

答:不可能。模块include_role 说

忽略一些关键字,例如直到和重试。

改为使用ansible-runner。例如Use Runner as a standalone command line tool 和测试artifacts(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

【讨论】:

2020 年 9 月仍有此问题。希望可以尽快解决。我遇到了一个时间问题,即运行多个进程来配置相同的服务器。当它们重叠时,角色会失败,但重新启动角色会解决问题。

以上是关于有没有办法让一个角色在戏剧中成功之前?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让 guildMemberUpdate 事件区分角色更改和昵称更改,而不是检测其中任何一个?

有没有办法阻止 discord.py 机器人提及角色?

如何围绕一个角色制作动画

有没有办法在 discord.js 中使用所有人角色

浅谈敏捷组织中PMO的角色

hibernate多对多