0

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

这是已经尝试过的:

  • 使用命令并运行SCP:问题是文件仍然是加密的。
  • 解密文件,scp并加密:如果 scp 命令失败,则问题是在解密之后,文件现在已打开解密。

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

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

4

1 回答 1

1

据我了解您的用例,您首先在 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。所以没有可用的事实。

于 2019-08-20T08:28:21.947 回答