使用Ansible将服务器添加到/ etc / exports

时间:2019-06-17 15:25:33

标签: ansible ansible-2.x

我正在尝试为{{ips}}变量中的每个值向/ etc / exports添加行,而不是将它们都放在同一行。

我尝试了几种不同的方法,包括lineinfile,blockinfile和replace,这使我比其他人更接近我,但我仍然无法获得想要的结果。

对于某些服务器,我以这种格式添加了它们

/foo/bar server1.com (rw,sync,no_root_squash)
/foo/bar server2.com (rw,sync,no_root_squash)
/foo/bar server3.com (rw,sync,no_root_squash)

使用此代码。

- name: Add New server to /etc/exports
lineinfile:
  path: /etc/exports
  insertafter: "# This Line"
  line: "/foo/bar {{ item }}(rw,sync,no_root_squash)"
loop: "{{ ips.split(',') }}"

对于其他服务器,我需要使用这种格式的服务器,但似乎无法正常工作。

/foo/bar server1(rw,sync,no_root_squash) server2(rw,sync,no_root_squash) server3(rw,sync,no_root_squash)

1 个答案:

答案 0 :(得分:0)

我想出了一种方法来获得想要的东西。如果有人知道更好的方法,我很乐意接受建议,但是到目前为止,它是可行的。

  - name: Add Servers to /etc/exports
    lineinfile:
      path: /etc/exports
      insertafter: "# This Line"
      line: "/foo/bar {{ ips.split(',') | join('(rw,sync,no_root_squash) ') }}(rw,sync,no_root_squash)"

这会将服务器以这种格式添加到ips变量中

/foo/bar server1(rw,sync,no_root_squash) server2(rw,sync,no_root_squash) server3(rw,sync,no_root_squash)