我想知道
- shell: >
hostname;
whoami;和
- shell: "{{item}}"
with_items: ['hostname', 'whoami']是等价物吗?在第二个示例中,始终会对两个命令(主机名、)使用相同的SSH连接吗?
在我看来是假的..。
- shell: "{{item}}"
with_items: ['export miavar=PIPPO', 'echo $miavar']
(item=export miavar=PIPPO) => {"changed": true, "cmd": "export miavar=PIPPO", "stdout": ""}
(item=echo $miavar) => {"changed": true, "cmd": "echo $miavar", "stdout": ""}-不允许2.1.1.0
里卡多
发布于 2016-09-30 10:15:11
Ansible将每个循环迭代作为单独的运行运行,因此您将得到不同的ssh会话。
在行为变量中描述了一些异常:
"apk, apt, dnf, package, pacman, pkgng, yum, zypper"这个模块足够聪明,可以将所有项目压缩到一个任务调用中。
发布于 2019-03-13 18:30:11
正如在前面的答案中提到的,with_items使ansible运行单独的循环迭代。这的另一个好处是可调试性(尤其是可调试性)。如果许多命令被链接在一个shell任务下。对于上面的内容,ansible将在内部运行如下:
- shell: "{{item}}"
with_items: ['hostname', 'whoami']相当于:
- shell: 'hostname:
- shell: 'whoami'由于它被分成两个独立的任务,如果其中一个任务失败了,ansible将指向确切的失败任务(命令),而不是替代的整个链。
发布于 2019-04-04 10:43:10
只需将命令列表添加到变量中,并在需要执行它们的位置替换变量即可。
vars:
shell_cmd:
- "hostname &&"
- whoami
tasks:
- shell: "{{shell_cmd}}"享受吧!
https://stackoverflow.com/questions/39787609
复制相似问题