File: //proc/self/root/lib/python3.9/site-packages/ansible/modules/__pycache__/assemble.cpython-39.pyc
a
�)g# � @ s� d dl mZmZmZ eZdZdZdZd dl Z d dl
Z
d dlZd dlZd dl
mZ d dlmZmZ d dlmZ dd
d�Zddd
�Zdd� Zedkr�e� dS )� )�absolute_import�division�print_functiona\
---
module: assemble
short_description: Assemble configuration files from fragments
description:
- Assembles a configuration file from fragments.
- Often a particular program will take a single configuration file and does not support a
C(conf.d) style structure where it is easy to build up the configuration
from multiple sources. C(assemble) will take a directory of files that can be
local or have already been transferred to the system, and concatenate them
together to produce a destination file.
- Files are assembled in string sorting order.
- Puppet calls this idea I(fragments).
version_added: '0.5'
options:
src:
description:
- An already existing directory full of source files.
type: path
required: true
dest:
description:
- A file to create using the concatenation of all of the source files.
type: path
required: true
backup:
description:
- Create a backup file (if C(true)), including the timestamp information so
you can get the original file back if you somehow clobbered it
incorrectly.
type: bool
default: no
delimiter:
description:
- A delimiter to separate the file contents.
type: str
version_added: '1.4'
remote_src:
description:
- If C(false), it will search for src at originating/master machine.
- If C(true), it will go to the remote/target machine for the src.
type: bool
default: yes
version_added: '1.4'
regexp:
description:
- Assemble files only if C(regex) matches the filename.
- If not set, all files are assembled.
- Every C(\) (backslash) must be escaped as C(\\) to comply to YAML syntax.
- Uses L(Python regular expressions,https://docs.python.org/3/library/re.html).
type: str
ignore_hidden:
description:
- A boolean that controls if files that start with a '.' will be included or not.
type: bool
default: no
version_added: '2.0'
validate:
description:
- The validation command to run before copying into place.
- The path to the file to validate is passed in via '%s' which must be present as in the sshd example below.
- The command is passed securely so shell features like expansion and pipes won't work.
type: str
version_added: '2.0'
attributes:
action:
support: full
async:
support: none
bypass_host_loop:
support: none
check_mode:
support: none
diff_mode:
support: full
platform:
platforms: posix
safe_file_operations:
support: full
vault:
support: full
version_added: '2.2'
seealso:
- module: ansible.builtin.copy
- module: ansible.builtin.template
- module: ansible.windows.win_copy
author:
- Stephen Fromm (@sfromm)
extends_documentation_fragment:
- action_common_attributes
- action_common_attributes.flow
- action_common_attributes.files
- decrypt
- files
a(
- name: Assemble from fragments from a directory
ansible.builtin.assemble:
src: /etc/someapp/fragments
dest: /etc/someapp/someapp.conf
- name: Insert the provided delimiter between fragments
ansible.builtin.assemble:
src: /etc/someapp/fragments
dest: /etc/someapp/someapp.conf
delimiter: '### START FRAGMENT ###'
- name: Assemble a new "sshd_config" file into place, after passing validation with sshd
ansible.builtin.assemble:
src: /etc/ssh/conf.d/
dest: /etc/ssh/sshd_config
validate: /usr/sbin/sshd -t -f %s
�#N)�
AnsibleModule)�b�
indexbytes)� to_nativeFc C s. t j|d�\}}t�|d�}d}d} tt�| ��D ]�}
|rF|�|
�sFq2tj�| |
�}tj� |�r2|rxtj�
|��d�rxq2t|d��}|�
� }
W d � n1 s�0 Y | r�|�td�� |r�|r�t�|�d }|�|� t|d �d
kr�|�td�� |�|
� d}|
�td���rd} q2d} q2|�� |S )z/ assemble a file from a directory of fragments )�dir�wbF�.�rbN�
r ����
T)�tempfileZmkstemp�os�fdopen�sorted�listdir�search�path�join�isfile�basename�
startswith�open�read�writer �codecs�
escape_decoder �endswith�close)Zsrc_path� delimiter�compiled_regexp�
ignore_hidden�tmpdirZtmpfdZ temp_path�tmpZ
delimit_meZadd_newline�f�fragmentZfragment_fhZfragment_content� r* �</usr/lib/python3.9/site-packages/ansible/modules/assemble.py�assemble_from_fragments� s6 "&
r, c
C sf t j�| �rbzt �| � W nF ttfy` } z*|d urLd| t|�f g|d<