Я ищу способ заставить ansible
читать файл из определенного места независимо от пользователя (т.е. я хотел бы сделать скрипты доступными для любого пользователя).
К сожалению, ansible
похоже любит жестко закодированные пути: /home/user/foo/bar.yml
работает; ~/foo/bar.yml
не работает.
Я пытался использовать эти варианты (ни один из них не работает):
- import_playbook: ~/Documents/foo/bar.yml
- import_playbook: "{{ lookup('env','USER') }}/Documents/foo/bar.yml"
- import_playbook: "/home/{{ lookup('env','USER') }}/Documents/foo/bar.yml"
Как мне заставить ansible
читать из заданного каталога независимо от пользователя? Я бы хотел, чтобы эти сценарии могли исполняться для всех.
Спасибо.
EDIT: В идеале я хотел бы, чтобы скрипт также выполнялся текущим пользователем: например. become_user: current
(не знаю, можно ли использовать последнюю команду).
У меня такое ощущение, что в вашем описании отсутствует какой-то контекст. Выполняются ли плейбуки локально или удаленно. Вызывает ли playbook пользователя на удаленной стороне? И т. д. Я решил это требование с помощью сценария под
/etc/profile.d
иACCOUNT=$(who am i | cut -d " " -f 1)
. Командаansible-playbook --user=${ACCOUNT} ...
, а также переменная в playbooks{{ ansible_user }}
. Поэтому я могу использовать такие конструкции, как/home/{{ ansible_user }}/directory
или/home/${ACCOUNT}/directory
.Простите за поздний ответ. Скрипт предназначен для запуска любым желающим, независимо от имени пользователя. В основном я развертываю его локально, на своей машине (не SSH или что-то в этом роде).