我正在使用ansible在25台服务器上禁用selinux。
- name: disable selinux
selinux: state=disabled
Serwers在主机文件中定义,我正在使用
运行playbookansible-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
。
答案 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上运行。