<p>由于ansible输出(playbook的结果)与2.9.2中的语法没有变化,因此我将使用类似的方法来捕获作为变量的ip:</p>
<pre class="lang-py prettyprint-override"><code>import json
long_output = '''"(b'\nPLAY [localhost] **\n\nTASK [Creating abc] ***\nok: [localhost]\n\nTASK [debug] ***\nok: [localhost] => {\n "msg": "10.0.0.1"\n}\n\nPLAY RECAP ******\nlocalhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \n\n', b"[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'\n[WARNING]: Found variable using reserved name: name\n")"'''
cut_string = json.loads(long_output.split("=> ")[1].split('PLAY RECAP')[0])
print(cut_string)
</code></pre>
<h2>输出:</h2>
<pre class="lang-py prettyprint-override"><code>{'msg': '10.0.0.1'}
</code></pre>
<p>然后做这个小把戏,将所有IP地址捕获为列表:(如果您要在多个目的地上运行playbook,可能供将来使用)</p>
<pre class="lang-py prettyprint-override"><code>ip_addresses = [ip for ip in dict(cut_string).values()]
print(ip_addresses)
</code></pre>
<h2>输出:</h2>
<pre class="lang-py prettyprint-override"><code>['10.0.0.1']
</code></pre>
<p>希望你会觉得这很有用</p>