很好在特定主机上运行处理程序

时间:2019-07-05 14:15:02

标签: ansible ansible-handlers

我需要在ansible运行期间收集一些信息,并最终打印此信息。

我尝试定义角色中的空列表变量。我在剧本处理程序中添加了代码,该处理程序在剧本末尾为该变量的列表蚂蚁打印值添加了新值。

const methods = {

    methodOne: () => {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log('method1')
                resolve()
            },1000)
           
        }).catch(e=>console.log(e))
    },
    methodTwo: () => {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log('method2')
                resolve()
            }, 1000)
        }).catch(e => console.log(e))

    },
    methodThree: () => {
        return new Promise((resolve, reject) => {
            
            setTimeout(() => {
                console.log('method3')
                reject('whoops something happened')
            }, 1000)
        }).catch(e => console.log(e))
},

    runMethods: () => {
        let run = new Promise(resolve=>resolve(true))
        run
            .then(result1 => methods.methodOne())
            .then(result2 => methods.methodTwo())
            .then(result3 => methods.methodThree())
            .catch(e=>console.log(e))
    }
}   

methods.runMethods()

我想念与set_fact主机相关的信息。因此,一旦我开始使用其他主机,此解决方案便停止工作。 Delegate_to也不能解决问题。有没有办法使这个列表成为全球性的?还是存在其他解决方案?

1 个答案:

答案 0 :(得分:0)

Q: Add new value to list and print it at the end of the playbook. Is there way to make this list global?

A:不,不是。 “ Global范围由配置,环境变量和命令行设置。”主持人不能在播放或全局范围内 set_fact

您可能想看看ansible-runner。参见Sending Runner Status and Events to External Systems