Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/modules/files/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/modules/files/lineinfile.pyo

�
�Udac@`s�ddlmZmZmZeZidd6dgd6dd6ZdZd	Zdd
l	Z	dd
l
Z
dd
lZddlm
Z
ddlmZmZmZd
�Zd�Zd�Zd�Zd�Zedkr�e�nd
S(i(tabsolute_importtdivisiontprint_functions1.1tmetadata_versiontpreviewtstatustcoretsupported_bysn
---
module: lineinfile
short_description: Manage lines in text files
description:
  - This module ensures a particular line is in a file, or replace an
    existing line using a back-referenced regular expression.
  - This is primarily useful when you want to change a single line in a file only.
  - See the M(replace) module if you want to change multiple, similar lines
    or check M(blockinfile) if you want to insert/update/remove a block of lines in a file.
    For other cases, see the M(copy) or M(template) modules.
version_added: "0.7"
options:
  path:
    description:
      - The file to modify.
      - Before Ansible 2.3 this option was only usable as I(dest), I(destfile) and I(name).
    type: path
    required: true
    aliases: [ dest, destfile, name ]
  regexp:
    description:
      - The regular expression to look for in every line of the file.
      - For C(state=present), the pattern to replace if found. Only the last line found will be replaced.
      - For C(state=absent), the pattern of the line(s) to remove.
      - If the regular expression is not matched, the line will be
        added to the file in keeping with C(insertbefore) or C(insertafter)
        settings.
      - When modifying a line the regexp should typically match both the initial state of
        the line as well as its state after replacement by C(line) to ensure idempotence.
      - Uses Python regular expressions. See U(http://docs.python.org/2/library/re.html).
    type: str
    aliases: [ regex ]
    version_added: '1.7'
  state:
    description:
      - Whether the line should be there or not.
    type: str
    choices: [ absent, present ]
    default: present
  line:
    description:
      - The line to insert/replace into the file.
      - Required for C(state=present).
      - If C(backrefs) is set, may contain backreferences that will get
        expanded with the C(regexp) capture groups if the regexp matches.
    type: str
    aliases: [ value ]
  backrefs:
    description:
      - Used with C(state=present).
      - If set, C(line) can contain backreferences (both positional and named)
        that will get populated if the C(regexp) matches.
      - This parameter changes the operation of the module slightly;
        C(insertbefore) and C(insertafter) will be ignored, and if the C(regexp)
        does not match anywhere in the file, the file will be left unchanged.
      - If the C(regexp) does match, the last matching line will be replaced by
        the expanded line parameter.
    type: bool
    default: no
    version_added: "1.1"
  insertafter:
    description:
      - Used with C(state=present).
      - If specified, the line will be inserted after the last match of specified regular expression.
      - If the first match is required, use(firstmatch=yes).
      - A special value is available; C(EOF) for inserting the line at the end of the file.
      - If specified regular expression has no matches, EOF will be used instead.
      - If C(insertbefore) is set, default value C(EOF) will be ignored.
      - If regular expressions are passed to both C(regexp) and C(insertafter), C(insertafter) is only honored if no match for C(regexp) is found.
      - May not be used with C(backrefs) or C(insertbefore).
    type: str
    choices: [ EOF, '*regex*' ]
    default: EOF
  insertbefore:
    description:
      - Used with C(state=present).
      - If specified, the line will be inserted before the last match of specified regular expression.
      - If the first match is required, use C(firstmatch=yes).
      - A value is available; C(BOF) for inserting the line at the beginning of the file.
      - If specified regular expression has no matches, the line will be inserted at the end of the file.
      - If regular expressions are passed to both C(regexp) and C(insertbefore), C(insertbefore) is only honored if no match for C(regexp) is found.
      - May not be used with C(backrefs) or C(insertafter).
    type: str
    choices: [ BOF, '*regex*' ]
    version_added: "1.1"
  create:
    description:
      - Used with C(state=present).
      - If specified, the file will be created if it does not already exist.
      - By default it will fail if the file is missing.
    type: bool
    default: no
  backup:
    description:
      - Create a backup file including the timestamp information so you can
        get the original file back if you somehow clobbered it incorrectly.
    type: bool
    default: no
  firstmatch:
    description:
      - Used with C(insertafter) or C(insertbefore).
      - If set, C(insertafter) and C(insertbefore) will work with the first line that matches the given regular expression.
    type: bool
    default: no
    version_added: "2.5"
  others:
    description:
      - All arguments accepted by the M(file) module also work here.
    type: str
extends_documentation_fragment:
    - files
    - validate
notes:
  - As of Ansible 2.3, the I(dest) option has been changed to I(path) as default, but I(dest) still works as well.
seealso:
- module: blockinfile
- module: copy
- module: file
- module: replace
- module: template
- module: win_lineinfile
author:
    - Daniel Hokka Zakrissoni (@dhozac)
    - Ahti Kitsik (@ahtik)
s�
# NOTE: Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
- name: Ensure SELinux is set to enforcing mode
  lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: SELINUX=enforcing

- name: Make sure group wheel is not in the sudoers configuration
  lineinfile:
    path: /etc/sudoers
    state: absent
    regexp: '^%wheel'

- name: Replace a localhost entry with our own
  lineinfile:
    path: /etc/hosts
    regexp: '^127\.0\.0\.1'
    line: 127.0.0.1 localhost
    owner: root
    group: root
    mode: '0644'

- name: Ensure the default Apache port is 8080
  lineinfile:
    path: /etc/httpd/conf/httpd.conf
    regexp: '^Listen '
    insertafter: '^#Listen '
    line: Listen 8080

- name: Ensure we have our own comment added to /etc/services
  lineinfile:
    path: /etc/services
    regexp: '^# port for http'
    insertbefore: '^www.*80/tcp'
    line: '# port for http by default'

- name: Add a line to a file if the file does not exist, without passing regexp
  lineinfile:
    path: /tmp/testfile
    line: 192.168.1.99 foo.lab.net foo
    create: yes

# NOTE: Yaml requires escaping backslashes in double quotes but not in single quotes
- name: Ensure the JBoss memory settings are exactly as needed
  lineinfile:
    path: /opt/jboss-as/bin/standalone.conf
    regexp: '^(.*)Xms(\\d+)m(.*)$'
    line: '\1Xms${xms}m\3'
    backrefs: yes

# NOTE: Fully quoted because of the ': ' on the line. See the Gotchas in the YAML docs.
- name: Validate the sudoers file before saving
  lineinfile:
    path: /etc/sudoers
    state: present
    regexp: '^%ADMIN ALL='
    line: '%ADMIN ALL=(ALL) NOPASSWD: ALL'
    validate: /usr/sbin/visudo -cf %s
N(t
AnsibleModule(tto_bytest	to_nativetto_textc	C`s6tjd|j�\}}tj|d��}|j|�WdQX|jjdd�}|}|r�d|kr�|j	dd|�n|j
t||dd��\}}	}
|d	k}|d	kr�|j	dd
||
f�q�n|r2|j|t
tjjt|dd��dd�d|jd�ndS(Ntdirtwbtvalidates%stmsgsvalidate must contain %%s: %sterrorstsurrogate_or_strictis"failed to validate: rc:%s error:%st
unsafe_writes(ttempfiletmkstempttmpdirtostfdopent
writelinestparamstgettNonet	fail_jsontrun_commandR	tatomic_moveR
tpathtrealpath(tmoduletb_linestdestttmpfdttmpfiletfRtvalidtrctoutterr((sD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pyt
write_changes�s"(	*cC`sZ|j|j�}|j|td|�rP|r=|d7}nt}|d7}n||fS(Ntdiffs and s,ownership, perms or SE linux context changed(tload_file_common_argumentsRtset_fs_attributes_if_differenttFalsetTrue(R!tchangedtmessageR,t	file_args((sD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pytcheck_file_attrs�s

c
 C`sidd6dd6d|d6d|d6}
t|dd�}tjj|�s�|sq|jd	d
dd|�ntjj|�}|r�tjj|�r�|jr�ytj|�Wq�tk
r�}
|jdd
t	|�t	|
�f�q�Xng}n$t
|d��}|j�}WdQX|jrHt
dj|��|
d<n|dk	rrtjt|dd��}n|dkr�tjt|dd��}n0|dkr�tjt|dd��}nd}ddg}d}t}t|dd�}|dk	rTxOt|�D]>\}}|j|�}|r||d<|}|	rMPqMqqWn|s�x�t|�D]�\}}||jd�kr�||d<t}qg|dk	rg|j|�rg|r�|d|d<|	r�Pq�n|r�||d<|	r�Pq�q�qgqgWnd}t}ttjdd�}|ddkr[|rM|rM|j|�}n|}|j|�so||7}n|dkr'|dkr'|r'|rp|dkrp|r�|ddd kr�|d||d<nt|�|dkr)||ddjd�|krm|j||�d}t}qmq$||djd�|kr$|j|d||�d}t}q$qX|rX|dkrX|ddkr�||djd�|kr!|j|d||�d}t}q!q$||ddjd�|kr$|j|d||�d}t}q$qXq�||d|kr�|||d<d}t}q�n�|rdn||dks||dkr�|jd||�d}t}nA|dks�|ddkr|r�|ddd!kr�|j|�n|j||�d}t}n�|r�|ddkr�t|�|dkru||ddjd�|kr�|j||�d}t}q�q�|||djd�kr�|j|d||�d}t}q�n$|j|d||�d}t}|jrt
dj|��|
d<nd}|rX|jrX|rEtjj|�rE|j|�}nt|||�n|jr�tjj|�r�|jd|d|d|d|
�ni}t ||||�\}}d||d<d||d<|
|g}|jd|d|d|d|�dS("Nttbeforetafters%s (content)t
before_headertafter_headerRRR(iRsDestination %s does not exist !sError creating %s (%s)trbtBOFtEOFi����is
is
s
s
line addeds
line replaceds

R1tbackupR,s%s (file attributes)(NR;R<(NR;(s
s
(s
s
(!R	RRtexistsRtdirnamet
check_modetmakedirst	ExceptionRtopent	readlinest_diffR
tjoinRtretcompileR/t	enumeratetsearchtrstripR0tlineseptexpandtendswithtlentappendtinserttbackup_localR+t	exit_jsonR4( R!R#tregexptlinetinsertaftertinsertbeforetcreateR=tbackrefst
firstmatchR,tb_destt
b_destpathteR"R&tbre_mtbre_instindextmatchtexact_line_matchtb_linetlinenot
b_cur_linetmatch_foundRR1t	b_linesept
b_new_linet
backupdestt	attr_difftdifflist((sD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pytpresent�s
#-		

	

!!		!	%c
`sAt|dd�}tjj|�s=|jdtdd�nd}idd6dd6d	|d
6d	|d6}t|d��}|j�}	WdQX|jr�t	dj
|	��|d<n�dk	r�tj
t�dd���ng�t|dd������fd
�}
g|	D]}|
|�r|^q}	t��dk}|jrlt	dj
|	��|d<nd}
|r�|jr�|r�|j|�}
nt||	|�n|r�dt��}ni}t||||�\}}d||d
<d||d<||g}|jd|dt��d|d|
d|�dS(NRRR1Rsfile not presentR5R6R7s%s (content)R8R9R:c`sN�dk	r�j|�}n�|jd�k}|rI�j|�n|S(Ns
(RRJRKRP(ReRf(Rctbre_ctfoundRT(sD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pytmatcher�sis%s line(s) removeds%s (file attributes)RnR=R,(R	RRR>RSR/RCRDRER
RFRRGRHROR@RRR+R4(R!R#RTRUR=R[RR,R&R"RotlR1RiRjRk((RcRmRnRTsD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pytabsent�sD
		%	cC`s�tdtdtdddtddddg�d	tdd
ddd
ddg�dtdd
ddg�dtdd
ddg�dtdd
�dtdd
�dtdddt�dtdddt�dtdddt�dtdddt�dtdd
��dddggdtdt�}|j}|d}|d}|d}|d}|d}|d}|d}|dkr�|jd�nt|d d!�}	tjj	|	�r�|j
d"d#d$d%|�n|d	dkr�|r|dkr|j
d$d&�n|dkr#|j
d$d'�n|d|d}
}|
dkrY|dkrYd(}nt||||||
||||�
nA|dkr�|dkr�|j
d$d)�nt
|||||�dS(*Nt
argument_specRttypetrequiredtaliasesR#tdestfiletnametstatetstrtdefaultRltchoicesRqRTtregexRUtvalueRVRWRYtboolRXR=RZRtmutually_exclusivetadd_file_common_argstsupports_check_modeR5sThe regular expression is an empty string, which will match every line in the file. This may have unintended consequences, such as replacing the last line in the file rather than appending. If this is desired, use '^' to match every line in the file and avoid this warning.RRR(iRsPath %s is a directory !s%regexp is required with backrefs=trues#line is required with state=presentR<s3one of line or regexp is required with state=absent(RtdictR0R/RtwarnR	RRtisdirRRRlRq(R!RRXR=RYRRZRTRUtb_pathtins_beftins_aft((sD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pytmain�sV$!		







	t__main__(t
__future__RRRRst
__metaclass__tANSIBLE_METADATAt
DOCUMENTATIONtEXAMPLESRRGRtansible.module_utils.basicRtansible.module_utils._textR	R
RR+R4RlRqR�t__name__(((sD/usr/lib/python2.7/site-packages/ansible/modules/files/lineinfile.pyt<module>	s$


�=		
	�	;	=

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]