Правильный синтаксис директивы write_files в конфигурации облака?

Я пытаюсь заставить скрипт облачной конфигурации правильно работать с моей каплей DigitalOcean, но пока я тестирую локальные контейнеры 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"

Однако, если я поменяю местами два элемента в массиве write_files, он волшебным образом сработает и создаст оба файла, .tarsnaprc и lxc. Что я делаю не так, у меня синтаксическая ошибка?


person Julian H. Lam    schedule 28.04.2015    source источник


Ответы (2)


Может быть уже поздно, так как это было опубликовано 1 год назад. Проблема заключается в установке владельца в /tmp/.tarsnaprc, поскольку пользователь не существует при создании файла. Проверьте cloud-init: каков порядок выполнения директив cloud-config? ответ, который ясно объясняет порядок директив cloud-config.

person rvelaz    schedule 16.12.2016

Не записывайте файлы в /tmp во время загрузки из-за гонки с systemd-tmpfiles-clean, которая может привести к очистке временных файлов в процессе ранней загрузки. Вместо этого используйте /run/somedir, чтобы избежать гонки LP:1707222.

ссылка: https://cloudinit.readthedocs.io/en/latest/topics/modules.html#write-files

person Christian    schedule 18.07.2018