3 \�mei � @ s� U d Z ddlZddlZddlmZ ddlmZmZmZ ddl m Z ddlmZ ddl mZmZ ddlmZ eje�ZeZd gZd dded �eed�gedgd�Zeee�Z eee edd�dd�ZdS )z:Bootcmd: run arbitrary commands early in the boot process.� N)�dedent)�subp� temp_utils�util)�Cloud)�Config)� MetaSchema�get_meta_doc)� PER_ALWAYS�allZ 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)�id�name�title�description�distrosZexamples� frequencyZactivate_by_schema_keys)r �cfg�cloud�args�returnc 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� }|r�t|�|d<