### 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
elif original is None:
        msg = 'File created'
        changed = True
    elif not blocklines:
        msg = 'Block removed'
        changed = True
    else:
        msg = 'Block inserted'
        changed = True
    backup_file = None
    if changed and not module.check_mode:
        if module.boolean(params['backup']) and path_exists:
            backup_file = module.backup_local(path)
        
        real_path = os.path.realpath(params['path'])
        write_changes(module, result, real_path)
    if module.check_mode and not path_exists:
        module.exit_json(changed=changed, msg=msg, diff=diff)
    attr_diff = {}
    msg, changed = check_file_attrs(module, changed, msg, attr_diff)
    attr_diff['before_header'] = '%s (file attributes)' % path
    attr_diff['after_header'] = '%s (file attributes)' % path
    difflist = [diff, attr_diff]
    if backup_file is None:
        module.exit_json(changed=changed, msg=msg, diff=difflist)
    else:
        module.exit_json(changed=changed, msg=msg, diff=difflist, backup_file=backup_file)
if __name__ == '__main__':
    main()