我希望在交互式控制台中执行ansible playbook时改变其行为,而不是非交互式控制台(如CI环境)
如何从剧本中做到这一点?
答案 0 :(得分:0)
您需要一种方法来确定您的命令是否从CI运行。如果您可以访问要运行的命令,那么我建议只需在命令中添加一些额外的变量,例如
ansible-playbook -i inv.yml --extra-vars "ci=True" playbook.yml
然后您可以参考剧本中的ci
变量来确定要做什么。
如果这很麻烦,那么最好的办法就是依赖大多数CI服务器设置的环境变量。您应该查阅CI服务器的文档,它是否设置了任何类型的环境变量,如果是,它们是做什么的。大多数(但不是全部)都将CI
变量设置为true
。在最坏的情况下,您应该在CI服务器的配置中手动指定此变量。
您应该能够使用以下方法访问管理主机的环境变量:
{{ lookup('env','CI') }}
当然,要使这些选项起作用,您必须确保在非交互式shell(CI应该为您执行)上正确设置环境变量,而不是在交互式shell上设置。