2014-10-12 3 views
2

Я работаю над созданием загрузочной книги Ansible, и я использую Vagrant в качестве тестовой платформы, прежде чем применять игру к удаленному серверу.Ansible Synchronize не удается создать каталог с правами root

У меня возникли проблемы с синхронизацией работы. У меня есть некоторые файлы, которые мне нужно переместить на сервер как часть развертывания.

Вот моя книжка. Я поставил shell: whoami там, чтобы команды выполнялись с правами root.

--- 
- hosts: all 
    sudo: yes 
    tasks: 
    - name: who am I 
     shell: whoami 
    - name: Sync up www folder 
     synchronize: src=www dest=/var 

Когда я запускаю это я получаю это:

failed: [default] => {"cmd": "rsync --delay-updates -FF --compress --archive --rsh 'ssh -i /Users/dan/.vagrant.d/insecure_private_key -o StrictHostKeyChecking=no -o Port=2222' --out-format='<<CHANGED>>%i %n%L' www [email protected]:/var", "failed": true, "rc": 23} 
msg: rsync: recv_generator: mkdir "/var/www" failed: Permission denied (13) 
*** Skipping any contents from this failed directory *** 
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1236) [sender=3.1.1] 


FATAL: all hosts have already failed -- aborting 

Если я поставлять sudo: yes не все команды будут работать с правами администратора, в том числе Синхронизировать?

ответ

5

Ansible Synchronize module page имеет некоторые большие волосатые предупреждения:

Удаленный пользователь на пути Dest всегда будет remote_user, не sudo_user.

Там есть предложение, чтобы обернуть rsync с sudo, как это:

# Synchronize using an alternate rsync command 
synchronize: src=some/relative/path dest=/some/absolute/path rsync_path="sudo rsync" 

Там также предложение использовать многословие для отладки, что происходит на самом деле. В этом случае это означает добавление -vvv или даже -vvvv к исполнению вашей командной строки.

Наконец, это прекрасное время для использования надлежащих разрешений, особенно для несистемных файлов, таких как www-каталог. Это решит вашу проблему в процессе.

# don't use recurse here unless you are confident how it works with directories. 
- file: dest=/var/www state=directory owner=www-data group=www-data mode=0755 
- synchronize: src=www dest=/var 
+0

Люблю предложение о надлежащих разрешениях. Поэтому я попробовал, но я получаю 'msg: unsupported параметр для module: user'. – Daniel

+0

Изменен 'user'' 'owner', и он сработал. – Daniel

+0

@ daniel отредактировал ответ, чтобы исправить это. рад, что сработало! – tedder42

 Смежные вопросы

  • Нет связанных вопросов^_^