首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible与with_items

Ansible与with_items
EN

Stack Overflow用户
提问于 2016-09-30 09:00:31
回答 3查看 19.5K关注 0票数 3

我想知道

代码语言:javascript
复制
  - shell: >
            hostname;
            whoami;

代码语言:javascript
复制
  - shell: "{{item}}"
    with_items: ['hostname', 'whoami']

是等价物吗?在第二个示例中,始终会对两个命令(主机名、)使用相同的SSH连接吗?

在我看来是假的..。

代码语言:javascript
复制
  - 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

里卡多

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-30 10:15:11

Ansible将每个循环迭代作为单独的运行运行,因此您将得到不同的ssh会话。

行为变量中描述了一些异常:

代码语言:javascript
复制
"apk, apt, dnf, package, pacman, pkgng, yum, zypper"

这个模块足够聪明,可以将所有项目压缩到一个任务调用中。

票数 6
EN

Stack Overflow用户

发布于 2019-03-13 18:30:11

正如在前面的答案中提到的,with_items使ansible运行单独的循环迭代。这的另一个好处是可调试性(尤其是可调试性)。如果许多命令被链接在一个shell任务下。对于上面的内容,ansible将在内部运行如下:

代码语言:javascript
复制
- shell: "{{item}}"
    with_items: ['hostname', 'whoami']

相当于:

代码语言:javascript
复制
- shell: 'hostname:

- shell: 'whoami'

由于它被分成两个独立的任务,如果其中一个任务失败了,ansible将指向确切的失败任务(命令),而不是替代的整个链。

loops.html

票数 0
EN

Stack Overflow用户

发布于 2019-04-04 10:43:10

只需将命令列表添加到变量中,并在需要执行它们的位置替换变量即可。

代码语言:javascript
复制
vars:
  shell_cmd:
    - "hostname &&"
    - whoami
tasks:
  - shell: "{{shell_cmd}}"

享受吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39787609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档