将注册变量的内容复制到其他主机

将注册变量的内容复制到其他主机

我正在运行以下任务(我将仅粘贴整个角色中的相关要求):

- 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 主机上获取它。

相关内容