Your IP : 216.73.217.13


Current Path : /lib/python3/dist-packages/cloudinit/config/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_puppet.cpython-38.pyc

U

�Ad�6�	@sDUdZddlZddlZddlmZddlmZddlmZddl	Z	ddl
mZmZm
Z
mZmZddlmZddlmZdd	lmZmZdd
lmZmZddlmZdZd
gZdZdZdddeegeed�ed�gdgd�Z ee!d<ee �ZGdd�d�Z"ee#d�dd�Z$dd�Z%edddfed �d!d"�Z&e#eeee'dd#�d$d%�Z(dS)&z+Puppet: Install, configure and start puppet�N)�StringIO)�Logger)�dedent)�helpers�subp�
temp_utils�
url_helper�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�ALL_DISTROS�Distro)�PER_INSTANCEzKhttps://raw.githubusercontent.com/puppetlabs/install-puppet/main/install.shz--test)�puppet-agent�puppeta>This module handles puppet installation and configuration. If the ``puppet``
key does not exist in global configuration, no action will be taken. If a
config entry for ``puppet`` is present, then by default the latest version of
puppet will be installed. If the ``puppet`` config key exists in the config
archive, this module will attempt to start puppet even if no installation was
performed.

The module also provides keys for configuring the new puppet 4 paths and
installing the puppet package from the puppetlabs repositories:
https://docs.puppet.com/puppet/4.2/reference/whered_it_go.html
The keys are ``package_name``, ``conf_file``, ``ssl_dir`` and
``csr_attributes_path``. If unset, their values will default to
ones that work with puppet 3.x and with distributions that ship modified
puppet 4.x that uses the old paths.
Z	cc_puppetZPuppetz#Install, configure and start puppeta`            puppet:
                install: true
                version: "7.7.0"
                install_type: "aio"
                collection: "puppet7"
                aio_install_url: 'https://git.io/JBhoQ'
                cleanup: true
                conf_file: "/etc/puppet/puppet.conf"
                ssl_dir: "/var/lib/puppet/ssl"
                csr_attributes_path: "/etc/puppet/csr_attributes.yaml"
                exec: true
                exec_args: ['--test']
                conf:
                    agent:
                        server: "puppetserver.example.org"
                        certname: "%i.%f"
                    ca_cert: |
                        -----BEGIN CERTIFICATE-----
                        MIICCTCCAXKgAwIBAgIBATANBgkqhkiG9w0BAQUFADANMQswCQYDVQQDDAJjYTAe
                        Fw0xMDAyMTUxNzI5MjFaFw0xNTAyMTQxNzI5MjFaMA0xCzAJBgNVBAMMAmNhMIGf
                        MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu7Q40sm47/E1Pf+r8AYb/V/FWGPgc
                        b014OmNoX7dgCxTDvps/h8Vw555PdAFsW5+QhsGr31IJNI3kSYprFQcYf7A8tNWu
                        1MASW2CfaEiOEi9F1R3R4Qlz4ix+iNoHiUDTjazw/tZwEdxaQXQVLwgTGRwVa+aA
                        qbutJKi93MILLwIDAQABo3kwdzA4BglghkgBhvhCAQ0EKxYpUHVwcGV0IFJ1Ynkv
                        T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwDwYDVR0TAQH/BAUwAwEB/zAd
                        BgNVHQ4EFgQUu4+jHB+GYE5Vxo+ol1OAhevspjAwCwYDVR0PBAQDAgEGMA0GCSqG
                        SIb3DQEBBQUAA4GBAH/rxlUIjwNb3n7TXJcDJ6MMHUlwjr03BDJXKb34Ulndkpaf
                        +GAlzPXWa7bO908M9I8RnPfvtKnteLbvgTK+h+zX1XCty+S2EQWk29i2AdoqOTxb
                        hppiGMp0tT5Havu4aceCXiy2crVcudj3NFciy8X66SoECemW9UYDCb9T5D0d
                        -----END CERTIFICATE-----
                csr_attributes:
                    custom_attributes:
                        1.2.840.113549.1.9.7: 342thbjkt82094y0uthhor289jnqthpc2290
                    extension_requests:
                        pp_uuid: ED803750-E3C7-44F5-BB08-41A04433FE2E
                        pp_image_name: my_ami_image
                        pp_preshared_key: 342thbjkt82094y0uthhor289jnqthpc2290
            z�            puppet:
                install_type: "packages"
                package_name: "puppet"
                exec: false
            r)�id�name�titleZdescriptionZdistrosZ	frequencyZexamplesZactivate_by_schema_keys�metac@seZdZdd�ZdS)�PuppetConstantscCs8||_||_tj�|d�|_tj�|jd�|_||_dS)NZcertszca.pem)�	conf_path�ssl_dir�os�path�join�ssl_cert_dir�
ssl_cert_path�csr_attributes_path)�selfZpuppet_conf_fileZpuppet_ssl_dirr�log�r"�</usr/lib/python3/dist-packages/cloudinit/config/cc_puppet.py�__init__ps
zPuppetConstants.__init__N)�__name__�
__module__�__qualname__r$r"r"r"r#rosr)�cloud�actionc	Csdd}tD]>}z"|j�||�d��|}WqHWqtjk
rDYqXq|s`|�d|d�t��dS)z8Attempts to perform action on one of the puppet services�z.servicez0Could not '%s' any of the following services: %s�, N)�PUPPET_PACKAGE_NAMES�distroZmanage_servicer�ProcessExecutionError�warningr)r!r(r)Zservice_managed�puppet_namer"r"r#�_manage_puppet_serviceszs
�r1cCst�|dd|g�\}}|��S)z�Get the config value for a given setting using `puppet config print`
    :param puppet_bin: path to puppet binary
    :param setting: setting to query
    �config�print)r�rstrip)�
puppet_binZsetting�out�_r"r"r#�get_config_value�sr8T)r-c	
Cs�g}|dk	rd|g}|dk	r(|d|g7}|r6|dg7}tj|dd�j}tj|��dd��@}tj�|d	�}t	j
||d
d�tj|g|dd
�W5QR�SQRXdS)a�Install puppet-agent from the puppetlabs repositories using the one-shot
    shell script

    :param distro: Instance of Distro
    :param url: URL from where to download the install script
    :param version: version to install, blank defaults to latest
    :param collection: collection to install, blank defaults to latest
    :param cleanup: whether to purge the puppetlabs repo after installation
    Nz-vz-cz	--cleanup�)�urlZretriesT)�dirZ	needs_exezpuppet-installi�)�modeF�Zcapture)rZreadurl�contentsrZtempdirZget_tmp_exec_pathrrrr	�
write_filer)	r-r:�version�
collection�cleanup�argsZcontentZtmpdZtmpfr"r"r#�install_puppet_aio�s 
�rD)r�cfgr(r!rC�returnc 	Csd|kr|�d|�dS|d}t�|dd�}t�|dd�}t�|dd�}t�|dd�}	t�|d	d�}
tj|d
dd�}tj|d
dd�}tj|dtd�}
|	dkr�d}d}d}nd}d}d}t�|d|�}|s�|r�|�d�n�|�r�|�d|r�|nd|	�|	dk�r||dk�rjtD]@}z |j�||f�|}W�qPWnt	j
k
�rJYnX�q|�sz|�dd�t��n|j�||f�n.|	dk�r�t|j|
|||
�n|�d|	�d}t�|dt
|d��}t�|dt
|d��}t�|dt
|d��}t||||�}d |k�r8t�|j�}t��}d!d"�|��D�}d#�|�}|jt|�|jd$�|d ��D]�\}}|d%k�r�t�|jd&�t�|j|d�t�|j�t�|j|d�t�|j|�t�|j|d�nT|��D]J\}}|d'k�r�|�d(t���}|�d)|� ��}|�!�}|�"|||��q�t�#|jd*|j�t�|j|�$���qNd|k�r^t�|j%t&j'|ddd+��|�rpt(||d,�|�r|�d-�|d.g}d/|k�r�|d/}t)|t*t+f��r�|�,|�n6t)|t-��r�|�,|�.��n|�d0t/|��|�,t0�n
|�,t0�t	j	|dd1�|�rt(||d2�dS)3Nrz9Skipping module named %s, no 'puppet' configuration found�installTr@rA�install_typeZpackagesrB�execF)�defaultZ
start_service�aio_install_urlZaio�rootz/opt/puppetlabs/bin/puppetr�package_namez@Puppet install set to false but version supplied, doing nothing.z'Attempting to install puppet %s from %sZlatestz+No installable puppet package in any of: %sr+z Unknown puppet install type '%s'�	conf_filer2rZssldirrZcsr_attributes�confcSsg|]}|���qSr")�lstrip)�.0�ir"r"r#�
<listcomp>szhandle.<locals>.<listcomp>�
)�sourceZca_certi�Zcertnamez%fz%iz%s.old)Zdefault_flow_style�enablezRunning puppet-agentZagentZ	exec_argszOUnknown type %s provided for puppet 'exec_args' expected list, tuple, or stringr=�start)1�debugr	Zget_cfg_option_boolZget_cfg_option_str�AIO_INSTALL_URLr/r,r-Zinstall_packagesrr.rrDr8rZ	load_filerrZDefaultingConfigParser�
splitlinesZ	read_filer�itemsZ
ensure_dirrZchownbynamerr?r�replace�socketZgetfqdnZget_instance_id�lower�set�renameZ	stringifyr�yaml�dumpr1�
isinstance�list�tuple�extend�str�split�type�PUPPET_AGENT_DEFAULT_ARGS) rrEr(r!rCZ
puppet_cfgrGr@rArHrB�runZ
start_puppetdrKZpuppet_userr5Zpuppet_packagerMr0rNrrZp_constantsr>Z
puppet_configZ
cleaned_linesZcleaned_contentsZcfg_name�o�v�cmdZcmd_argsr"r"r#�handle�s&������
�


�
����

�
�
�
�

�
ro))�__doc__rr]�iorZloggingr�textwraprraZ	cloudinitrrrrr	Zcloudinit.cloudr
Zcloudinit.configrZcloudinit.config.schemarr
Zcloudinit.distrosrrZcloudinit.settingsrrYrjr,ZMODULE_DESCRIPTIONr�__annotations__rrgr1r8rDrdror"r"r"r#�<module>	sb�)��3�=��%�