### Summary


we config the domain info with the `/etc/hosts` file, we monitor our service and change the domain with bash script like this:
```
ansible 127.0.0.1 -m blockinfile -a "block='192.168.1.1 test.company.com' marker='# {mark} : test block' path=/etc/hosts"
```
BUT , occasionally the file `/etc/hosts` contains multiple block. I expected that there should be only one block.

I have read the source code `lib/ansible/modules/files/blockinfile.py` and find nothing suspicious.


### Issue Type
~Bug  Report~
- Docs Report

### Component Name

blockinfile

### Ansible Version

```console
$ ansible --version
ansible 2.7.5.post0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
```


### Configuration

```console
$ ansible-config dump --only-changed
COMMAND_WARNINGS(/etc/ansible/ansible.cfg) = False
HOST_KEY_CHECKING(/etc/ansible/ansible.cfg) = False
```


### OS / Environment

CentOS-7.6

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
ansible 127.0.0.1 -m blockinfile -a "block='192.168.1.1 test.company.com' marker='# {mark} : test block' path=/etc/hosts"
```


### Expected Results

```console
# BEGIN : test block
192.168.1.1 test.company.com
# END : test block
```

### Actual Results

```console
# BEGIN : test block
192.168.1.1 test.company.com
# END : test block
# BEGIN : test block
192.168.1.2 test.company.com
# END : test block
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
version_added: '2.5'
  marker_end:
    required: false
    description:
    - This will be inserted at C({mark}) in the closing ansible block marker.
    type: str
    default: END
    version_added: '2.5'
notes:
  - When using 'with_*' loops be aware that if you do not set a unique mark the block will be overwritten on each iteration.
  - As of Ansible 2.3, the I(dest) option has been changed to I(path) as default, but I(dest) still works as well.
  - Option I(follow) has been removed in Ansible 2.5, because this module modifies the contents of the file so I(follow=no) doesn't make sense.
  - When more then one block should be handled in one file you must change the I(marker) per task.
extends_documentation_fragment:
    - action_common_attributes
    - action_common_attributes.files
    - files
    - validate
attributes:
    check_mode:
        support: full
    diff_mode:
        support: full
    safe_file_operations:
      support: full
    platform:
      support: full
      platforms: posix
    vault:
      support: none