File: //lib/python3.6/site-packages/cloudinit/config/__pycache__/cc_salt_minion.cpython-36.pyc
3
\�me� � @ s� U d Z ddlZddlZddlmZ ddlmZmZmZ ddl m
Z
ddlmZ ddl
mZmZ ddlmZ dd lmZ d
Zddd
eegeed�gdgd�Zeee�Z eje�ZG dd� d�Zeee
edd�dd�ZdS )z&Salt Minion: Setup and run salt minion� N)�dedent)�safeyaml�subp�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�ALL_DISTROS)�PER_INSTANCEa. This module installs, configures and starts salt minion. If the ``salt_minion``
key is present in the config parts, then salt minion will be installed and
started. Configuration for salt minion can be specified in the ``conf`` key
under ``salt_minion``. Any conf values present there will be assigned in
``/etc/salt/minion``. The public and private keys to use for salt minion can be
specified with ``public_key`` and ``private_key`` respectively. Optionally if
you have a custom package name, service name or config directory you can
specify them with ``pkg_name``, ``service_name`` and ``config_dir``.
Salt keys can be manually generated by: ``salt-key --gen-keys=GEN_KEYS``,
where ``GEN_KEYS`` is the name of the keypair, e.g. 'minion'. The keypair
will be copied to ``/etc/salt/pki`` on the minion instance.
Zcc_salt_minionzSalt MinionzSetup and run salt minionai salt_minion:
pkg_name: salt-minion
service_name: salt-minion
config_dir: /etc/salt
conf:
file_client: local
fileserver_backend:
- gitfs
gitfs_remotes:
- https://github.com/_user_/_repo_.git
master: salt.example.com
grains:
role:
- web
public_key: |
------BEGIN PUBLIC KEY-------
<key data>
------END PUBLIC KEY-------
private_key: |
------BEGIN PRIVATE KEY------
<key data>
------END PRIVATE KEY-------
pki_dir: /etc/salt/pki/minion
�salt_minion)�id�name�title�descriptionZdistrosZ frequencyZexamplesZactivate_by_schema_keysc @ s e Zd ZdZdd� ZdS )�
SaltConstantsz>
defines default distribution specific salt variables
c C sh t j� rd| _d| _d| _nd| _d| _d| _t j|d| j�| _t j|d| j�| _t j|d| j�| _d S ) Nzpy-saltr z/usr/local/etc/saltzsalt-minionz /etc/salt�pkg_nameZ
config_dirZservice_name)r Z
is_FreeBSDr �srv_name�conf_dirZget_cfg_option_str)�self�cfg� r �$/usr/lib/python3.6/cc_salt_minion.py�__init__T s zSaltConstants.__init__N)�__name__�
__module__�__qualname__�__doc__r r r r r r O s r )r r �cloud�args�returnc C s� d|krt jd| � d S |d }t|d�}|jj|jg� tj|j� d }d|kr~t j
j|jd�}|jd�}tj
|tj|�� d|kr�t j
j|jd�}tj|jd��} tj
|| � d|ko�d|k�rXt j
j|jd �}
t j
j|
�s�t j
j|jd
�}
|jd|
�}tjd��L tj|� t j
j|d
�}t j
j|d�}
tj
||d � tj
|
|d � W d Q R X t|�ol|jd�dk� }|jj|�r�dnd|j� |jj|�r�dnd|j� |�s�tjdddgdd� d S )Nr z?Skipping module named %s, no 'salt_minion' key in configuration)r ZconfZminionZgrainsZ
public_keyZprivate_keyz
pki/minionZpki�pki_dir�? z
minion.pubz
minion.pemZfile_clientZlocal�enable�disableZrestart�stopz salt-callz--localzstate.applyF)Zcapture)�LOG�debugr ZdistroZinstall_packagesr r Z
ensure_dirr �os�path�join�getZ
write_filer �dumps�isdir�umask�boolZmanage_servicer r )r r r r Zs_cfg�constZminion_dataZ
minion_configZ
grains_configZgrains_dataZpki_dir_defaultr! Zpub_nameZpem_nameZ
minion_daemonr r r �handlej sJ
r1 )r Zloggingr( �textwrapr Z cloudinitr r r Zcloudinit.cloudr Zcloudinit.configr Zcloudinit.config.schemar r Zcloudinit.distrosr
Zcloudinit.settingsr ZMODULE_DESCRIPTION�metaZ getLoggerr r&