СБОЙ МОДУЛЯ при использовании 'становиться' в ansible - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу запустить определенную задачу Ansible от имени другого пользователя (webadmin), чем тот, кто подключается к удаленной машине (root).Поэтому я использую модуль «стать», чтобы изменить пользователя в моей задаче:

---
- name: Git clone
  git:
    repo: '{{ repository }}'
    dest: '{{ workcopypath }}/{{ project_group }}'
  become: yes
  become_user: '{{ myuser }}'

Однако при запуске моей книги воспроизведения что-то не так:

Using module file /usr/lib/python2.7/site-packages/ansible/modules/source_control/git.py
<10.122.2.20> cmd|/bin/sh -c '( umask 77 && mkdir -p "` echo /var/tmp/ansible-tmp-1542694736.75-69768062845781 `" && echo ansible-tmp-1542694736.75-69768062845781="` echo /var/tmp/ansible-tmp-1542694736.75-69768062845781 `" ) && sleep 0'|False|None
<10.122.2.20> put_file|/root/.ansible/tmp/ansible-local-13654yyClbh/tmpTL422C|/var/tmp/ansible-tmp-1542694736.75-69768062845781/git.py
<10.122.2.20> cmd|/bin/sh -c 'setfacl -m u:webadmin:r-x /var/tmp/ansible-tmp-1542694736.75-69768062845781/ /var/tmp/ansible-tmp-1542694736.75-69768062845781/git.py && sleep 0'|False|None
<10.122.2.20> cmd|/bin/sh -c 'sudo -H -S -n -u webadmin /bin/sh -c '"'"'echo BECOME-SUCCESS-ozfqbfexlaybkeimxrmuyppdrzmrhxxu; /usr/bin/python /var/tmp/ansible-tmp-1542694736.75-69768062845781/git.py'"'"' && sleep 0'|True|None
<10.122.2.20> cmd|/bin/sh -c 'rm -f -r /var/tmp/ansible-tmp-1542694736.75-69768062845781/ > /dev/null 2>&1 && sleep 0'|False|Non

fatal: [10.122.2.20]: FAILED! => {
    "changed": false, 
    "module_stderr": "", 
    "module_stdout": "ERROR: invalid timeout value of BECOME-SUCCESS-ozfqbfexlaybkeimxrmuyppdrzmrhxxu\n/usr/bin/python: can't open file '/var/tmp/ansible-tmp-1542694736.75-69768062845781/git.py\"' && sleep 0'': [Errno 2] No such file or directory", 
    "msg": "MODULE FAILURE", 
    "rc": 512
}
Я установил свободный секрет на удаленной машине при использовании git clone / pull / push ... под пользователем webadmin.Я не знаю, как решить эту проблему, кто-нибудь может мне помочь?Спасибо.

1 Ответ

0 голосов
/ 20 ноября 2018

Вам необходимо отредактировать файл /etc/sudoers в удаленной системе, чтобы появилась следующая строка:

ANSIBLE_SSH_USER ALL=(ALL) NOPASSWD:ALL

Вы можете проверить его с помощью:

your_user@ansible-server:~$ ssh ANSIBLE_SSH_USER@remote_system "sudo -H -S -n -u webadmin /bin/sh -c /bin/uname"

Этодолжен вернуть Linux или что-то еще в вашей удаленной системе.Если есть что-то с sudo: a password is required, то у вас /etc/sudoers все еще не в порядке.Если это работает, попробуйте это с вашим скриптом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...