我有一个Ansible任务:
- name: Ensure Gluster volume is mounted.
mount:
name: "{{ mount_dir }}"
src: "{{ inventory_hostname }}:{{ brick_name }}"
fstype: glusterfs
opts: "defaults,_netdev"
state: mounted
输出失败:
fatal: [remotehost.com]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_args": {"dump": null, "fstab": "/etc/fstab", "fstype": "glusterfs", "name": "ssl", "opts": "defaults,_netdev", "passno": null, "src": "remotehost.com:/craik/clm/ssl", "state": "mounted"}, "module_name": "mount"}, "msg": "Error mounting ssl: Mount failed. Please check the log file for more details.\n"}
是否有可能看到Ansible正在将挂载任务转换为实际的Unix命令?
例如:
mount -t glusterfs remotehost.com:/craik/clm/ssl /srv/gluster/ssl
答案 0 :(得分:2)
不,如果没有修改源代码,您将无法看到该命令。
mount
模块的source code表明它:
'%(src)s %(name)s %(fstype)s %(opts)s %(dump)s %(passno)s\n'
写入fstab mount <name>
答案 1 :(得分:2)
Ansible使用Python脚本来执行其操作(它可能从Python调用外部程序,但如果没有必要,则不会。)
在执行ANSIBLE_KEEP_REMOTE_FILES=1
之前,您可以通过向控制计算机上的环境添加ansible-playbook
来使Ansible保留在目标计算机上运行的实际脚本。
例如,如果您运行:
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook playbook.yml -vvv
您将在成绩单中看到类似的内容:
PUT /var/folders/nw/2vnhg_gj77v_cyfv0p1vdfj80000gn/T/tmpidULyi TO /home/vagrant/.ansible/tmp/ansible-tmp-1484137690.32-255077767492235/mount.py
然后,如果您打开mount.py
,您可以验证实际代码(您也可以重新运行它)。
答案 2 :(得分:0)
您是否尝试使用-vvvv标志运行ansible? 这样可以实现详细程度,它通常会显示正在运行的命令。
它通常隐藏在输出的某个地方,但它就在那里。