我正在运行以下任务(我将仅粘贴整个角色中的相关要求):
- 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 文件中调用变量来做同样的事情,但无济于事。
有任何想法吗?:)
答案1
时间:“inventory_hostname 中的‘prometheus1’”
这仅当主机名与 prometheus1 匹配时才运行任务,并解释了为什么仅在 prometheus1 主机上获取它。