3 \mei @ s U d Z ddlZddlZddlmZ ddlmZmZmZ ddl m Z ddlmZ ddl mZmZ ddlmZ ejeZeZd gZd dded eedgedgdZeeeZ eee eddddZdS )z:Bootcmd: run arbitrary commands early in the boot process. N)dedent)subp temp_utilsutil)Cloud)Config) MetaSchemaget_meta_doc) PER_ALWAYSallZ cc_bootcmdZBootcmdz0Run arbitrary commands early in the boot processa This module runs arbitrary commands very early in the boot process, only slightly after a boothook would run. This is very similar to a boothook, but more user friendly. The environment variable ``INSTANCE_ID`` will be set to the current instance id for all run commands. Commands can be specified either as lists or strings. For invocation details, see ``runcmd``. .. note:: bootcmd should only be used for things that could not be done later in the boot process. .. note:: when writing files, do not use /tmp dir as it races with systemd-tmpfiles-clean LP: #1707222. Use /run/somedir instead. z bootcmd: - echo 192.168.1.130 us.archive.ubuntu.com > /etc/hosts - [ cloud-init-per, once, mymkfs, mkfs, /dev/vdb ] bootcmd)idnametitledescriptiondistrosZexamples frequencyZactivate_by_schema_keys)r cfgcloudargsreturnc C s d|krt jd| d S tjdd}y*tj|d }|jtj| |j W n6 t k r } ztj t dt| W Y d d }~X nX y@tj j }|j }|rt||d<