如何使用Ansible命令与项目?

时间:2017-03-22 19:44:22

标签: ansible

我想配置我的Ansible手册,将我/etc/hosts文件中的某些行复制到临时文件中。这应该很容易做到:

---
hosts: 127.0.0.1
gather_facts: False
tasks:
  - command: grep {{ item }} /etc/hosts >> /tmp/hosts_to_backup
    with_items:
      - web
      - database

我认为这会有效,但我收到了错误:

  

TypeError:字符串指示必须是整数,而不是str

我知道Ansible对于不带引号的大括号很挑剔所以我在整个命令行中加了双引号,但我仍然得到错误。

- command: "grep {{ item }} /etc/hosts >> /tmp/hosts_to_backup"

1 个答案:

答案 0 :(得分:4)

我不知道你为什么会得到你声称得到的错误(如果你的系统向Ansible返回一个奇怪的错误信息,那么这可能与操作系统有关。)

有一点可以肯定,您无法使用command模块进行文件重定向。相反,您需要使用shell模块,因此请将操作替换为:

- shell: grep {{ item }} /etc/hosts >> /tmp/hosts_to_backup

除此之外,您的任务中with_items没有问题。但是这个剧本没有-

以下代码有效:

---
- hosts: 127.0.0.1
  gather_facts: False
  tasks:
    - shell: grep {{ item }} /etc/hosts >> /tmp/hosts_to_backup
      with_items:
        - web
        - database