Using this version of Ansible
`
ansible --version
ansible 2.1.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
[
`
On a Softlayer VM
Linux staging 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
with these mount points
`
[root@staging ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdc 202:32 0 150G 0 disk
└─xvdc1 202:33 0 150G 0 part /opt
xvda 202:0 0 25G 0 disk
├─xvda1 202:1 0 256M 0 part /boot
└─xvda2 202:2 0 24.8G 0 part /
xvdb 202:16 0 2G 0 disk
└─xvdb1 202:17 0 2G 0 part [SWAP]
`
The setup play in a previously working playbook failed like this
`
[setup]
fatal: [staging]: FAILED! => {“changed”: false, “cmd”: “/bin/lsblk -ln --output UUID /dev/xvda1”, “failed”: true, “msg”: “Traceback (most recent call last):\n File "/tmp/ansible_a4NBhA/ansible_modlib.zip/ansible/module_utils/basic.py", line 2093, in run_command\n cmd = subprocess.Popen(args, **kwargs)\n File "/usr/lib64/python2.6/subprocess.py", line 642, in init\n errread, errwrite)\n File "/usr/lib64/python2.6/subprocess.py", line 1223, in _execute_child\n data = _eintr_retry_call(os.read, errpipe_read, 1048576)\n File "/usr/lib64/python2.6/subprocess.py", line 462, in _eintr_retry_call\n return func(*args)\n File "/tmp/ansible_a4NBhA/ansible_modlib.zip/ansible/module_utils/facts.py", line 101, in _handle_timeout\n raise TimeoutError(error_message)\nTimeoutError: Timer expired\n”, “rc”: 257}
`
I confirmed with an adhoc ansible setup
`
ansible staging -m setup
staging | FAILED! => {
“changed”: false,
“cmd”: “/bin/lsblk -ln --output UUID /dev/xvda1”,
“failed”: true,
“msg”: “Traceback (most recent call last):\n File "/tmp/ansible_HuNPPI/ansible_modlib.zip/ansible/module_utils/basic.py", line 2093, in run_command\n cmd = subprocess.Popen(args, **kwargs)\n File "/usr/lib64/python2.6/subprocess.py", line 642, in init\n errread, errwrite)\n File "/usr/lib64/python2.6/subprocess.py", line 1223, in _execute_child\n data = _eintr_retry_call(os.read, errpipe_read, 1048576)\n File "/usr/lib64/python2.6/subprocess.py", line 462, in _eintr_retry_call\n return func(*args)\n File "/tmp/ansible_HuNPPI/ansible_modlib.zip/ansible/module_utils/facts.py", line 101, in _handle_timeout\n raise TimeoutError(error_message)\nTimeoutError: Timer expired\n”,
“rc”: 257
}
`
On the server itself this command worked fine
/bin/lsblk -ln --output UUID /dev/xvda1
And there was no obvious issues in syslogs
I then ran this and it worked
`
ansible staging -m setup -a ‘gather_subset=network’
staging | SUCCESS => {
“ansible_facts”: {
`
Then I unmouned and remounted /boot (/dev/xvda1). The subcall then failed on /dev/xvdc1
A reboot of the machine fixed the issue.
I am curious why the Ansible call to lsblk did not work but the native call did.