I am new to ansible and am adapting some EOL software to work on a non-target platform. This is a very old application, but I have a business requirement to get it working on a newer OS. At this point, it requires Python 2.7, which is likely the source of my headaches, but I’m not sure if there’s a way to work through it. I have been on an ansible learning journey for some time, and even if I can’t solve this specific issue, I’m interested in trying to understand why it doesn’t work because from what I see/understand, it should. The specific ansible playbook I’m looking at is here:
https://github.com/PaloAltoNetworks/minemeld-ansible/blob/master/roles/minemeld/tasks/main.yml
Specifically, the following is giving me errors:
set permissions after install
- name: minemeld directory permissions
file: path=“{{main_directory}}” state=directory recurse=yes owner=minemeld group=minemeld mode=“{{file_permissions}}”
I am getting the following error output on that step:
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 95] Operation not supported: ‘/opt/minemeld/www/webui/node_modules/gulp-useref/node_modules/.bin/strip-bom’
fatal: [127.0.0.1]: FAILED! => {“changed”: false, “module_stderr”: "Traceback (most recent call last):
File "/root/.ansible/tmp/ansible-tmp-1655840506.6-201342-88045696314185/AnsiballZ_file.py", line 100, in
_ansiballz_main()
File "/root/.ansible/tmp/ansible-tmp-1655840506.6-201342-88045696314185/AnsiballZ_file.py", line 92, in _ansiballz_main
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
File "/root/.ansible/tmp/ansible-tmp-1655840506.6-201342-88045696314185/AnsiballZ_file.py", line 41, in invoke_module
run_name=‘main’, alter_sys=True)
File "/usr/lib/python2.7/runpy.py", line 188, in run_module
fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 82, in _run_module_code
mod_name, mod_fname, mod_loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/tmp/ansible_file_payload_QSceSb/ansible_file_payload.zip/ansible/modules/file.py", line 966, in
File "/tmp/ansible_file_payload_QSceSb/ansible_file_payload.zip/ansible/modules/file.py", line 952, in main
File "/tmp/ansible_file_payload_QSceSb/ansible_file_payload.zip/ansible/modules/file.py", line 672, in ensure_directory
File "/tmp/ansible_file_payload_QSceSb/ansible_file_payload.zip/ansible/modules/file.py", line 354, in recursive_set_attributes
File "/tmp/ansible_file_payload_QSceSb/ansible_file_payload.zip/ansible/module_utils/basic.py", line 1170, in set_fs_attributes_if_different
File "/tmp/ansible_file_payload_QSceSb/ansible_file_payload.zip/ansible/module_utils/basic.py", line 926, in set_mode_if_different
OSError: [Errno 95] Operation not supported: ‘/opt/minemeld/www/webui/node_modules/gulp-useref/node_modules/.bin/strip-bom’
", “module_stdout”: “”, “msg”: “MODULE FAILURE
See stdout/stderr for the exact error”, “rc”: 1}
This is the error I am getting when ansible tries to do anything to a symlink. That directory is the following:
ls -as1l /opt/minemeld/www/webui/node_modules/gulp-useref/node_modules/.bin/
total 8
4 drwxrwxr-x 2 minemeld minemeld 4096 Jun 21 20:13 .
4 drwxrwxr-x 19 minemeld minemeld 4096 Jun 21 20:13 …
0 lrwxrwxrwx 1 root root 20 Jun 21 20:13 mkdirp → …/mkdirp/bin/cmd.js
0 lrwxrwxrwx 1 minemeld minemeld 19 Jun 21 20:13 strip-bom → …/strip-bom/cli.js
I have modified the playbook to change follow=no, to no improvement. I am running the playbook as root for testing, and there are no strange mounts like NFS or CIFS, it’s just the native filesystem.
This is an ubuntu 22.04 server, and the python/ansible environment looks like this:
ansible-playbook --version
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 2.7.18 (default, Mar 12 2022, 06:24:29) [GCC 11.2.0]. This feature will be
removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
/usr/local/lib/python2.7/dist-packages/ansible/parsing/vault/init.py:44: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
from cryptography.exceptions import InvalidSignature
ansible-playbook [core 2.11.12]
config file = None
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible-playbook
python version = 2.7.18 (default, Mar 12 2022, 06:24:29) [GCC 11.2.0]
jinja version = 2.11.3
libyaml = True
Any help or information is appreciated; I think there is a solution to getting the app running using docker, but I’m still curious as to why this step in ansible (or any step around copying/modifying symlinks) is failing.