首页 > 解决方案 > 如何将文件复制到本地`ansible_connection`中的远程?

问题描述

我正在使用 using 命令创建一个azure vm 对于这种情况,主机是 localhost ( )。我需要复制一个加密的 ssh 私钥。我怎样才能做到这一点?ansibleazure_rm_virtualmachineansible_connection=localansible-vault

这是已经尝试过的:

任何人都知道如何解决这个问题?

仅供参考:在创建 VM 时,我已在其中添加了我的 pub 密钥,以便我可以访问机器

标签: azureansiblescpansible-vault

解决方案


据我了解您的用例,您首先在 Azure 中创建一个新 VM,然后您想在该新 VM 上发送一个新私钥。我有两个选择给你。

分2场

在同一个剧本中,您可以有 2 种不同的剧本:

---
- name: Provisioning of my pretty little VM in Azure
  hosts: localhost
  vars: 
    my_vm_name: myprettyvm
    my_resource_group: myprettygroup
    …
  tasks:
  - name: Create the VM
    azure_rm_virtualmachine:
      resource_group: "{{ my_resource_group }}"
      name: "{{ my_vm_name }}"
    …

- name: Configure my pretty little VM with 
  hosts: myprettyvm
  vars:
    my_priv_key: !vault |
                 $ANSIBLE_VAULT;1.1;AES256
                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  tasks:
  - name: Copy my private key
    copy:
      content: "{{ my_priv_key }}"
      dest: /root/.ssh/id_rsa

委托到本地主机

您的剧本中只有一个剧本,但您将供应任务委托给 localhost。

---
- name: Creation of my pretty little VM in Azure
  hosts: myprettyvm
  gather_facts: no
  vars: 
    my_vm_name: myprettyvm
    my_resource_group: myprettygroup
    …
    my_priv_key: !vault |
                 $ANSIBLE_VAULT;1.1;AES256
                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  tasks:
  - name: Create the VM
    azure_rm_virtualmachine:
      resource_group: "{{ my_resource_group }}"
      name: "{{ my_vm_name }}"
      …
    delegate_to: localhost

  - name: Copy my private key
    copy:
      content: "{{ my_priv_key }}"
      dest: /root/.ssh/id_rsa

不要忘记设置gather_factsno主机是尚不存在的VM。所以没有可用的事实。


推荐阅读