Ansible playbook不会更改文件,但会返回成功

时间:2015-07-30 10:50:14

标签: ansible ansible-playbook

我正在使用ansible在25台服务器上禁用selinux。

- name: disable selinux
  selinux: state=disabled

Serwers在主机文件中定义,我正在使用

运行playbook
ansible-playbook -v -i hosts ansible/server-prepare.yml

输出如下:

GATHERING FACTS ***************************************************************
ok: [10.0.0.10]
(... other servers ...)

TASK: [prepare | disable selinux] *********************************************
changed: [10.0.0.10] => {"changed": true, "configfile": "/etc/selinux/config", "msg": "state change will take effect next reboot", "policy": "targeted", "state": "disabled"}
(... other servers ...)

但是,主机10.0.0.10上的配置文件中的值不会更改:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing

我知道,我需要在配置文件更改后重新启动,但配置文件根本不会更改。 对于playbook ansible中的所有命令返回成功,但是没有效果。

目前,我只尝试将-v添加到ansible-playbook命令。我还有其他一些选项来调试吗?我正在使用ansible-playbook 1.9.2

2 个答案:

答案 0 :(得分:1)

我知道这个问题已经解决了,但是值得回答以供将来参考。

control_path变量在~/.ansible.cfg中设置为无效的非唯一值时会发生类似情况,例如

control_path=%(directory)s/%%r

Ansible然后从任何主机获得第一次成功的响应,并将其作为每个其他主机的结果打印出来,从而提供误报。我想这是因为ansible套接字不再是唯一的。

如果由于长度限制需要将control path更改为较短的路径,请使用:

control_path=%(directory)s/%%C

%%C%%h-%%p-%%r

的哈希值

答案 1 :(得分:0)

为了测试我添加了:

connection: local

这导致对localhost进行了更改,即使ansible报告在其他ips上运行。