ansible中的stat寄存器

ansible中的stat寄存器,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在ansible中编写一个角色,它将处理有关ssl证书的所有内容。当它尝试使用中定义的变量计算条件时失败 期待任何解释和任何黑客 我任务的一部分 - stat: path={{ ssl_certs_privatekey_path }} register: ssl_private_key - name: Generate a RSA key command: openssl req -x509 -nodes -days {{ ssl_certs_days }} -subj '

我正在ansible中编写一个角色,它将处理有关ssl证书的所有内容。当它尝试使用中定义的变量计算条件时失败

期待任何解释和任何黑客

我任务的一部分

- stat: path={{ ssl_certs_privatekey_path }}
  register: ssl_private_key

- name: Generate a RSA key
  command:
    openssl req -x509 -nodes -days {{ ssl_certs_days }} -subj '{{ ssl_certs_fields }}' -newkey rsa:{{ ssl_certs_key_size }} -out {{ ssl_certs_cert_path }} -keyout {{ ssl_certs_privatekey_path }}
  when: ssl_private_key.stat.exists == false
  tags: ssl-certs
此外,如果添加调试,则无法看到其输出:

调试代码?!不工作

- debug: msg="Key exists"
  when: ssl_private_key.stat.exists
错误:

TASK: [ssl_certs | Ensure ssl folder exist] ***********************************
ok: [domain.tld]

TASK: [ssl_certs | Generate a RSA key] ****************************************
fatal: [domain.tld] => error while evaluating conditional: ssl_private_key.stat.exists == false

FATAL: all hosts have already failed -- aborting
服务器运行的是debian stable,我运行的是带有ansible 1.9.4的OS X Yosemite

我已经在github上的ansible repo中查看了google并发布了页面

谢谢

更新:

TASK: [ssl_certs | Ensure ssl folder exist] ***********************************
ok: [domain.tld]

TASK: [ssl_certs | Generate a RSA key] ****************************************
fatal: [domain.tld] => error while evaluating conditional: ssl_private_key.stat.exists == false

FATAL: all hosts have already failed -- aborting
正在使用新的独立剧本:

---
- name: "Just for test"
  hosts: my-hosts
  tasks:
  - stat: path=/etc/ssl/certs/cert.key
    register: ssl_private_key

  - debug: msg="Key exists"
    when: ssl_private_key.stat.exists

$ ansible-playbook -i my.inventory --user=radu isolated.playbook                                        

PLAY [Just for test] **********************************************************

GATHERING FACTS ***************************************************************
ok: [domain.tld]

TASK: [stat path=/etc/ssl/certs/cert.key] *************************************
ok: [domain.tld]

TASK: [debug msg="Key exists"] ************************************************
ok: [domain.tld] => {
    "msg": "Key exists"
}

PLAY RECAP ********************************************************************
domain.tld                   : ok=3    changed=0    unreachable=0    failed=0

我现在觉得自己很愚蠢,但我不会删除这个问题或答案。我认为这是一个常见的错误,每个人都应该从别人的错误中吸取教训:)

正如我在问题中暗示的那样,统计数据甚至没有登记。它不起作用,因为我运行了带有
--标记的playbook,而该任务没有:(

任务:

彼得·莱昂斯建议创建一个独立的剧本,这让我意识到了这个问题


谢谢你,Peter!

当“ssl\u private\u key.stat.exists==false”时已经尝试了
我试图重现您的错误,但无法重现。您能否从一个与现有项目没有连接的全新孤立剧本开始,并尝试重现错误?使用
-v
运行时,您是否在错误消息中获得更多信息?您是对的,正在使用我目录之外的新剧本。我不知道任何使用
-v
-vvv
的相关信息。谢谢。有什么建议吗?我觉得很愚蠢。我要回答我的问题。
- stat: path={{ ssl_certs_privatekey_path }}
  register: ssl_private_key