HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_chef.cpython-310.pyc
o

�Ad&7�
@s�UdZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZmZdd	lmZdd
lmZdZegd��Zed
g�ZdZdZdZdZ dZ!dZ"dddedde"dddddd�Z#e$dg�Z%e$gd��Z&e$e�'e#�(�e%e&gd���Z)d Z*d!Z+egd"��Z,eZ-d#gZ.d$d%d&ed'�e.ed(�ge-d)gd*�Z/ee0d+<ee/�Zd,d-�Z1d.d/�Z2d0e3d1ed2ed3ed4e4d5dfd6d7�Z5d8d9�Z6d:ed4e4fd;d<�Z7	dEd:efd=d>�Z8d2efd?d@�Z9dAdB�Z:dCdD�Z;dS)Fz7Chef: module that configures, starts and installs chef.�N)�Logger)�dedent)�subp�
temp_utils�	templater�
url_helper�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�Distro)�
PER_ALWAYS�1.8)�	/etc/chefz
/var/log/chefz
/var/lib/chef�/var/cache/chef�/var/backups/chefz
/var/run/chefrz#https://www.chef.io/chef/install.sh�z/etc/chef/validation.pemz#/etc/chef/encrypted_data_bag_secret�_defaultz/etc/chef/firstboot.jsonz:verify_nonez:infoz/var/log/chef/client.logz/etc/chef/client.pemrrz/var/run/chef/client.pidT)�ssl_verify_mode�	log_level�log_location�validation_key�validation_cert�
client_key�json_attribs�file_cache_path�file_backup_path�pid_file�	show_time�encrypted_data_bag_secretr)rrrrrrr )�
server_url�	node_name�environment�validation_name�chef_licensez/etc/chef/client.rbz/usr/bin/chef-client)z-dz-i�1800z-s�20�all�cc_chef�Chefz0module that configures, starts and installs chefa        This module enables chef to be installed (from packages,
        gems, or from omnibus). Before this occurs, chef configuration is
        written to disk (validation.pem, client.pem, firstboot.json,
        client.rb), and required directories are created (/etc/chef and
        /var/log/chef and so-on). If configured, chef will be
        installed and started in either daemon or non-daemon mode.
        If run in non-daemon mode, post run actions are executed to do
        finishing activities such as removing validation.pem.a�
        chef:
          directories:
            - /etc/chef
            - /var/log/chef
          validation_cert: system
          install_type: omnibus
          initial_attributes:
            apache:
              prefork:
                maxclients: 100
              keepalive: off
          run_list:
            - recipe[apache2]
            - role[db]
          encrypted_data_bag_secret: /etc/chef/encrypted_data_bag_secret
          environment: _default
          log_level: :auto
          omnibus_url_retries: 2
          server_url: https://chef.yourorg.com:4000
          ssl_verify_mode: :verify_peer
          validation_name: yourorg-validator�chef)�id�name�title�description�distros�examples�	frequency�activate_by_schema_keys�metacCs6tj|ddd�}|rtj�t�rt�t�dSdSdS)N�delete_validation_post_execF��default)r�get_cfg_option_bool�os�path�isfile�CHEF_VALIDATION_PEM_PATH�unlink)�chef_cfg�log�
delete_pem�rA�:/usr/lib/python3/dist-packages/cloudinit/config/cc_chef.py�
post_run_chef�s��rCc	Cs�t��}|��D]-\}}|tvr|�d|�q|dur d||<q|tvr-t�||�||<qt�||�||<q|�	t�
�tj|d|d�tj|ddd�|d|dd��|S)	Nz'Skipping unknown chef template key '%s'r"r6r#rr!r$)�generated_byr"r#r!r$)�CHEF_RB_TPL_DEFAULTS�copy�items�CHEF_RB_TPL_KEYS�debug�CHEF_RB_TPL_BOOL_KEYSrr8�get_cfg_option_str�update�make_header)�iidr>r?�params�k�vrArArB�get_template_params�s.
����rRr-�cfg�cloudr?�args�returncCsd|vr|�d|�dS|d}t�|d�}|stt�}t�|t�D]}t�|�q"|�	dt
�}|�	d�}	|	rN|	dkrBt�||	�ntj
�|�sN|�d|�|�d	�}
|
r�t|j���}t|||�}t�}
|��D]\}}|tvr||r||
�tj
�|��qit�|
�t�|
t|�n|�d
t�tj|dtd�}|s�|� d
�n,i}d|vr�|d|d<d|vr�|d}t|�!��D]}||||<q�t�|t"�#|��tj$|ddd�}t%�&t'�}|r�|r�t(|||�}n
|r�tj$|ddd�}nd}|r�t)||�t*||�dSdS)z'Handler method activated by cloud-init.r+z8Skipping module named %s, no 'chef' key in configurationN�directoriesrr�systemzWchef validation_cert provided as 'system', but validation_key path '%s' does not exist.zchef_client.rbz&No template found, not rendering to %s�firstboot_pathr6z7First boot path empty, not writing first boot json file�run_list�initial_attributes�
force_installF�exec)+rIr�get_cfg_option_list�list�	CHEF_DIRS�	itertools�chain�REQUIRED_CHEF_DIRS�
ensure_dir�getr<�
write_filer9r:r;�warning�get_template_filename�str�
datasource�get_instance_idrR�setrG�CHEF_RB_TPL_PATH_KEYS�add�dirname�ensure_dirsr�render_to_file�CHEF_RB_PATHrK�CHEF_FB_PATH�info�keys�json�dumpsr8r�is_exe�CHEF_EXEC_PATH�install_chef�run_chefrC)r-rSrTr?rUr>�	chef_dirs�d�	vkey_path�vcert�template_fnrNrO�param_pathsrPrQ�fb_filename�initial_jsonr[r\�	installed�runrArArB�handle�sv�
�
�
��

�r�cCs�|�d�tg}d|vr6|d}t|ttf�r|�|�nt|t�r(|�|�n|�dt	|��|�t
�n|�t
�tj|dd�dS)NzRunning chef-client�exec_argumentszRUnknown type %s provided for chef 'exec_arguments' expected list, tuple, or stringF��capture)rIry�
isinstancer_�tuple�extendri�appendrg�type�CHEF_EXEC_DEF_ARGSr)r>r?�cmd�cmd_argsrArArBr{s

�
r{�distrocKs�|��}|�dd�}tj|��dd��'}tj�||�}|�d|�t	j
||dd�tjd
d|i|��Wd	�S1s=wYd	S)aWrite blob to a tempfile, and call subp with args, kwargs. Then cleanup.

    'basename' as a kwarg allows providing the basename for the file.
    The 'args' argument to subp will be updated with the full path to the
    filename as the first argument.
    �basename�	subp_blobT)�dir�	needs_exeri�)�moderUNrA)rF�popr�tempdir�get_tmp_exec_pathr9r:�join�insertrrfr)�blobr�rU�kwargsr��tmpd�tmpfrArArB�subp_blob_in_tempfile*s�$�r�cCsP|durt}|durt}|durg}nd|g}tj||d�j}t|||ddd�S)agInstall an omnibus unified package from url.

    @param url: URL where blob of chef content may be downloaded. Defaults to
        OMNIBUS_URL.
    @param retries: Number of retries to perform when attempting to read url.
        Defaults to OMNIBUS_URL_RETRIES
    @param omnibus_version: Optional version string to require for omnibus
        install.
    Nz-v)�url�retrieszchef-omnibus-installF)r�r�rUr�r�)�OMNIBUS_URL�OMNIBUS_URL_RETRIESr�readurl�contentsr�)r�r�r��omnibus_versionrU�contentrArArB�install_chef_from_omnibus=s�r�cCs�t�|dd�}tj|ddd�}|dkr2t�|dd�}t�|dt�}t|||j�tj|dd	d�}|S|dkr>|j�d
�|S|dkr[t�|d�}t|jt�|d
�t�|d�|d�|S|�	d|�d}|S)N�install_type�packagesr]Fr6�gems�version�ruby_versionT)r+�omnibusr��omnibus_url�omnibus_url_retries)r�r�r�r�zUnknown chef install type '%s')
rrKr8�RUBY_VERSION_DEFAULT�install_chef_from_gemsr��install_packagesr��get_cfg_option_intrg)rTr>r?r�r��chef_versionr�r�rArArBrz\s6����

�	�rzcCs&d|d|g}|dkr|�d�|S)Nzruby%sz
ruby%s-devr)zlibopenssl-ruby1.8zrubygems1.8)r�)r��pkgsrArArB�get_ruby_packages}s
r�c
Cs�|�t|��tj�d�st�d|d�tj�d�s#t�d|d�|r9tjdddd|dd	d
ddg	d
d�dStjgd�d
d�dS)N�/usr/bin/gemz/usr/bin/gem%sz
/usr/bin/rubyz/usr/bin/ruby%s�installr+z-v %s�--no-ri�	--no-rdoc�--bindir�/usr/bin�-qFr�)r�r�r+r�r�r�r�r�)r�r�r9r:�existsr�sym_linkr)r�r�r�rArArBr��s.�
�

�r�)NNN)<�__doc__rarvr9�loggingr�textwrapr�	cloudinitrrrrr�cloudinit.cloudr	�cloudinit.configr
�cloudinit.config.schemarr�cloudinit.distrosr
�cloudinit.settingsrr�r�r`rcr�r�r<�CHEF_ENCRYPTED_DATA_BAG_PATH�CHEF_ENVIRONMENTrsrE�	frozensetrJrmrbrurHrrryr�r2r0r4�__annotations__rCrRrir_r�r{r�r�rzr�r�rArArArB�<module>s��
���
�������.#�����
�T�
�!