+
    ˜qgjç)  ã                   ó¤  a € R$ t,0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHt ^ R
IHt RRR]R].RR./t] ^ k ]P<                  ! ]4      t Rt! ! R R]PD                  4      t# ! R R]#4      t$ ! R R]#4      t%R R lt&R R lt'R R lt(R R lt)R  R! lt*R" R# lt+R# )%z9ansible enables running on first boot either ansible-pullN)Údeepcopy)ÚListÚOptional)Ú	lifecycleÚsubp)ÚCloud)ÚConfig)Ú
MetaSchema)ÚALL_DISTROSÚDistro)ÚPER_INSTANCE)Úget_cfg_by_pathÚidÚ
cc_ansibleÚ	frequencyÚdistrosÚactivate_by_schema_keysÚansibleÚansible_configc                   óÈ   a € ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltR tV 3R lR	 ltR
 t	]
P                  R 4       t]
P                  V 3R lR l4       tRtV tR# )ÚAnsiblePullc                ó    <€ V ^8„  d   QhRS[ /# )é   Údistro)r   )ÚformatÚ__classdict__s   "€Ú=/usr/lib/python3/dist-packages/cloudinit/config/cc_ansible.pyÚ__annotate__ÚAnsiblePull.__annotate__    s   ø€ ÷ 	;ñ 	;™vñ 	;ó    c                óª   € R .V n         R R.V n        Wn        / V n        RV n        \
        P                  P                  RR4      V P                  R&   R# )zansible-pullz	--versionNÚHOMEz/root)Úcmd_pullÚcmd_versionr   ÚenvÚrun_userÚosÚenvironÚget)Úselfr   s   &&r   Ú__init__ÚAnsiblePull.__init__    sK   € Ø'Ð(ˆŒØ*¨KÐ8ˆÔØŒØˆŒØ'+ˆŒô Ÿ:™:Ÿ>™>¨&°'Ó:ˆ�‰�Ór   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# ©r   Úreturn)r   r   ÚVersion)r   r   s   "€r   r   r   +   s   ø€ ÷ ñ ™X¡i×&7Ñ&7Õ8ñ r   c                ó  € V P                  V P                  4      w  rVP                  4       P                  ^ 4      p\        P
                  ! RV4      pV'       d1   VP                  ^ 4      p\        P                  P                  V4      # R# )é    z	([\d\.]+)N)
Údo_asr#   Ú
splitlinesÚpopÚreÚsearchÚgroupr   r/   Úfrom_str)r)   ÚstdoutÚ_Ú
first_lineÚmatchesÚversions   &     r   Úget_versionÚAnsiblePull.get_version+   sl   € Ø—J‘J˜t×/Ñ/Ó0‰	ˆØ×&Ñ&Ó(×,Ñ,¨QÓ/ˆ
Ü—)’)˜L¨*Ó5ˆßØ—m‘m AÓ&ˆGÜ×$Ñ$×-Ñ-¨gÓ6Ð6Ùr   c                ó    <€ V ^8„  d   QhRS[ /# r-   ©Ústr)r   r   s   "€r   r   r   4   s   ø€ ÷ ñ ™Sñ r   c                óH   € V P                  . V P                  OVO4      w  r#V# ©N)r2   r"   )r)   Úargsr9   r:   s   &*  r   ÚpullÚAnsiblePull.pull4   s&   € Ø—J‘JÐ6 §¡Ð6°Ð6Ó7‰	ˆØˆr   c                óH   € V P                  4       '       g   \        R 4      hR# )z!command: ansible is not installedN)Úis_installedÚ
ValueError©r)   s   &r   Ú
check_depsÚAnsiblePull.check_deps8   s"   € Ø× Ñ ×"Ò"ÜÐ@ÓAÐAñ #r   c                ó    <€ V ^8„  d   QhRS[ /# )r   Úcommand©Úlist)r   r   s   "€r   r   r   <   s   ø€ ÷ Cñ C™Tñ Cr   c                óš   € V P                   '       g   V P                  ! V3/ VB # V P                  P                  ! WP                   3/ VB # rD   )r%   r   r   r2   ©r)   rO   Úkwargss   &&,r   r2   ÚAnsiblePull.do_as<   s=   € Ø�}�}ˆ}Ø—9’9˜WÑ/¨Ñ/Ð/Ø�{‰{× Ò  ¯-©-ÑB¸6ÑBÐBr   c                óH   € \         P                   ! V3R V P                  /VB # )Ú
update_env)r   r$   rS   s   &&,r   r   ÚAnsiblePull.subpA   s   € Ü�yŠy˜Ñ@¨T¯X©XÐ@¸Ñ@Ð@r   c                ó   € R # rD   © rK   s   &r   rI   ÚAnsiblePull.is_installedD   ó   € ár   c                ó    <€ V ^8„  d   QhRS[ /# ©r   Úpkg_namerA   )r   r   s   "€r   r   r   I   s   ø€ ÷ ñ ¡ñ r   c                ó   € R # rD   rZ   ©r)   r_   s   &&r   ÚinstallÚAnsiblePull.installH   r\   r   )r"   r#   r   r$   r%   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r*   r>   rF   rL   r2   r   ÚabcÚabstractmethodrI   rb   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      so   ø‡ € ÷	;ð 	;÷ð ÷ð òB÷Cð Cò
Að 	×Ññó ðð 	×Ñ÷ó ör   r   c                   ó€   a a€ ] tR t^Mt oV3R lV 3R lltR tR tV3R lR ltV3R lR ltV3R	 lR
 lt	Rt
VtV ;t# )ÚAnsiblePullPipc                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# ©r   r   Úuser©r   r   rB   )r   r   s   "€r   r   ÚAnsiblePullPip.__annotate__N   s   ø€ ÷ ,ñ ,™vð ,©X±c­]ñ ,r   c                óR   <€ \         SV `  V4       W n        V P                  4        R # rD   )Úsuperr*   r%   Úadd_pip_install_site_to_path©r)   r   rp   Ú	__class__s   &&&€r   r*   ÚAnsiblePullPip.__init__N   s!   ø€ Ü‰Ñ˜Ô ØŒØ×)Ñ)Ö+r   c                ó$  € V P                   '       d~   V P                  \        P                  R R.4      w  rV R2pV P                  P                  R4      pV'       d"   RP                  WC.4      V P                  R&   R# W0P                  R&   R# R# )z-cz&import site; print(site.getuserbase())z/bin/ÚPATHÚ:N)r%   r2   ÚsysÚ
executabler$   r(   Újoin)r)   Ú	user_baser:   Úansible_pathÚold_paths   &    r   ru   Ú+AnsiblePullPip.add_pip_install_site_to_pathS   s{   € Ø�=�=ˆ=ØŸ:™:ä—N‘NØØ<ðó‰LˆIð (˜[¨Ð.ˆLà—x‘x—|‘| FÓ+ˆHßØ#&§8¡8¨XÐ,DÓ#E�—‘˜Ó à#/—‘˜Ó ñ r   c                ó”   €  ^ RI pR#   \         d5    T P                  P                  T P                  P                  .4        R# i ; i)r1   N)ÚpipÚImportErrorr   Úinstall_packagesÚpip_package_name)r)   r„   s   & r   Úbootstrap_pip_if_requiredÚ(AnsiblePullPip.bootstrap_pip_if_requiredd   s;   € ð	IÝøÜô 	IØ�K‰K×(Ñ(¨$¯+©+×*FÑ*FÐ)G×Hð	Iús   ‚ ˆ;AÁAc                ó    <€ V ^8„  d   QhRS[ /# r^   rA   )r   r   s   "€r   r   rr   j   s   ø€ ÷ ;ñ ;¡ñ ;r   c                ó8  € V P                  4        V P                  4       '       gô   \        P                  RRR.p\        P
                  P                  \        P
                  P                  \        P                  ! R4      R4      4      '       d   VP                  R4       V P                  '       d   VP                  R4       V P                  V4       \        P                  RV4       V P                  . VOVN4       \        P                  R	V4       R
# R
# )zYshould cloud-init grow an interface for non-distro package
managers? this seems reusable
ú-mr„   rb   ÚstdlibzEXTERNALLY-MANAGEDz--break-system-packagesú--userzInstalling the %s packagezInstalled the %s packageN)rˆ   rI   r|   r}   r&   ÚpathÚexistsr~   Ú	sysconfigÚget_pathÚappendr%   Ú_AnsiblePullPip__upgrade_pipÚLOGÚinfor2   )r)   r_   Úcmds   && r   rb   ÚAnsiblePullPip.installj   sÚ   € ð 	×&Ñ&Ô(à× Ñ ×"Ò"ä—‘ØØØð	ˆCô �w‰w�~‰~Ü—‘—‘Ü×&Ò& xÓ0Ð2Fó÷ò ð
 —
‘
Ð4Ô5Ø�}�}ˆ}Ø—
‘
˜8Ô$à×Ñ˜sÔ#Ü�H‰HÐ0°(Ô;Ø�J‰JÐ'˜Ð'˜hÐ'Ô(Ü�H‰HÐ/°Ö:ñ) #r   c                ó    <€ V ^8„  d   QhRS[ /# )r   r—   rP   )r   r   s   "€r   r   rr   †   s   ø€ ÷ %ñ %¡ñ %r   c                óü   € \         P                  R4        V P                  . VORNRN4       \         P                  R4       R#   \        P                   d"   p\         P                  RT4        Rp?R# Rp?ii ; i)zGTry to upgrade pip then not raise an exception
if the pip upgrade failszUpgrading pipz	--upgrader„   zUpgraded pipzZFailed at upgrading pip. This is usually not criticalso the script will skip this step.
%sN)r•   r–   r2   r   ÚProcessExecutionErrorÚwarning)r)   r—   Úes   && r   Ú__upgrade_pipÚAnsiblePullPip.__upgrade_pip†   sr   € ô 	�‰�Ô!ð	%Ø�J‰JÐ1˜Ð1˜kÐ1¨5Ð1Ô2ô �H‰H�^Ö$øô ×)Ñ)ô 	Ü�K‰Kð=ð ÷ò ûð	ús   —A ÁA;ÁA6Á6A;c                ó    <€ V ^8„  d   QhRS[ /# r-   ©Úbool)r   r   s   "€r   r   rr   —   s   ø€ ÷ #ñ #™dñ #r   c                ó    € \         P                  R RR.pV P                  '       d   VP                  R4       V P	                  V4      w  r#RV9   # )rŒ   r„   rQ   rŽ   r   )r|   r}   r%   r“   r2   )r)   r—   r9   r:   s   &   r   rI   ÚAnsiblePullPip.is_installed—   sC   € Ü�~‰~˜t U¨FÐ3ˆà�=�=ˆ=Ø�J‰J�xÔ à—J‘J˜s“O‰	ˆØ˜FÑ"Ð"r   ©r%   )rd   re   rf   rg   r*   ru   rˆ   rb   r”   rI   rj   rk   Ú__classcell__©rw   r   s   @@r   rm   rm   M   s=   ù‡ € ÷,ó ,ò
0ò"I÷;ð ;÷8%ð %÷"#÷ #ð #r   rm   c                   ób   a a€ ] tR t^¡t oV3R lV 3R lltV3R lR ltV3R lR ltRtVtV ;t	# )ÚAnsiblePullDistroc                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# ro   rq   )r   r   s   "€r   r   ÚAnsiblePullDistro.__annotate__¢   s   ø€ ÷ ñ ™vð ©X±c­]ñ r   c                ó2   <€ \         SV `  V4       W n        R # rD   )rt   r*   r%   rv   s   &&&€r   r*   ÚAnsiblePullDistro.__init__¢   s   ø€ Ü‰Ñ˜Ô ØŽr   c                ó    <€ V ^8„  d   QhRS[ /# r^   rA   )r   r   s   "€r   r   r«   ¦   s   ø€ ÷ 5ñ 5¡ñ 5r   c                ón   € V P                  4       '       g   V P                  P                  V.4       R # R # rD   )rI   r   r†   ra   s   &&r   rb   ÚAnsiblePullDistro.install¦   s*   € Ø× Ñ ×"Ò"Ø�K‰K×(Ñ(¨(¨Ö4ñ #r   c                ó    <€ V ^8„  d   QhRS[ /# r-   r¡   )r   r   s   "€r   r   r«   ª   s   ø€ ÷ +ñ +™dñ +r   c                ó@   € \        \        P                  ! R 4      4      # )r   )r¢   r   ÚwhichrK   s   &r   rI   ÚAnsiblePullDistro.is_installedª   s   € Ü”D—J’J˜yÓ)Ó*Ð*r   r¥   )
rd   re   rf   rg   r*   rb   rI   rj   rk   r¦   r§   s   @@r   r©   r©   ¡   s(   ù‡ € ÷ó ÷5ð 5÷+÷ +ð +r   r©   c          
      óL   € V ^8„  d   QhR\         R\        R\        R\        RR/# )r   ÚnameÚcfgÚcloudrE   r.   N)rB   r   r   rQ   )r   s   "r   r   r   ®   s/   € ÷ %:ñ %:”ð %:œ6ð %:¬%ð %:´tð %:Àñ %:r   c                 óÞ  € VP                  R / 4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      p	VP                  RR4      p
V'       dì   \        V4       VP                  pVR8X  d   \        Wµ4      pM\	        Wµ4      pVP                  V
4       VP                  4        VP                  R	R4      pV'       d   WÜP                  \        &   V'       d   \        WŒ4       V	'       d8   \        V	\        4      '       d   V	.p	V	 F  p\        V\        V4      4       K  	  V'       d   \        W|4       R
# R
# R
# )r   r%   Úinstall_methodÚsetup_controllerÚgalaxyrF   Úpackage_nameÚ r„   r   N)r(   Úvalidate_configr   rm   r©   rb   rL   r$   ÚCFG_OVERRIDEÚansible_galaxyÚ
isinstanceÚdictÚrun_ansible_pullr   Úansible_controller)r¶   r·   r¸   rE   Úansible_cfgÚansible_userrº   r»   Ú
galaxy_cfgÚpull_cfgr½   r   r   r   s   &&&&          r   ÚhandlerÊ   ®   s%  € àŸ™ 	¨2Ó.€KØ—?‘? :Ó.€LØ —_‘_Ð%5Ó6€NØ"—‘Ð'9Ó:Ðà—‘ Ó*€JØ�‰˜vÓ&€HØ—?‘? >°2Ó6€Lçä˜Ô$àŸ™ˆØ˜UÔ"Ü$ VÓ:‰Gä'¨Ó=ˆGØ�‰˜Ô%Ø×ÑÔØ$Ÿ™Ð)9¸2Ó>ˆçØ(6�K‰KœÑ%çÜ˜:Ô/çÜ˜(¤D×)Ò)Ø$˜:�Û�Ü  ¬(°3«-Ö8ñ  ÷ ÜÐ/Ö9ñ ñ3 r   c                ó$   € V ^8„  d   QhR\         /# )r   r·   ©rÃ   )r   s   "r   r   r   Ö   s   € ÷ 2=ñ 2=œñ 2=r   c                 ó>  € RpV F%  p\        W4      '       d   K  \        RV RV  24      h	  V P                  R4      pV'       dä   \        V\        4      '       d   V.pM$\        V\
        4      '       g   \        RV 24      hV FŸ  p\        V\        4      '       g   \        RV 24      h\        VR4      '       g   \        RV 24      h\        VR4      p\        VR	4      p\        WV.4      '       g   \        R
V 24      h\        We.4      '       g   K“  \        RV 24      h	  V P                  R4      pV'       d@   \        VP                  R4      VP                  R4      .4      '       g   \        RV 24      hV R ,          pVR9  d   \        R4      hR# )rº   zMissing required key 'z' from rF   zLInvalid value ansible.pull. Expected either dict of list of dicts but found z7Invalid value of ansible.pull. Expected dict but found Úurlz Missing required key 'url' from Úplaybook_nameÚplaybook_namesz+Missing required key 'playbook_names' from zzKey 'ansible.pull.playbook_name' and 'ansible.pull.playbook_names' are mutually exclusive. Please use 'playbook_names' in r»   ÚrepositoriesÚrun_ansiblezMissing required key from z Invalid install method {install}N)rº   r½   )r„   r   )r   rJ   r(   rÂ   rÃ   rQ   ÚanyÚall)	r·   Úrequired_keysÚkeyrÉ   Úp_cfgÚhas_playbookÚhas_playbooksÚcontroller_cfgrb   s	   &        r   r¿   r¿   Ö   sÆ  € ð€Mó ˆÜ˜s×(Ô(ÜÐ5°c°U¸'À#ÀÐGÓHÐHñ ð �w‰w�v‹€HßÜ�h¤×%Ò%Ø �z‰HÜ˜H¤d×+Ò+Üð$Ø$, :ð/óð ó ˆEÜ˜e¤T×*Ò*Ü ðØ�wð óð ô # 5¨%×0Ò0Ü Ð#CÀEÀ7Ð!KÓLÐLÜ*¨5°/ÓBˆLÜ+¨EÐ3CÓDˆMÜ˜Ð4×5Ò5Ü ØAÀ%ÀÐIóð ô �mÐ2×3Ô3Ü ð7à7<°gð?óð ñ ð* —W‘WÐ/Ó0€NßÜà×"Ñ" >Ó2Ø×"Ñ" =Ó1ð÷
ò 
ô Ð9¸.Ð9IÐJÓKÐKàÐ"Õ#€GØÐ'Ô'ÜÐ;Ó<Ð<ñ (r   c                ó0   € V ^8„  d   QhR\         R\         /# )r   r·   r.   rÌ   )r   s   "r   r   r     s   € ÷ ñ ”Tð œdñ r   c                óˆ   € V P                  4        UUu/ uF   w  rVRJg   K  VP                  RR4      VbK"  	  upp# u uppi )zremove boolean false valuesFr:   Ú-)ÚitemsÚreplace)r·   rÖ   Úvalues   &  r   Úfilter_argsrá     sK   € ð  ŸI™IœKôá'‰LˆSØ˜Ðô 	%ˆ�‰�C˜Ó˜uÒ$Ù'òð ùó s   ”
>£>c                ó0   € V ^8„  d   QhR\         R\        /# )r   rF   r·   )r   rÃ   )r   s   "r   r   r     s   € ÷ .ñ .œ;ð .¬Tñ .r   c           	      óp  € VP                  R R4      pVP                  RR4      pV'       d   V.pV P                  4       pV'       g   \        P                  R4       MgV\        P
                  ! ^^^ 4      8  dK   VP                  R4      '       d4   \        RVP                   RVP                   RVP                   R24      h\        V4      P                  4        UUu. uF  w  rVVRJd	   R	V R
V 2MR	V 2NK  	  pppV'       d_   V\        P
                  ! ^^^ 4      8¼  dB   V P                  ! . VOVO5!  pV'       d#   \        P                  P!                  V 4       R# R# V FB  p	V P                  ! . VOV	N5!  pV'       g   K"  \        P                  P!                  V 4       KD  	  R# u uppi )rÏ   NrÐ   zCannot parse ansible versionÚdiffzAnsible version Ú.z%doesn't support --diff flag, exiting.Tú--Ú=)r4   r>   r•   rœ   r   r/   r(   rJ   ÚmajorÚminorÚpatchrá   rÞ   rF   r|   r9   Úwrite)
rF   r·   rÏ   rÐ   ÚvrÖ   rà   Ú	pull_argsr9   Úplaybooks
   &&        r   rÄ   rÄ     sƒ  € ØŸ™ °$Ó7€MØ #§¡Ð(8¸$Ó ?€NßØ'˜ˆØ×ÑÓ€AßÜ�‰Ð2Õ3Ø	
ŒY×Ò˜q ! QÓ'Ô	'à�7‰7�6�?Š?ÜØ" 1§7¡7 )¨1¨Q¯W©W¨I°Q°q·w±w°iØ7ð8óð ô & cÓ*×0Ñ0Ô2ôá2‰JˆCð $¨4Ó/ˆ"ˆSˆE��5�'Ñ°r¸#¸°ZÒ?Ù2ð ñ ÷ 	ˆQ”)×#Ò# A r¨1Ó-Ô-ð —’Ð7˜IÐ7¨Ó7ˆßÜ�J‰J×Ñ ˜xÖ)ñ ó 'ˆHØ—Y’YÐ4 	Ð4¨8Ó4ˆFß‰vÜ—
‘
× Ñ  F 8Ö-ó 'ùós   Ã!F2c                ó0   € V ^8„  d   QhR\         R\        /# ©r   r·   r   ©rÃ   r   )r   s   "r   r   r   5  s   € ÷ ñ œð ¤{ñ r   c                 óš   € V P                  R . 4      pV'       g   \        P                  RV 4       V F  pVP                  V4       K  	  R# )ÚactionszInvalid config: %sN)r(   r•   rœ   r2   )r·   r   ró   rO   s   &&  r   rÁ   rÁ   5  s:   € Ø�g‰g�i Ó$€GçÜ�‰Ð(¨#Ô.ÛˆØ�‰�gÖó r   c                ó0   € V ^8„  d   QhR\         R\        /# rð   rñ   )r   s   "r   r   r   >  s   € ÷ 1ñ 1œDð 1¬;ñ 1r   c           
      ó’  € V P                  R . 4       F&  pVP                  RRVR,          VR,          .4       K(  	  V P                  R. 4       Fn  pVP                  R4      pVP                  R4      pRV.\        V4      P	                  4        UUu. uF  w  rgR	V R
V 2NK  	  uppOpVP                  W„R7       Kp  	  R# u uppi )rÑ   ÚgitÚcloneÚsourcer�   rÒ   Úplaybook_dirrÏ   zansible-playbookræ   rç   )ÚcwdN)r(   r2   r4   rá   rÞ   )	r·   r   Ú
repositoryrE   rù   rÏ   rÖ   rà   rO   s	   &&       r   rÅ   rÅ   >  sÇ   € Ø—g‘g˜n¨bÖ1ˆ
Ø�‰Ø�G˜Z¨Õ1°:¸fÕ3EÐFö	
ñ 2ð —‘˜ rÖ*ˆØ—x‘x Ó/ˆØŸ™ Ó1ˆàØð
ô 4?¸tÓ3D×3JÑ3JÔ3LÔMÑ3L¡Z S��3�%�q˜˜Ó Ñ3LÒMð
ˆð
 	�‰�gˆÖ0ó +ùó Ns   ÂC
c                ó@   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   # )r   Úmeta)Ú__conditional_annotations__r	   )r   s   "r   r   r      s   € × ?Ñ ?÷&ò „jñ ò' @r   )-rþ   Ú__doc__rh   Úloggingr&   r5   r|   r‘   Úcopyr   Útypingr   r   Ú	cloudinitr   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar	   Úcloudinit.distrosr
   r   Úcloudinit.settingsr   Úcloudinit.utilr   rý   Ú	getLoggerrd   r•   rÀ   ÚABCr   rm   r©   rÊ   r¿   rá   rÄ   rÁ   rÅ   r   )rþ   s   @r   Ú<module>r     sÀ   øðÞ ?ã 
Û Û 	Û 	Û 
Û Ý ß !ç %Ý !Ý #Ý .ß 1Ý +Ý *ð 	ˆ,Ø�Ø�ˆ}Ø 	˜{ð	€ó ð ×Ò˜Ó!€Ø€ô+�#—'‘'ô +ô\Q#�[ô Q#ôh
+˜ô 
+õ%:õP2=õjõ.õB÷1r   