права пользователя на удаленной машине с использованием ansible

Я пытаюсь запустить следующую задачу, используя ansible 2.1 на удаленном сервере (для запуска пакета debian требуются привилегии sudo). Однако, когда я запускаю команду, кажется, что она не работает с ошибкой, скопированной ниже. Будем очень признательны за любые мысли о том, как устранить эту неполадку.

задача

---
- name: transferring artifact to server 
  local_action: shell ls -d /tmp/test/target/*.jar
  register: test_build
- copy: src={{ test_build.stdout }}  dest=/home/ubuntu/ owner=ubuntu group=ubuntu mode=644 backup=yes
  become: true
  become_user: ubuntu 
  become_method: sudo

ошибка

fatal: [testserver]: FAILED! => {"failed": true, "msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user. For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"}

person ali haider    schedule 09.10.2016    source источник


Ответы (2)


«Ubuntu» - это непривилегированная учетная запись пользователя. Вы не вызываете команду копирования как sudo, вы вызываете «su» как sudo в непривилегированной учетной записи и запускаете команду копирования как «ubuntu» (непривилегированный). Ansible делает именно то, что вы ему говорите.

Вы не должны использовать стать из непривилегированной учетной записи, чтобы войти в непривилегированную учетную запись. Это уязвимость системы безопасности в Ansible. Почему бы не войти в систему как ubuntu, а не как пользователь, которого вы используете для начала?

person Avalon    schedule 10.10.2016
comment
потому что я подключился к удаленному серверу по ssh, используя свою пару ключей, а не пользователя ubuntu. Пользовательский ubuntu настраивается только на удаленном сервере. - person ali haider; 10.10.2016
comment
По умолчанию пользователь ubuntu имеет root-доступ, но вам все равно нужно вызывать sudo, чтобы использовать его, что, как я объяснил, вы не делаете. - person Avalon; 10.10.2016

Я устанавливаю флаг allow_world_readable_tmpfiles в ansible.cfg на True (по умолчанию False в absible 2.1). Это позволило ansible рассматривать это как предупреждение, а не как ошибку, позволяющую мне продолжить. Другие предлагаемые варианты (которые я не пробовал включать с помощью конвейерной обработки или установки инструментов acl).

person ali haider    schedule 09.10.2016