#ansible #ansible-inventory
#ansible #ansible-инвентаризация
Вопрос:
Вот содержимое инвентаря:
[osm]
osm_host ansible_port=22 ansible_host=10.20.20.11 ansible_user=ubuntu ansible_ssh_private_key_file=/path/to/key/key
И вот содержимое playbook:
- hosts: osm
user: ubuntu
become: yes
tasks:
- name: Download the OSM installer
get_url: url=https://osm-download.etsi.org/ftp/osm-8.0-eight/install_osm.sh dest=/tmp/install_osm.sh
- name: Execute the OSM installer
shell: /tmp/install_osm.sh
При запуске ansible-playbook -i inventory play.yaml
я получаю следующую ошибку:
ВОСПРОИЗВЕДЕНИЕ [osm]
ЗАДАЧА [Сбор фактов] ********************************************************* ok: [osm_host]
ЗАДАЧА [Загрузить установщик OSM] ********************************************** ok: [osm_host]
ЗАДАЧА [Выполнить установщик OSM] *********************************************** фатальный: [osm_host]: СБОЙ! => {«изменено»: true, «cmd»: «/tmp/install_osm.sh «, «дельта»: «0:00:00.001919″, » завершение»: «2020-09-04 19:26:46.510381″, » сообщение «: «ненулевой код возврата», «rc»: 126, «начать»: «2020-09-04 19:26:46.508462″, » stderr»: «/bin/sh: 1: /tmp/install_osm.sh : Отказано в разрешении», «stderr_lines»: [«/bin/sh: 1: /tmp/install_osm.sh : Отказано в разрешении»], «стандартный вывод»: «», «стандартные строки»: []}
КРАТКОЕ ИЗЛОЖЕНИЕ ВОСПРОИЗВЕДЕНИЯ ********************************************************************* osm_host : ок = 2 изменено = 0 недоступно = 0
не удалось = 1 пропущено = 0 спасено = 0 проигнорировано = 0
Я попытался использовать true
и yes
для become
предложения, но ничего не изменилось. Чего мне не хватает?
Ответ №1:
Вы должны быть уверены, что у пользователя root есть права на исполняемый файл при новой загрузке OSM. Когда вы используете become: yes без become_user, пользователь по умолчанию является root, поэтому вам нужно быть уверенным, что пользователь root может выполнить ваш скрипт.
Попробуйте get_url вот так:
- hosts: osm
user: ubuntu
become: yes
tasks:
- name: Download the OSM installer
get_url:
url: https://osm-download.etsi.org/ftp/osm-8.0-eight/install_osm.sh
dest: /tmp/install_osm.sh
mode: "0555"
- name: Execute the OSM installer
shell: /tmp/install_osm.sh
Поиграйте с параметром mode модуля get_url.
Комментарии:
1. ДА. Поскольку я новичок в Ansible, я просто забыл, что я должен установить права доступа к файлам для выполнения. Я думал, что это должно быть проблемой в моем файле Ansible. =] Спасибо. Кстати, для скрипта OSM требуется пользователь, отличный от root, поэтому я удалил
become: yes
. 😉