获得价值不确定的错误

问题描述:

我有这个剧本获得价值不确定的错误

--- 
- hosts: all 
    handlers: 
    - name: user-create 
    user: name=oracle state=present 
    tasks: 
    - name: "check user" 
    command: /usr/bin/id oracle 
    register: output 
    notify: user-create 
    when: output.rc == 1 

但每当我在哪里oracle用户是不存在的,遇到了此问题

“失败”的系统上运行以下命令: true, “msg”:“条件检查'output.rc == 1'失败。错误是:评估条件时发生错误(output.rc == 1):'output'未定义\ n \ n错误似乎是已经在'/user-check.yml'中:第10行第5列,但可能在文件中的其他地方取决于确切的语法问题。\ n \ n违规l INE似乎是:\ n \ n任务:\ n - 名称:\ “检查用户\” \ n ^这里\ n”个

+1

当任务执行前评估**语句时**,**任务执行后**输出变量填充**。你的目标是什么? –

+0

Hello Konstantin, 我的目标是检查oracle用户是否存在,删除它并重新创建用户。这就是为什么我注册的输出,然后如果rc是1,通知处理程序.Ps指导我如何实现相同的 – achak01

+0

您的要求是不幂等,它会删除/创建用户每个剧本运行。这是不好的模式。看看@ techraf的答案。如果你想总是重新创建用户,只需要添加'state = absent'任务。 –

回答基于评论:

其实我wanto检查如果用户存在,ID存在删除并重新创建用户

正确的方法做,在Ansible是:

--- 
- hosts: all 
    tasks: 
    - name: ensure user 'oracle' does not exist 
     user: name=oracle state=absent 

    - name: ensure user 'oracle' exists 
     user: name=oracle state=present 

而这一切。

Ansible注意不要尝试创建一个用户,如果它已经存在;而不是试图删除一个用户,如果没有。

+0

其实我想检查用户是否存在,它存在的id删除并重新创建用户 – achak01

+0

@ achak01更新了答案。 – techraf

+0

谢谢techraf,你的解决方案工作。但如果我想这样做这样 检查用户1 如果用户1 exsist执行XYZ 如果用户1不存在 执行ABC 我如何实现使用ansible以上? – achak01