Ë
    x[hà*  ã            
       ó\  — U d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlZddlmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ ddlmZ dZdgZdZ degedgdœZ!ee"d<    ejF                  e$«      Z% G d„ d«      Z&dede'fd„Z(d„ Z)edddfdefd„Z*de'dedede+ddf
d „Z,y)!z+Puppet: Install, configure and start puppeté    N)Úsuppress)ÚStringIO)ÚListÚUnion)ÚhelpersÚsubpÚ
temp_utilsÚ
url_helperÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚALL_DISTROSÚDistroÚPackageInstallerError)ÚPER_INSTANCEzKhttps://raw.githubusercontent.com/puppetlabs/install-puppet/main/install.shz--test)úpuppet-agentÚpuppetÚ	cc_puppetr   )ÚidÚdistrosÚ	frequencyÚactivate_by_schema_keysÚmetac                   ó   — e Zd Zd„ Zy)ÚPuppetConstantsc                 óÖ   — || _         || _        t        j                  j	                  |d«      | _        t        j                  j	                  | j
                  d«      | _        || _        y )NÚcertszca.pem)Ú	conf_pathÚssl_dirÚosÚpathÚjoinÚssl_cert_dirÚssl_cert_pathÚcsr_attributes_path)ÚselfÚpuppet_conf_fileÚpuppet_ssl_dirr&   s       ú</usr/lib/python3/dist-packages/cloudinit/config/cc_puppet.pyÚ__init__zPuppetConstants.__init__*   sN   € ð *ˆŒØ%ˆŒÜŸG™GŸL™L¨¸ÓAˆÔÜŸW™WŸ\™\¨$×*;Ñ*;¸XÓFˆÔØ#6ˆÕ ó    N)Ú__name__Ú
__module__Ú__qualname__r+   © r,   r*   r   r   )   s   „ ó
7r,   r   ÚcloudÚactionc                 óð   — d}t         D ]%  }	 | j                  j                  ||› d�«       |} n |s+t
        j                  d|dj                  t         «      «       yy# t        j                  $ r Y Œkw xY w)z8Attempts to perform action on one of the puppet servicesÚ z.servicez0Could not '%s' any of the following services: %sú, N)ÚPUPPET_PACKAGE_NAMESÚdistroÚmanage_servicer   ÚProcessExecutionErrorÚLOGÚwarningr#   )r1   r2   Úservice_managedÚpuppet_names       r*   Ú_manage_puppet_servicesr>   7   s�   € à€OÜ+ò ˆð	Ø�L‰L×'Ñ'¨°;°-¸xÐ0HÔIØ)ˆOÙð	ñ Ü�‰Ø>ØØ�I‰IÔ*Ó+õ	
ð øô ×)Ñ)ò 	Ùð	ús   �!AÁA5Á4A5c                 óZ   — t        j                   | dd|g«      \  }}|j                  «       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_binÚsettingÚoutÚ_s       r*   Úget_config_valuerG   I   s+   € ô
 �Y‰Y˜
 H¨g°wÐ?Ó@�F€CˆØ�:‰:‹<Ðr,   Tr7   c                 ó’  — g }|�d|g}|�|d|gz  }|r|dgz  }t        j                  |d¬«      j                  }t        j                  | j                  «       d¬«      5 }t        j                  j                  |d	«      }t        j                  ||d
¬«       t        j                  |g|z   d¬«      cddd«       S # 1 sw Y   yxY w)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é   )ÚurlÚretriesT)ÚdirÚ	needs_exezpuppet-installiÀ  )ÚmodeF©Úcapture)r
   ÚreadurlÚcontentsr	   ÚtempdirÚget_tmp_exec_pathr!   r"   r#   r   Ú
write_filer   )	r7   rJ   ÚversionÚ
collectionÚcleanupÚargsÚcontentÚtmpdÚtmpfs	            r*   Úinstall_puppet_aior]   R   sÅ   € ð  €DØÐØ�gˆˆØÐØ��zÐ"Ñ"ˆñ Ø��ÑˆÜ× Ñ  S°!Ô4×=Ñ=€Gô 
×	Ñ	Ø×$Ñ$Ó&°$ô
ð 7à	Ü�w‰w�|‰|˜DÐ"2Ó3ˆÜ�‰˜˜g¨EÕ2Ü�y‰y˜$˜ $™°Ô6÷7÷ 7ò 7ús   Á AB=Â=CÚnameÚcfgrY   Úreturnc                 óf  — d|vrt         j                  d| «       y |d   }t        j                  |dd«      }t        j                  |dd «      }t        j                  |dd «      }t        j                  |dd«      }t        j                  |d	d«      }	t        j                  |d
d¬«      }
t        j                  |dd¬«      }t        j                  |dt
        ¬«      }|dk(  rd}d}d}nd}d}d }t        j                  |d|«      }|s|rt         j                  d«       nù|r÷t         j                  d|r|nd|«       |dk(  r |€xt        D ]C  }t        t        «      5  |r||ggn|g}|j                  j                  |«       |}	 d d d «        n |s‡t         j                  ddj                  t        «      «       n]|r||ggn|g}|j                  j                  |«       n7|dk(  rt        |j                  ||||	«       nt         j                  d|«       d}
t        j                  |dt        |d«      «      }t        j                  |dt        |d«      «      }t        j                  |dt        |d«      «      }t        |||«      }d |v �rYt        j                   |j"                  «      }t%        j&                  «       }|j)                  «       D �cg c]  }|j+                  «       ‘Œ }}d!j                  |«      }|j-                  t/        |«      |j"                  ¬"«       |d    j1                  «       D �]­  \  }}|d#k(  rÃt        j2                  |j4                  d$«       t        j6                  |j4                  |d«       t        j2                  |j8                  «       t        j6                  |j8                  |d«       t        j:                  |j<                  |«       t        j6                  |j<                  |d«       n„|j1                  «       D ]q  \  }}|d%k(  rT|j?                  d&tA        jB                  «       «      }|j?                  d'|jE                  «       «      }|jG                  «       }|jI                  |||«       Œs t        jJ                  |j"                  d(|j"                  z  «       t        j:                  |j"                  |jM                  «       «       �Œ° d|v r8t        j:                  |jN                  tQ        jR                  |d   d¬)«      «       |rtU        |d*«       |
rÛt         j                  d+«       |d,g}d-|v r’|d-   } tW        | tX        tZ        f«      r|j]                  | «       nztW        | t^        «      r |j]                  | ja                  «       «       nJt         j                  d.tc        | «      «       |j]                  td        «       n|j]                  td        «       tg        jf                  |d¬/«       |rtU        |d0«       y y # 1 sw Y   �ŒÞxY wc c}w )1Nr   z9Skipping module named %s, no 'puppet' configuration foundÚinstallTrV   rW   Úinstall_typeÚpackagesrX   ÚexecF)ÚdefaultÚstart_serviceÚaio_install_urlÚaioÚrootz/opt/puppetlabs/bin/puppetr   Úpackage_namez@Puppet install set to false but version supplied, doing nothing.z'Attempting to install puppet %s from %sÚlatestz+No installable puppet package in any of: %sr5   z Unknown puppet install type '%s'Ú	conf_filer@   r    Ússldirr&   Úcsr_attributesÚconfú
)ÚsourceÚca_certiù  Úcertnamez%fz%iz%s.old)Údefault_flow_styleÚenablezRunning puppet-agentÚagentÚ	exec_argszOUnknown type %s provided for puppet 'exec_args' expected list, tuple, or stringrO   Ústart)4r:   Údebugr   Úget_cfg_option_boolÚget_cfg_option_strÚAIO_INSTALL_URLr;   r6   r   r   r7   Úinstall_packagesr#   r]   rG   r   Úload_text_filer   r   ÚDefaultingConfigParserÚ
splitlinesÚlstripÚ	read_filer   ÚitemsÚ
ensure_dirr    Úchownbynamer$   rU   r%   ÚreplaceÚsocketÚgetfqdnÚget_instance_idÚlowerÚsetÚrenameÚ	stringifyr&   ÚyamlÚdumpr>   Ú
isinstanceÚlistÚtupleÚextendÚstrÚsplitÚtypeÚPUPPET_AGENT_DEFAULT_ARGSr   )!r^   r_   r1   rY   Ú
puppet_cfgrb   rV   rW   rc   rX   ÚrunÚstart_puppetdrh   Úpuppet_userrC   Úpuppet_packagerk   r=   Ú
to_installrm   r    r&   Úp_constantsrR   Úpuppet_configÚiÚcleaned_linesÚcleaned_contentsÚcfg_nameÚoÚvÚcmdÚcmd_argss!                                    r*   Úhandler©   v   s°  € à�sÑÜ�	‰	ØGÈô	
ð 	à�X‘€Jä×&Ñ& z°9¸dÓC€GÜ×%Ñ% j°)¸TÓB€GÜ×(Ñ(¨°\À4ÓH€JÜ×*Ñ*Ø�N Jó€Lô ×&Ñ& z°9¸dÓC€GÜ
×
"Ñ
" :¨v¸uÔ
E€CÜ×,Ñ,Ø�O¨Tô€Mô ×-Ñ-ØÐ%¬ô€Oð
 �uÒØˆØ1ˆ
Ø'‰àˆØˆ
Øˆä×*Ñ*Ø�N Nó€Lñ ‘wÜ�‰ØNõ	
ñ 
Ü�	‰	Ø5Ù‰G HØô	
ð ˜:Ò%àÐ#Ü#7ò 	�KÜ!Ô"7Ó8ñ ñ  'ð *¨7Ð3Ñ4à"- ð #ð
 Ÿ™×5Ñ5°jÔAØ'2˜Ø÷ñ ð	ñ $Ü—K‘KØEØŸ	™	Ô"6Ó7õñ 29�l GÐ,Ñ-¸|¸nð ð —‘×-Ñ-¨jÕ9à˜UÒ"ÜØ—‘˜o¨w¸
ÀGõô �K‰KÐ:¸LÔIØˆCä×'Ñ'Ø�KÔ!1°*¸hÓ!Gó€Iô ×%Ñ%Ø�IÔ/°
¸HÓEó€Gô ×1Ñ1ØØÜ˜Ð%5Ó6óÐô " )¨WÐ6IÓJ€Kð �Òä×&Ñ& {×'<Ñ'<Ó=ˆä×6Ñ6Ó8ˆð .6×-@Ñ-@Ó-BÖC¨˜Ÿ™�ÐCˆÐCØŸ9™9 ]Ó3ÐØ×ÑÜÐ%Ó&¨{×/DÑ/Dð 	 ô 	
ð (¨Ñ/×5Ñ5Ó7ó !	N‰MˆH�cð ˜9Ò$ô —‘ × 3Ñ 3°UÔ;Ü× Ñ  ×!4Ñ!4°kÀ6ÔJÜ—‘ × 8Ñ 8Ô9ä× Ñ  ×!9Ñ!9¸;ÈÔOÜ—‘ × 9Ñ 9¸3Ô?Ü× Ñ Ø×-Ñ-¨{¸Fõð  ŸI™I›Kò 	6‘D�A�qØ˜J’ð ŸI™I d¬F¯N©NÓ,<Ó=˜àŸI™I d¨E×,AÑ,AÓ,CÓD˜àŸG™G›I˜Ø!×%Ñ% h°°1Õ5ð	6ô �K‰KØ×%Ñ% x°;×3HÑ3HÑ'Iôô �O‰O˜K×1Ñ1°=×3JÑ3JÓ3LÖMðC!	NðF ˜:Ñ%Ü�‰Ø×+Ñ+Ü�I‰I�jÐ!1Ñ2ÀuÔMô	
ñ
 ä  xÔ0ñ Ü�	‰	Ð(Ô)Ø˜7Ð#ˆØ˜*Ñ$Ø! +Ñ.ˆHÜ˜(¤T¬5 MÔ2Ø—
‘
˜8Õ$Ü˜H¤cÔ*Ø—
‘
˜8Ÿ>™>Ó+Õ,ä—‘ð!ô ˜“Nô	ð —
‘
Ô4Õ5à�J‰JÔ0Ô1Ü�	‰	�#˜uÕ%áä  wÕ/ð ÷wñ üòf Ds   Å)X!ËX.Ø!X+	)-Ú__doc__Úloggingr!   rˆ   Ú
contextlibr   Úior   Útypingr   r   r�   Ú	cloudinitr   r   r	   r
   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.distrosr   r   r   Úcloudinit.settingsr   r}   r˜   r6   r   Ú__annotations__Ú	getLoggerr-   r:   r   r•   r>   rG   r]   r’   r©   r0   r,   r*   ú<module>r·      sê   ðò 2ã Û 	Û Ý Ý ß ã ç AÕ AÝ !Ý #Ý .ß HÑ HÝ +à_€Ø%˜JÐ Ø1Ð ð Øˆ}ØØ (˜zñ	€€jó ð €g×Ñ˜Ó!€÷7ñ 7ð
 5ð 
°#ó 
ò$ð 	ØØØñ!7Øó!7ðHr0�ð r0˜6ð r0¨%ð r0°tð r0Àô r0r,   