ansible 中的统计寄存器

stat register in ansible

我正在 ansible 中编写一个角色,它将处理有关 ssl 证书的所有事情。当它尝试使用 stat 中定义的变量评估条件时,它失败了。

期待任何解释和技巧。

我的部分任务

- 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 稳定,我 运行 OS X Yosemite ansible 1.9.4

我已经在 github、nothing there.

上检查了 google 并在 ansible 仓库中发布了页面

谢谢!

更新:

正在使用新的独立剧本:

---
- 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

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

正如我在问题中暗示的那样,该统计数据甚至都没有注册。它没有用,因为我 运行 剧本 --tags 而那个任务没有 :(

$ ansible-playbook -i production-servers.inventory --user=radu --ask-vault-pass --ask-become-pass playbooks/pre_setup_server.playbook --tags "ssl-certs" -v 

任务:

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

Peter Lyons 关于创建独立剧本的建议让我意识到了这个问题。

谢谢彼得!