我想知道在模块执行时是否有办法打印信息 - 主要是作为证明过程正在运行并且没有挂起的手段。具体来说,我试图在执行cloudformation模块期间得到反馈。我试图修改(Python)的源代码,包括以下内容:Ansible - 我可以在模块执行期间打印信息吗?
def debug(msg):
print json.dumps({
"DEBUG" : msg
})
...
debug("The stack operation is still working...")
这是什么做的,当然,是存储所有这些输出,仅打印出来后,所有的模块都执行完毕。所以对于特别大的云信息模板,这意味着我等待大约5分钟左右,然后突然在屏幕上看到大量文字出现在最后。我期待的是每隔x秒打印一次“堆叠操作仍在工作......”。
看来Asynchronous Actions and Polling是我正在寻找的......但是这也没有奏效。整个任务“为{{stackname}}启动CloudFormation”完全被忽略。请参阅下面从我的剧本的相关(YAML)片段:
- name: Launch CloudFormation for {{ stackname }}
cloudformation: >
stack_name="{{ stackname }}" state=present
region="{{ region }}" disable_rollback=true
template="{{ template }}"
register: cloud
args:
template_parameters:
KeyName: "{{ keyName }}"
Region: "{{ region }}"
SecurityGroup: "{{ securityGroup }}"
BootStrapper: "{{ bootStrapper }}"
BootStrapCommand: "powershell.exe -executionpolicy unrestricted -File C:\\{{ bootStrapper }} {{ region }}"
S3Bucket: "{{ s3Bucket }}"
async: 3600
poll: 30
这告诉我,异步是为典型的shell命令,而不是复杂的模块,如cloudformation。 或 - 我可能做错了什么。
任何人都可以对这种情况有所了解吗?再次,对于需要一段时间的大型云计算任务,我希望定期指示任务仍在运行,而不是挂起。我感谢帮助!
谢谢。我至少可以做一些这样的事情,以30秒的间隔报告一个简单的提示“操作仍在进行......”。 Ansible并不支持真正的异步过程,这真是一种遗憾。 – Brian 2014-09-18 20:04:10
虽然在实践中,这似乎不适用于CloudFormation模块。同样,看起来只有简单的shell命令可以异步执行(或作为后台进程)。**所以答案仍然是一个具体的NO。** – Brian 2014-09-19 14:55:42