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 关于创建独立剧本的建议让我意识到了这个问题。
谢谢彼得!
我正在 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 关于创建独立剧本的建议让我意识到了这个问题。
谢谢彼得!