1 ansible
我刚刚开始使用Ansible并尝试了一些我自己的东西.我正在运行以下代码:
---
- hosts: test-server
remote_user: root
tasks:
- name: install java 8
apt: name=openjdk-7-jdk update-cache=yes force=yes
- name: add group
command: addgroup hadoop
Run Code Online (Sandbox Code Playgroud)
并得到以下错误: -
致命:[10.150.0.3]:失败!=> {"已更改":true,"cmd":["addgroup","hadoop"],"delta":"0:00:00.033669","end":"2017-12-08 12:50:15.342671 ","msg":"非零返回码","rc":1,"开始":"2017-12-08 12:50:15.309002","stderr":"addgroup:群组'hadoop'已经存在".,"stderr_lines":["addgroup:组'hadoop'已经存在."],"stdout":"","stdout_lines":[]}
重试,使用:--limit @/root/hdp1.retry
我可以继续删除组'hadoop'并再次尝试代码,它将成功.但我想在代码中创建一些条件,以便如果该组已存在,则该步骤将被忽略.我研究过它,发现我们可以使用一些stat_result when: stat_result.stat.exists == False
.但我不确定如何将其合并到代码中.
这不是你应该如何编写Ansible代码.
Ansible是一种声明性语言,您应该使用提供幂等性的本机模块group
:
- name: Ensure 'hadoop' group exists
group:
name: hadoop
state: present
Run Code Online (Sandbox Code Playgroud)
这样您就不必检查任何内容.相同的任务将创建一个新组(状态changed
)或报告该组已存在(状态ok
).执行后的状态将是相同的:组hadoop
存在.
遗憾的是,并非您要执行的每个操作都已实现为本机模块,这就是command
模块存在的原因.但它应该作为最后的手段.
归档时间: |
|
查看次数: |
823 次 |
最近记录: |