在ansible的统计登记

时间:2015-11-14 22:45:46

标签: ansible ansible-playbook

我在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 stable并且我正在使用ansible 1.9.4运行OS X Yosemite

我已经在github nothing there上的ansible repo中检查了google并发布了页面。

谢谢!

更新

正在使用新的孤立的剧本:

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

1 个答案:

答案 0 :(得分:3)

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

在我的问题中暗示,统计数据甚至没有登记。它没有用,因为我用--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建议创建一个孤立的剧本让我意识到这个问题。

谢谢彼得!