Невозможно редактировать файл с помощью модуля lineinfile Ansible - PullRequest
1 голос
/ 05 апреля 2020

Я пытаюсь добавить строку export TMOUT=50000 в файл /backup/backup.sh, используя Ansible.

Ниже моя книга воспроизведения:

   - name: Add Timeout Entry if not present
     lineinfile:
       path: "/backup/backup.sh"
       insertbefore: BOF
       state: present
       line: 'export TMOUT=50000'

Получение ошибки ниже для ansible playbook:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 18] Cannot link to a file on another device.: b'/tmp/tmphtvszlfc' -> b'/wd/backup.sh'
fatal: [10.9.16.133]: FAILED! => {"changed": false, "msg": "The destination directory (/wd) is not writable by the current user. Error was: [Errno 13] The file access permissions do not allow the specified action.: b'/wd/.ansible_tmp3yhi8j7bbackup.sh'"}

Ниже приведена информация о диске целевого сервера:

df -k
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4          6291456   3323144   48%    42948     6% /
/dev/hd2          6684672   3028820   55%    54304     8% /usr
/dev/hd9var      15728640    810228   95%    13874     7% /var
/dev/hd3          6422528   1856680   72%     4035     1% /tmp
/proc                   -         -    -         -     -  /proc
/dev/wdlv        55574528  30603740   45%   315925     5% /wd
/dev/dcclv       37748736  10042348   74%   364803    14% /dcc
/dev/userslv      1048576   1039616    1%       59     1% /users
10.9.9.105:/ifs/data/NAS_RMANBKP 418298160992 14912895200   97% 589129885906    94% /backup
10.9.12.25:/ORACLE_1 32212254720 9509599696   71%      706     1% /ORACLE_1

Файл определенно редактируется:

/wd>ls -ltr /wd/backup.sh
-rwxr-xr-x    1 user1  dba             173 Apr 05 17:15 /wd/backup.sh

/wd>ls -lad /wd
drwxr-xr-x    1 root  system             173 Apr 05 17:15 /wd/backup.sh

Пожалуйста, предложите как я могу преодолеть проблему?

1 Ответ

0 голосов
/ 05 апреля 2020

Сообщение об ошибке явное: пользователь не может записать в каталог файла, /wd; вы даже можете видеть, что в вашем ls выводе: drwxr-xr-x 1 root system говорит, что каталог w -пригоден только для root

Исправление очень простое: добавьте become: yes к вашей задаче, чтобы включить повышение привилегий при запуске задачи lineinfile:

  - name: Add Timeout Entry if not present
    become: yes
    lineinfile:
       path: "/backup/backup.sh"
       insertbefore: BOF
       state: present
       line: 'export TMOUT=50000'
...