将 cloud-init 用作 custom_data 和 ansible

Using cloud-init as custom_data with ansible

我使用类似于 this demoansible playbook 部署 VM。

- name: Create VM
  azure_rm_virtualmachine:
    resource_group: myResourceGroup
    name: myVM
    ...
    custom_data: cloud-init.yml

现在我也想安装一些包,做一些小准备。我做了一个 cloud-config.yml

#cloud-config

package_upgrade: true
packages:
  - npm
  - nodejs-legacy

runcmd:
- sudo mkdir -p /data/projects/

似乎没有执行cloud-init.yml,所以我猜这不是正确的语法。你应该如何在 ansible 剧本中传递 cloud-init 文件?还是有另一种方法可以达到这个目标?

custom_data azure_rm_virtualmachine 中的参数需要数据,而不是文件名。

您可以使用 file 查找插件从 Ansible 控制器上的文件中获取数据:

- name: Create VM
  azure_rm_virtualmachine:
    resource_group: myResourceGroup
    name: myVM
    ...
    custom_data: "{{ lookup('file', 'cloud-init.yml') }}"