根据另一个游戏的输出调用另一个“游戏” - Ansible

时间:2016-11-10 20:59:52

标签: ansible ansible-playbook selinux

我正在尝试使用 Map<String, String> parameters = new HashMap<>(); if (StringUtils.isNoneBlank(vNumber)) { parameters.put("number", vNumber); } if (StringUtils.isNoneBlank(vOrder)) { parameters.put("order", vOrder); } if (StringUtils.isNoneBlank(vDateFrom)) { parameters.put("dataFrom", vDateFrom); } if (StringUtils.isNoneBlank(vDateTo)) { parameters.put("dateTo", vDateTo); } StringBuilder sqlQuery = new StringBuilder("select * from myTable "); if (parameters.size() > 0) { sqlQuery.append(" where "); for (String paramName : parameters.keySet()) { sqlQuery.append(paramName).append("=").append(parameters.get(paramName)); } } //this will return your query sqlQuery.toString(); 来检查Ansible是否已启用(设置为强制执行),如果没有,请启用它。只有在SELinux被禁用时,才能调用play启用SELinux

SELinux看起来像这样:

playbook

当我运行此任务时,任务- hosts: all # root should execute this. remote_user: root become: yes tasks: # Check if SELinux is enabled. - name: check if selinux is enabled tags: selinuxCheck register: selinuxCheckOut command: getenforce - debug: var=selinuxCheckOut.stdout_lines - name: enable selinux if not enabled already tags: enableSELinux selinux: policy=targeted state=enforcing when: selinuxCheckOut.stdout_lines == "Enforcing" - debug: var=enableSELinuxOut.stdout_lines 失败,原因是“条件检查失败”。输出是:

enableSELinux

我的问题:
1.这是否是根据另一场比赛的输出来执行比赛的正确方法?
2.我如何让它工作?

1 个答案:

答案 0 :(得分:1)

你的剧本是对的。但是stdout_lines是一个列表。您必须比较该列表中的第一个元素。试试这个:

when: selinuxCheckOut.stdout_lines[0] == "Enforcing"