我正在运行以下任务(我将只在整个角色中粘贴相关的问题):
- name: create certificate private key
community.crypto.openssl_privatekey:
path: "/root/client/{{ item }}.key"
type: Ed25519
backup: yes
return_content: yes
register: privatekey
loop: "{{ ansible_play_hosts_all }}"
when: "'prometheus1' in inventory_hostname"
我正在尝试将变量的内容复制到另一台主机。
- name: copy private key to host
copy:
content: "{{ privatekey }}"
dest: /root/private_key_from_var.key
(此时我并不担心过滤或将密钥分发给相应的主机 - 只是想了解为什么内容本身没有被复制。
奇怪的是,它运行的唯一主机是“prometheus1”,我实际上正在运行生成密钥的任务。private_key_from_var.key
在那里,我得到了一个包含我期望的所有内容的生成文件。
其他两台主机上完全相同的文件只是来自 ansible 本身的错误报告:
{"results": [{"changed": false, "skipped": true, "skip_reason": "Conditional result was False", "item": "prometheus1", "ansible_loop_var": "item"}, {"changed": false, "skipped": true, "skip_reason": "Conditional result was False", "item": "breitband", "ansible_loop_var": "item"}, {"changed": false, "skipped": true, "skip_reason": "Conditional result was False", "item": "status1", "ansible_loop_var": "item"}], "msg": "All items completed", "changed": false}
我不确定为什么我无法在任何我希望的主机上复制此内容,但这很奇怪。我也尝试使用模板并直接在 jinja 文件中调用变量,但无济于事。
有任何想法吗?:)
这仅在主机名与 prometheus1 匹配时运行任务,并解释了为什么您仅在 prometheus1 主机上获取它。