我需要在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也不能解决问题。有没有办法使这个列表成为全球性的?还是存在其他解决方案?
答案 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。