azure - 如何将文件复制到本地`ansible_connection`中的远程?
问题描述
我正在使用 using 命令创建一个azure vm 。对于这种情况,主机是 localhost ( )。我需要复制一个加密的 ssh 私钥。我怎样才能做到这一点?ansible
azure_rm_virtualmachine
ansible_connection=local
ansible-vault
这是已经尝试过的:
- 使用命令并运行
SCP
:问题是文件仍然是加密的。 - 解密文件,
scp
并加密:如果 scp 命令失败,则问题是在解密之后,文件现在已打开解密。
任何人都知道如何解决这个问题?
仅供参考:在创建 VM 时,我已在其中添加了我的 pub 密钥,以便我可以访问机器
解决方案
据我了解您的用例,您首先在 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_facts
为no
主机是尚不存在的VM。所以没有可用的事实。
推荐阅读
- python - Seaborn Scatterplot ValueError:数组的长度必须相同
- docker - Traefik2,两个入口点(http 和 https)到 docker-compose 中一个暴露的 continer 端口
- dynamic-sql - How to escape single quote while dynamically creating sql in a snowflake stored procedure?
- python - 如何在 python 3 中将一组随机字母放入对齐的字符串中?
- kotlin-js - 如何使用 Kotlin JS 中的 JSONObject
- apache-spark - 在 Web 应用程序中使用 Apache Livy (flask)
- c - 当我们在 C 中将一个数字转换为一个较小的数字时,究竟会发生什么?
- r - R包没有检测到GDAL的更新版本
- angular - 从 http.get 获取数据并将其影响到对象
- reactjs - 显式键入解构函数参数