Неудачное выполнение сборника пьес из-за отказа в разрешении

#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 . 😉