ansible.posix icon indicating copy to clipboard operation
ansible.posix copied to clipboard

backup_file missing when modifying /etc/fstab

Open timothynfarmer opened this issue 4 months ago • 0 comments

SUMMARY
ISSUE TYPE
  • Bug Report
COMPONENT NAME
ANSIBLE VERSION
ansible [core 2.16.4]
  config file = /Users/user/ansible/playbook/ansible.cfg
  configured module search path = ['/Users/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/user/ansible/playbook/venv/lib/python3.11/site-packages/ansible
  ansible collection location = /Users/user/ansible/playbook
  executable location = /Users/user/playbook/venv/bin/ansible
  python version = 3.11.4 (main, Aug 21 2023, 11:28:34) [Clang 12.0.5 (clang-1205.0.22.9)] (/Users/user/ansible/playbook/venv/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
COLLECTION VERSION
# /Users/user/playbook//ansible_collections
Collection    Version
------------- -------
ansible.posix 1.5.4
CONFIGURATION
ANSIBLE_NOCOWS(/Users/user/ansible/playbook/ansible.cfg) = True
CACHE_PLUGIN(/Users/user/ansible/playbook/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/Users/user/ansible/playbook/ansible.cfg) = ./facts.d/
COLLECTIONS_PATHS(/Users/user/ansible/playbook/ansible.cfg) = ['/Users/user/ansible/playbook']
CONFIG_FILE() = /Users/user/ansible/playbook/ansible.cfg
DEFAULT_ROLES_PATH(/Users/user/ansible/playbook/ansible.cfg) = ['/Users/user/ansible/playbook/roles>
PAGER(env: PAGER) = less
OS / ENVIRONMENT

Target is CentOS 7 server

STEPS TO REPRODUCE

Modify fstab and remove an entry with backup: true

  - name: Print if NFS
    ansible.builtin.debug:
      # msg: "NFS Mount Detected {{ item.dev }}"
      var: item
    when: nfs | length > 0
    vars:
      nfs: "{{ ansible_mounts | community.general.json_query('[?contains(fstype, `nfs`)]') }}"
    with_items: "{{ nfs }}"

  - name: Remove network shares from fstab
    ansible.posix.mount:
      path: "{{ item.mount }}"
      src: "{{ item.device }}"
      state: absent_from_fstab
      backup: yes
    vars:
      nm: "{{ ansible_mounts | community.general.json_query('[?contains(fstype, `nfs`) || contains(fstype, `cifs`)]') }}"
    with_items: "{{ nm }}"
    when: (nm | length) > 0
    register: rem_nfs

  - name: Print out the output
    ansible.builtin.debug:
      var: rem_nfs
EXPECTED RESULTS

I would expect to get the results and have backup_file defined but it's not. It's empty and the backup_file is created.

ACTUAL RESULTS
TASK [Remove network shares from fstab] ******************************************************************************
task path: /Users/user/ansible/playbook/facts.yml:68
Loading collection community.general from /Users/user/ansible/playbook/ansible_collections/community/general
<server> ESTABLISH SSH CONNECTION FOR USER: None
<server> SSH: EXEC sshpass -d44 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o 'ControlPath="/Users/user/.ansible/cp/70666108ae"' server '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<server> (0, b'/home/remote_user\n', b'OpenSSH_9.4p1, LibreSSL 3.3.6\r\ndebug1: Reading configuration data /Users/user/.ssh/config\r\ndebug1: /Users/user/.ssh/config line 1: Applying options for *\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files\r\ndebug1: /etc/ssh/ssh_config line 54: Applying options for *\r\ndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49917\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet_timeout: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<server> ESTABLISH SSH CONNECTION FOR USER: None
<server> SSH: EXEC sshpass -d44 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o 'ControlPath="/Users/user/.ansible/cp/70666108ae"' server '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/remote_user/.ansible/tmp `"&& mkdir "` echo /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965 `" && echo ansible-tmp-1709069096.46433-50785-250687617332965="` echo /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965 `" ) && sleep 0'"'"''
<server> (0, b'ansible-tmp-1709069096.46433-50785-250687617332965=/home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965\n', b'OpenSSH_9.4p1, LibreSSL 3.3.6\r\ndebug1: Reading configuration data /Users/user/.ssh/config\r\ndebug1: /Users/user/.ssh/config line 1: Applying options for *\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files\r\ndebug1: /etc/ssh/ssh_config line 54: Applying options for *\r\ndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49917\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet_timeout: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
Using module file /Users/user/ansible/playbook/ansible_collections/ansible/posix/plugins/modules/mount.py
<server> PUT /Users/user/.ansible/tmp/ansible-local-49445wvxcx9f6/tmpujcbxom0 TO /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py
<server> SSH: EXEC sshpass -d44 sftp -o BatchMode=no -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o 'ControlPath="/Users/user/.ansible/cp/70666108ae"' '[server]'
<server> (0, b'sftp> put /Users/user/.ansible/tmp/ansible-local-49445wvxcx9f6/tmpujcbxom0 /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py\n', b'OpenSSH_9.4p1, LibreSSL 3.3.6\r\ndebug1: Reading configuration data /Users/user/.ssh/config\r\ndebug1: /Users/user/.ssh/config line 1: Applying options for *\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files\r\ndebug1: /etc/ssh/ssh_config line 54: Applying options for *\r\ndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49917\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug2: Remote version: 3\r\ndebug2: Server supports extension "[email protected]" revision 1\r\ndebug2: Server supports extension "[email protected]" revision 2\r\ndebug2: Server supports extension "[email protected]" revision 2\r\ndebug2: Server supports extension "[email protected]" revision 1\r\ndebug2: Server supports extension "[email protected]" revision 1\r\ndebug2: Sending SSH2_FXP_REALPATH "."\r\ndebug3: Sent message fd 3 T:16 I:1\r\ndebug3: SSH2_FXP_REALPATH . -> /home/remote_user\r\ndebug3: Looking up /Users/user/.ansible/tmp/ansible-local-49445wvxcx9f6/tmpujcbxom0\r\ndebug2: Sending SSH2_FXP_STAT "/home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py"\r\ndebug3: Sent message fd 3 T:17 I:2\r\ndebug1: stat remote: No such file or directory\r\ndebug2: do_upload: upload local "/Users/user/.ansible/tmp/ansible-local-49445wvxcx9f6/tmpujcbxom0" to remote "/home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py"\r\ndebug2: Sending SSH2_FXP_OPEN "/home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py"\r\ndebug3: Sent dest message SSH2_FXP_OPEN I:3 P:/home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py M:0x001a\r\ndebug3: Sent message SSH2_FXP_WRITE I:5 O:0 S:32768\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 5 32768 bytes at 0\r\ndebug3: Sent message SSH2_FXP_WRITE I:6 O:32768 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:7 O:65536 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:8 O:98304 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:9 O:131072 S:8662\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 6 32768 bytes at 32768\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 7 32768 bytes at 65536\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 8 32768 bytes at 98304\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 9 8662 bytes at 131072\r\ndebug3: Sent message SSH2_FXP_CLOSE I:4\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: mux_client_read_packet_timeout: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<server> ESTABLISH SSH CONNECTION FOR USER: None
<server> SSH: EXEC sshpass -d44 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o 'ControlPath="/Users/user/.ansible/cp/70666108ae"' server '/bin/sh -c '"'"'chmod u+x /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/ /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py && sleep 0'"'"''
<server> (0, b'', b'OpenSSH_9.4p1, LibreSSL 3.3.6\r\ndebug1: Reading configuration data /Users/user/.ssh/config\r\ndebug1: /Users/user/.ssh/config line 1: Applying options for *\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files\r\ndebug1: /etc/ssh/ssh_config line 54: Applying options for *\r\ndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49917\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet_timeout: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<server> ESTABLISH SSH CONNECTION FOR USER: None
<server> SSH: EXEC sshpass -d44 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o 'ControlPath="/Users/user/.ansible/cp/70666108ae"' -tt server '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=tqbnxmcuqeslucfeopatabokrmelckkk] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-tqbnxmcuqeslucfeopatabokrmelckkk ; /usr/bin/python /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/AnsiballZ_mount.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<server> (0, b'\r\n{"src": "nfs:/mount", "fstab": "/etc/fstab", "backup_file": "", "name": "/nfs/mnt", "dump": "0", "warnings": [], "passno": "0", "changed": true, "boot": "yes", "invocation": {"module_args": {"src": "nfs:/mount", "dump": "0", "boot": true, "fstab": null, "passno": "0", "fstype": null, "state": "absent_from_fstab", "path": "/nfs/mnt", "backup": true, "opts": null}}, "opts": "defaults"}\r\n', b'OpenSSH_9.4p1, LibreSSL 3.3.6\r\ndebug1: Reading configuration data /Users/user/.ssh/config\r\ndebug1: /Users/user/.ssh/config line 1: Applying options for *\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files\r\ndebug1: /etc/ssh/ssh_config line 54: Applying options for *\r\ndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49917\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet_timeout: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\nShared connection to server closed.\r\n')
<server> ESTABLISH SSH CONNECTION FOR USER: None
<server> SSH: EXEC sshpass -d44 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o 'ControlPath="/Users/user/.ansible/cp/70666108ae"' server '/bin/sh -c '"'"'rm -f -r /home/remote_user/.ansible/tmp/ansible-tmp-1709069096.46433-50785-250687617332965/ > /dev/null 2>&1 && sleep 0'"'"''
<server> (0, b'', b'OpenSSH_9.4p1, LibreSSL 3.3.6\r\ndebug1: Reading configuration data /Users/user/.ssh/config\r\ndebug1: /Users/user/.ssh/config line 1: Applying options for *\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug3: kex names ok: [diffie-hellman-group1-sha1]\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files\r\ndebug1: /etc/ssh/ssh_config line 54: Applying options for *\r\ndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49917\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet_timeout: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
changed: [server] => (item={'block_used': 33668, 'uuid': 'N/A', 'size_total': 26843545600, 'block_total': 102400, 'mount': '/nfs/mnt', 'block_available': 68732, 'size_available': 18017681408, 'fstype': 'nfs4', 'inode_total': 32487664, 'inode_available': 32483900, 'device': 'nfs:/mount', 'inode_used': 3764, 'block_size': 262144, 'options': 'rw,nodev,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.28.114.105,local_lock=none,addr=172.28.49.101'}) => {
    "ansible_loop_var": "item",
    "backup_file": "",
    "boot": "yes",
    "changed": true,
    "dump": "0",
    "fstab": "/etc/fstab",
    "invocation": {
        "module_args": {
            "backup": true,
            "boot": true,
            "dump": "0",
            "fstab": null,
            "fstype": null,
            "opts": null,
            "passno": "0",
            "path": "/nfs/mnt",
            "src": "nfs:/mount",
            "state": "absent_from_fstab"
        }
    },
    "item": {
        "block_available": 68732,
        "block_size": 262144,
        "block_total": 102400,
        "block_used": 33668,
        "device": "nfs:/mount",
        "fstype": "nfs4",
        "inode_available": 32483900,
        "inode_total": 32487664,
        "inode_used": 3764,
        "mount": "/nfs/mnt",
        "options": "rw,nodev,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.28.114.105,local_lock=none,addr=172.28.49.101",
        "size_available": 18017681408,
        "size_total": 26843545600,
        "uuid": "N/A"
    },
    "name": "/nfs/mnt",
    "opts": "defaults",
    "passno": "0",
    "src": "nfs:/mount"
}

TASK [Print out the output] ******************************************************************************************
task path: /Users/user/ansible/playbook/facts.yml:80
ok: [server] => {
    "rem_nfs": {
        "changed": true,
        "msg": "All items completed",
        "results": [
            {
                "ansible_loop_var": "item",
                "backup_file": "",
                "boot": "yes",
                "changed": true,
                "dump": "0",
                "failed": false,
                "fstab": "/etc/fstab",
                "invocation": {
                    "module_args": {
                        "backup": true,
                        "boot": true,
                        "dump": "0",
                        "fstab": null,
                        "fstype": null,
                        "opts": null,
                        "passno": "0",
                        "path": "/nfs/mnt",
                        "src": "nfs:/mount",
                        "state": "absent_from_fstab"
                    }
                },
                "item": {
                    "block_available": 68732,
                    "block_size": 262144,
                    "block_total": 102400,
                    "block_used": 33668,
                    "device": "nfs:/mount",
                    "fstype": "nfs4",
                    "inode_available": 32483900,
                    "inode_total": 32487664,
                    "inode_used": 3764,
                    "mount": "/nfs/mnt",
                    "options": "rw,nodev,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.28.114.105,local_lock=none,addr=172.28.49.101",
                    "size_available": 18017681408,
                    "size_total": 26843545600,
                    "uuid": "N/A"
                },
                "name": "/nfs/mnt",
                "opts": "defaults",
                "passno": "0",
                "src": "nfs:/mount"
            }
        ],
        "skipped": false
    }
}

timothynfarmer avatar Feb 27 '24 21:02 timothynfarmer