Commit Graph

55 Commits (c18da65089e396ac2e459654398b32f68aecfc98)

Author SHA1 Message Date
Jérémy Lecour 2fb9b46752 Lineinfile must not insert lines multiples times with insertbefore/insertafter (#49409)
* Change test suite to fit expected behaviour

This reverts some changes from ansible/ansible@723daf3
If a line is found in the file, exactly or via regexp matching, it must 
not be added again.
insertafter/insertbefore options are used only when a line is to be 
inserted, to specify where it must be added.

* Implement the change in behaviour mentioned in the previous commit

* Fix comment to reflect what the code does

* Set the correct return message.

In these cases, the lines are added, not replaced.

* Add a changelog
2018-12-17 16:42:24 -05:00
Dag Wieers 26474c6902
Add seealso section to Windows and related modules (#49845)
* Add seealso section to Windows and related modules

* Fixes after review
2018-12-15 03:23:59 +01:00
jfpanisset 1814af9f34 Document lineinfile regexp gotcha (#47912)
You typically want the lineinfile module to operate in an indempotent way, similar to using "sed -i", so your regexp needs to match the line to edit both before and after the edit, otherwise on a second run the regexp will no longer match the original text line and you will end up with a second copy of the replacement line at the top/bottom of the file.
2018-11-01 10:38:45 -04:00
Sam Doran b74279d14c Use proper index value with insertbefore on a one line file (#46071)
Add tests and changelog
2018-10-03 17:27:34 -04:00
Matt Clay bbca98ae8e Fix PEP8 issue. 2018-09-01 22:54:13 -07:00
Dan Farrell 667f62c5a8 Update lineinfile.py (#44976)
* Update lineinfile.py

The document should call out in the regexp section what regexp does in non-match scenario, not just leave it for the reader to find it under `insertbefore` and `insertafter`.  
+label: docsite_pr

* Update lineinfile.py

fixing for lint

* Use multiple entries
2018-09-02 05:18:33 +02:00
Alicia Cozine 0be5734741 add insertbefore/after details to lineinefile docs (#44277) 2018-08-17 10:19:07 -04:00
fluxcess 6290a7c595 added description (#42187)
Added description to one of the really basic code examples

+label: docsite_pr
2018-07-02 10:10:27 -04:00
Sam Doran fb55038d75 Add warning when using an empty regexp in lineinfile (#42013)
* Revert "Account for empty string regexp in lineinfile (#41451)"

This reverts commit 4b5b4a760c.

* Use context managers for interacting with files

* Store line and regexp parameters in a variable

* Add warning when regexp is an empty string

* Remove '=' from error messages

* Update warning message and add changelog

* Add tests

* Improve warning message

Offer an equivalent regexp that won't trigger the warning.
Update tests to match new warning.

* Add porting guide entry for lineinfile change
2018-06-29 17:15:43 -07:00
Sam Doran 4b5b4a760c
Account for empty string regexp in lineinfile (#41451)
* Use context managers for interacting with files

* Account for empty string as regexp

Rather than explicitly testing for None, also test for an empty string which will evaluate to False. An empty string regexp matches every line, which ends up replacing the incorrect line.

* Store line parameter in a variable

* Add tests
2018-06-25 17:57:05 -04:00
Sam Doran eaae1318f8
Skip if insertbefore BOF until later (#41767)
If a line match is found in the file and no regexp is specified, insertbefore would improperly try to add a line if set to BOF.

Add tests for this scenario.
2018-06-25 16:24:41 -04:00
Evgeni Golov e601caf873 lineinfile: add regex as an alias for regexp (#20454)
the param is called regexp, but a lot of people spell it regex
add an alias to help them
2018-06-20 12:54:33 -04:00
siran b43a1a9f9f Update lineinfile.py (#38444)
`line` is a parameter. just making it explicit.
2018-05-24 23:22:18 -04:00
Jordan Borean c3a805aa3c minor wording changes to remove ambiguity 2018-02-28 16:47:41 -05:00
Michael Gajda 45e7689335 Fix lineinfile example
The examples comment said 'Add a line to a file if it does not exist, without passing regexp' which suggests, that the file is being created. But the default for 'create' is false. Thus the example lacked this option.
2018-02-28 16:47:41 -05:00
Sam Doran 723daf3e3a
Check for regexp match when using insertbefore or insertafter (#36474)
Add tests to cover this scenario
Fixes #36156
2018-02-21 17:03:38 -05:00
Giovanni Sciortino 038b281da2 lineinfile creating underlying directory manage permission denied exception (#35794) 2018-02-06 14:03:20 -06:00
Sam Doran f8f2b6d61d
Fix lineinfile to insert line when pattern exists elsewhere in the file. (#33393)
* Insert lines before or after when the regexp exists elsewhere in the file

* Correct filter syntax in lineinfile integration test

* Use multi-line YAML syntax on lineinfile tests

Unify indentation

* Add lineinfile tests for same line matched to different regexps

* Remove debug statement from test
2018-02-01 16:45:26 -05:00
cyrill d08179593f Add a new option firstmatch to lineinfile module. (#33825)
* Add a new option firstmatch to lineinfile module.

* Add firstmatch option in DOCUMENTATION

* Fix indent

* Add version_added "2.5"
2017-12-13 09:49:44 -06:00
Dag Wieers babc2354a5
lineinfile: pylint fixes and docs (#30854)
This PR includes;
- pylint fixes
- Documentation updates
2017-10-30 00:55:14 +01:00
Toshio Kuratomi f203ca7907 Update metadata to 1.1 2017-08-15 23:12:08 -07:00
Abhijeet Kasurde bf54a0c3e5 Fix missing import and boilerplate
Added fix for missing imports and boilerplate in files modules,
also, removed get_exception calls to match 2.6> exception handling.

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2017-08-03 08:39:15 -07:00
Pete Travis 7a35b95609 provide usable examples for sudo validation 2017-08-03 11:04:07 -04:00
Sloane Hertel 00ebd0c89d make lineinfile docs clearer and make module pep8 (#23857) 2017-04-23 09:19:22 +02:00
Toshio Kuratomi eb1214baad New metadata 1.0 (#22587)
Changes to the metadata format were approved here:
https://github.com/ansible/proposals/issues/54
* Update documentation to the new metadata format
* Changes to metadata-tool to account for new metadata
  * Add GPL license header
  * Add upgrade subcommand to upgrade metadata version
  * Change default metadata to the new format
  * Fix exclusion of non-modules from the metadata report
* Fix ansible-doc for new module metadata
* Exclude metadata version from ansible-doc output
* Fix website docs generation for the new metadata
* Update metadata schema in valiate-modules test
* Update the metadata in all modules to the new version
2017-03-14 09:07:22 -07:00
Matt Clay 10d9318de7 PEP 8 indent cleanup. (#20800)
* PEP 8 E121 cleanup.

* PEP 8 E126 cleanup.

* PEP 8 E122 cleanup.
2017-01-29 07:28:53 +00:00
HyungCheol Kim fc04164505 Correct typos. (#20490) 2017-01-20 08:03:49 -05:00
Dag Wieers 1ad55ec9de Consistent path attribute for file-related modules
Not all file-related modules consistently use "path" as the attribute to specify a single filename, some use "dest", others use "name". Most do have aliases for either "name" or "destfile".

This change makes "path" the default attribute for (single) file-related modules, but also adds "dest" and "name" as aliases, so that people can use a consistent way of attributing paths, but also to ensure backward compatibility with existing playbooks.

NOTE: The reason for changing this, is that it makes Ansible needlessly harder to use if you have to remember that e.g. the xattr module requires the name attribute, the lineinfile module requires a dest attribute, and the stat module requires a path attribute.
2017-01-13 15:49:42 -05:00
Toshio Kuratomi 08d6990e67 Fix code-blocks to use correct syntax highlighting 2017-01-08 09:18:45 -08:00
Matt Clay c709b22e5c Fix differences with devel. 2016-12-08 11:35:21 -05:00
James Cammarata 8afa090417 Resolving differences in core modules post-merge 2016-12-08 11:25:36 -05:00
Toshio Kuratomi 7319104552 Refreshed metadata for core modules 2016-12-08 11:25:35 -05:00
Sam Doran 25f6f36a92 Change examples syntax on lineinfile module 2016-12-08 11:25:29 -05:00
Toshio Kuratomi 45846127c5 to_text, to_bytes, and to_native now have surrogate_or_strict error handler (#4630)
On python3, we want to use the surrogateescape error handler if
available for filesystem paths and the like.  On python2, have to use
strict in these circumstances.  Use the new error strategy for to_text,
to_bytes, and to_native that allows this.
2016-12-08 11:24:57 -05:00
Toshio Kuratomi c4988262b5 Fixes for lineinfile (#4553)
Lineinfile deals heavily with Unic text files.  Makes some sense to deal
with it all as byte strings.  So there is a lot of work done here to
show that we're dealing with byte strings throughout.
2016-12-08 11:24:53 -05:00
Brian Coca 81e87cefd7 unsafe writes! (#4314)
* unsafe writes!

* moved unsafe_write docs and args to file common

* added unsafe_writes option handling
2016-12-08 11:24:49 -05:00
Marcos Diez 366d52cf18 The documentation of lineinfile now makes reference to blockinfile (#3639) 2016-12-08 11:24:30 -05:00
Jose Moreira cc173b445e Fixed module doc typos 2016-12-08 11:24:06 -05:00
Tobias Wolf 1ecc8544f6 Add diff for both file contents and file attributes to lineinfile
Using the difflist feature added in ansible/ansible@c337293 we can add
two diffs to the `diff` dict returned as JSON: A `before` and `after` pair of
changed file contents and the diff of the file attributes.

n.b.: the difflist handling from the above commit is logically broken.
PR will follow.

Example output:

    TASK [change line and mode] ************************************************************
    changed: [localhost]
    --- before: /tmp/sshd_config (content)
    +++ after: /tmp/sshd_config (content)
    @@ -65,21 +65,21 @@
     X11DisplayOffset 10
     PrintMotd no
     PrintLastLog yes
     TCPKeepAlive yes
     #UseLogin no

     #MaxStartups 10:30:60
     #Banner /etc/issue.net

     # Allow client to pass locale environment variables
    -AcceptEnv LANG LC_*
    +AcceptEnv        LANG LC_* GF_ENV_*

     Subsystem sftp /usr/lib/openssh/sftp-server

     # Set this to 'yes' to enable PAM authentication, account processing,
     # and session processing. If this is enabled, PAM authentication will
     # be allowed through the ChallengeResponseAuthentication and
     # PasswordAuthentication.  Depending on your PAM configuration,
     # PAM authentication via ChallengeResponseAuthentication may bypass
     # the setting of "PermitRootLogin without-password".
     # If you just want the PAM account and session checks to run without

    --- before: /tmp/sshd_config (file attributes)
    +++ after: /tmp/sshd_config (file attributes)
    @@ -1,3 +1,3 @@
     {
    -    "mode": "0700"
    +    "mode": "0644"
     }
2016-12-08 11:24:02 -05:00
Jeff Widman 70b3290a3b Move validate command into doc fragment and fix a few typos 2016-12-08 11:23:24 -05:00
gimoh fd69c5687b Do not insert extra newline if line already contains it
When using YAML multi-line strings, e.g.:

- lineinfile:
    dest: /tmp/foo
    line: >
      foo
      bar

the line already ends with a newline.  If an extra newline is appended unconditionally it will lead to inserting an extra newline on each run.
2016-12-08 11:23:13 -05:00
Greg DeKoenigsberg eb881d7d5d Proper author info for all remaining modules 2016-12-08 11:23:07 -05:00
jaypei fbc8d4ca4a use the right way to unescape line string Reference https://github.com/ansible/ansible/issues/10864 2016-12-08 11:23:03 -05:00
Toshio Kuratomi 20d7f929be Fix use of codecs.escape_decode() 2016-12-08 11:22:59 -05:00
Toshio Kuratomi 5204e94bda Slightly more future-proof version of the lineinfile fix 2016-12-08 11:22:59 -05:00
Toshio Kuratomi 1002fafedf Correct lineinfile documentation about double quoting... Hasn't been the case for years. 2016-12-08 11:22:59 -05:00
Toshio Kuratomi 86f8a3d381 Clarify the documented behaviour of insertbefore slightly. 2016-12-08 11:22:46 -05:00
Piotr Gosławski 9dd4f22430 update docs for insertbefore/insertafter 2016-12-08 11:22:46 -05:00
Piotr Gosławski d388516046 Fix behavior when insert* doesn't match anything
If insertbefore/insertafter didn't match anything, lineinfile module was doing nothing, instead of adding the line at end of fille as it's supposed to.
2016-12-08 11:22:46 -05:00
Jeff Bradberry 60ed80f99a Fix breakage in lineinfile check mode when target file does not exist.
Similarly to https://github.com/ansible/ansible/issues/6182, checking of the file attributes should be avoided in check mode when the file didn't originally exist.

Also, avoid creating parent directories in check mode.

Fixes https://github.com/ansible/ansible/issues/9546
2016-12-08 11:22:33 -05:00