HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_ansible.cpython-38.pyc
U

Ӈg��@spUdZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
mZddlmZddlmZddlmZdd	lmZmZdd
lmZddlmZdeegd
gd�Zeed<e�e�Z dZ!Gdd�dej"�Z#Gdd�de#�Z$Gdd�de#�Z%e&eee'dd�dd�Z(e)d�dd�Z*e)e)d�dd�Z+e#e)d �d!d"�Z,e)e#d#�d$d%�Z-e)e#d#�d&d'�Z.dS)(z9ansible enables running on first boot either ansible-pull�N)�deepcopy)�Optional)�	lifecycle�signal_handler�subp)�Cloud)�Config)�
MetaSchema)�ALL_DISTROS�Distro)�PER_INSTANCE)�get_cfg_by_pathZ
cc_ansible�ansible)�idZ	frequencyZdistrosZactivate_by_schema_keys�meta�ansible_configc@s|eZdZed�dd�Zeejd�dd�Ze	d�dd�Z
d	d
�Zed�dd
�Z
dd�Zejdd��Zeje	d�dd��ZdS)�AnsiblePull)�distrocCs<dg|_ddg|_||_i|_d|_tj�dd�|jd<dS)Nzansible-pullz	--version�HOMEz/root)�cmd_pull�cmd_versionr�env�run_user�os�environ�get)�selfr�r�=/usr/lib/python3/dist-packages/cloudinit/config/cc_ansible.py�__init__ s
zAnsiblePull.__init__��returncCsH|�|j�\}}|���d�}t�d|�}|rD|�d�}tj�	|�SdS)Nrz	([\d\.]+))
�do_asr�
splitlines�pop�re�search�groupr�VersionZfrom_str)r�stdout�_Z
first_lineZmatches�versionrrr�get_version+s
zAnsiblePull.get_versioncGs|�|j|��\}}|S�N)r"r)r�argsr)r*rrr�pull4szAnsiblePull.pullcCs|��std��dS)Nz!command: ansible is not installed)�is_installed�
ValueError�rrrr�
check_deps8szAnsiblePull.check_deps)�commandcKs(|js|j|f|�S|jj||jf|�Sr-)rrrr"�rr4�kwargsrrrr"<szAnsiblePull.do_asc
Ks8t���&tj|fd|ji|��W5QR�SQRXdS)NZ
update_env)rZ
suspend_crashrrr5rrrrAs
zAnsiblePull.subpcCsdSr-rr2rrrr0EszAnsiblePull.is_installed��pkg_namecCsdSr-r�rr8rrr�installIszAnsiblePull.installN)�__name__�
__module__�__qualname__rrrrr(r,�strr/r3�listr"r�abc�abstractmethodr0r:rrrrrs	
rcsDeZdZeeed��fdd�Zed�dd�Zed�dd	�Z	�Z
S)
�AnsiblePullPip)r�usercsft��|�||_|�tjddg�\}}|�d�}|j�d�}|rXd�||g�|jd<n
||jd<dS)Nz-cz('import site; print(site.getuserbase())'z/bin/�PATH�:)	�superrrr"�sys�
executablerr�join)rrrC�	user_baser*Zansible_pathZold_path��	__class__rrrOs
�
zAnsiblePullPip.__init__r7cCs�|��s�zddl}Wn&tk
r:|j�|jjg�YnXtjdddg}tj	�
tj	�t�
d�d��rp|�d�|jr�|�d	�|�|d��|�||f��dS)zishould cloud-init grow an interface for non-distro package
        managers? this seems reusable
        rN�-m�pipr:ZstdlibzEXTERNALLY-MANAGEDz--break-system-packagesz--user�	--upgrade)rOrN)r0rN�ImportErrorr�install_packagesZpip_package_namerGrHr�path�existsrI�	sysconfigZget_path�appendrr")rr8rN�cmdrrrr:^s*���

zAnsiblePullPip.installr cCs |�tjdddg�\}}d|kS)NrMrNr?r)r"rGrH)rr)r*rrrr0yszAnsiblePullPip.is_installed)r;r<r=rrr>rr:�boolr0�
__classcell__rrrKrrBNsrBc@s(eZdZed�dd�Zed�dd�ZdS)�AnsiblePullDistror7cCs|��s|j�|g�dSr-)r0rrQr9rrrr:szAnsiblePullDistro.installr cCstt�d��S)Nr)rWrZwhichr2rrrr0�szAnsiblePullDistro.is_installedN)r;r<r=r>r:rWr0rrrrrY~srY)�name�cfg�cloudr.r!cCs�|�di�}|�d�}|�d�}|�d�}|�d�}|�d�}	|�dd�}
|r�t|�|j}|d	krpt||�}nt|�}|�|
�|��|�d
d�}
|
r�|
|jt<|r�t	||�|	r�t
|t|	��|r�t||�dS)Nrr�install_method�setup_controllerZgalaxyr/�package_name�rNr)
r�validate_configrrBrYr:r3r�CFG_OVERRIDE�ansible_galaxy�run_ansible_pullr�ansible_controller)rZr[r\r.Zansible_cfgZansible_userr]r^Z
galaxy_cfgZpull_cfgr_rrrrrr�handle�s0







rf�r[cCs�d}|D]"}t||�std|�d|����q|�d�r^dD]"}t||�s:td|�d|����q:|�d�}|r�t|�d�|�d�g�s�td	|����|d
}|dkr�td��dS)
N)r]r_zMissing required key 'z' from r/)zpull/urlzpull/playbook_namer^�repositories�run_ansiblezMissing required key from r])rNrz Invalid install method {install})r
r1r�any)r[Z
required_keys�keyZcontroller_cfgr:rrrra�s&



��ra)r[r!cCsdd�|��D�S)zremove boolean false valuescSs&i|]\}}|dk	r|�dd�|�qS)Fr*�-)�replace��.0rk�valuerrr�
<dictcomp>�s�
zfilter_args.<locals>.<dictcomp>)�itemsrgrrr�filter_args�s�rs)r/r[cCs�|�d�}|��}|s"t�d�n>|t�ddd�kr`|�d�r`td|j�d|j	�d|j
�d	���|jd
d�t|��
�D�|f��}|r�tj�|��dS)N�
playbook_namezCannot parse ansible version��rZdiffzAnsible version �.z%doesn't support --diff flag, exiting.cSs2g|]*\}}|dk	r$d|�d|��nd|���qS)T�--�=rrnrrr�
<listcomp>�s�z$run_ansible_pull.<locals>.<listcomp>)r$r,�LOG�warningrr(rr1�major�minorZpatchr/rsrrrGr)�write)r/r[rt�vr)rrrrd�s"

�
��rd)r[rcCs4|�dg�}|st�d|�|D]}|�|�q dS)N�actionszInvalid config: %s)rr{r|r")r[rr�r4rrrrc�s
rccCs�|�dg�D]}|�dd|d|dg�q|�dg�D]D}|�d�}|�d�}d	|fd
d�t|���D��}|j||d�q8dS)
NrhZgitZclone�sourcerRri�playbook_dirrtzansible-playbookcSs g|]\}}d|�d|���qS)rxryrrnrrrrz�sz&ansible_controller.<locals>.<listcomp>)�cwd)rr"r$rsrr)r[rZ
repositoryr.r�rtr4rrrre�s�

��re)/�__doc__r@Zloggingrr%rGrT�copyr�typingrZ	cloudinitrrrZcloudinit.cloudrZcloudinit.configrZcloudinit.config.schemar	Zcloudinit.distrosr
rZcloudinit.settingsrZcloudinit.utilr
r�__annotations__Z	getLoggerr;r{rb�ABCrrBrYr>r?rf�dictrarsrdrcrerrrr�<module>s>�
/0	%