Jul*_*Lam 4 yaml lxc cloud-init ubuntu-cloud
我正在尝试让云配置脚本与我的 DigitalOcean Droplet 一起正常工作,但我在此期间正在本地 lxc 容器上进行测试。
我一直遇到的一个问题是,我永远无法让write_files指令对多个文件正常工作。它似乎以我无法理解的奇怪方式行事。
比如这个配置不正确,只输出了一个文件(.tarsnaprc)/tmp:
#cloud-config
users:
- name: julian
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa myrsakeygoeshere julian@hostname
write_files:
- path: /tmp/.tarsnaprc
permissions: "0644"
content: |
cachedir /home/julian/tarsnap-cache
keyfile /home/julian/tarsnap.key
nodump
print-stats
checkpoint-bytes 1G
owner: julian:julian
- path: /tmp/lxc
content: |
lxc.id_map = u 0 100000 65536
lxc.id_map = g 0 100000 65536
lxc.network.type = veth
lxc.network.link = lxcbr0
permissions: "0644"
Run Code Online (Sandbox Code Playgroud)
但是,如果我交换write_files数组中的两个项目,它会神奇地工作,并创建两个文件.tarsnaprc和lxc. 我做错了什么,我有语法错误吗?
可能为时已晚,因为它是 1 年前发布的。问题是在 /tmp/.tarsnaprc 中设置所有者,因为创建文件时用户不存在。检查cloud-init:cloud-config 指令的执行顺序是什么?清楚地解释了 cloud-config 指令顺序的答案。
启动期间不要在 /tmp 下写入文件,因为与 systemd-tmpfiles-clean 的竞争可能会导致临时文件在早期启动过程中被清理。使用 /run/somedir 来避免竞争 LP:1707222。
参考:https://cloudinit.readthedocs.io/en/latest/topics/modules.html#write-files
| 归档时间: |
|
| 查看次数: |
8062 次 |
| 最近记录: |