需要将/ proc / sys / net / ipv4 / conf / all / forwarding设置为1
可以通过命令
轻松完成- name: Enable IPv4 traffic forwarding
command: echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
但这是一种不好的做法 - 它总会被改变#34;任务。
所以我尝试了以下内容:
- name: Enable IPv4 traffic forwarding
copy: content=1 dest="/proc/sys/net/ipv4/conf/all/forwarding" force=yes
使用msg失败了:"目的地/ proc / sys / net / ipv4 / conf / all不可写"
根据sources似乎副本总是要求父目录是可写的。但是1)我不明白为什么2)任何其他的"惯用的"将目标文件设置为所需值的方法?
答案 0 :(得分:1)
答案 1 :(得分:0)
- name: Enable IPv4 traffic forwarding
copy: content=1 dest="/proc/sys/net/ipv4/conf/all/forwarding" unsafe_writes=true
将禁用Ansible的原子写入功能,而是将1
直接写入文件。
原子写入既好又有用,因为它们意味着您永远不会得到一个交错了多个进程输出的损坏文件,但是/proc
是一种特殊的魔术。 Unix的经典做法是写一个临时文件直到完成,然后将其重命名为您想要的最终文件名,因为/proc
不允许您创建随机的临时文件。
答案 2 :(得分:0)
我找到了解决此问题的方法:
- name: Create temp copy of mongod.conf
copy:
src : /etc/mongod.conf
dest: /tmp/mongod.conf
remote_src: yes
diff: no
check_mode: no
changed_when: false
- name: Copy config file mongod.conf
copy:
src : "/source/of/your/mongod.conf"
dest: "/tmp/mongod.conf"
register: result
- name: Copy temp mongod.conf to /etc/mongod.conf
shell: "cp --force /tmp/mongod.conf /etc/mongod.conf"
when: result.changed == true