git pull с помощью ansible

#git #ansible

#git #ansible

Вопрос:

с этим сборником я не получаю ошибок, и он работает на ubuntu против userhome slash git. Автоматический вывод немного громкий, но я не понимаю, почему он неправильно извлекает последние изменения с удаленного сервера

 - hosts: local
  vars:
     ansible_python_interpreter: "/usr/bin/env python3"

   tasks:
   - name: find git directories
     find:
       paths: "{{ ansible_env.HOME }}/git"
       file_type: directory
     register: found_directories

   - name: update repos
     git:
       repo: "{{ item.path }}/.git"
       dest: "{{ item.path }}"
       version: master
       update: yes
     with_items: "{{ found_directories.files }}"
 

есть идеи, почему модуль git не извлекает последние изменения из github?

Ответ №1:

для тех, кто интересуется тем, как обновить каталоги homefolder / git … repo с помощью git pull. Единственное решение, которое я нашел, было с помощью команды оболочки.

 - hosts: local
  vars:
    ansible_python_interpreter: "/usr/bin/env python3"

  tasks:
   - name: find git directories
     find:
       paths: "{{ ansible_env.HOME }}/git"
       file_type: directory
     register: found_directories

   - name: pull latest changes
     shell: git pull 
     args:
       chdir: "{{ item.path }}"
       executable: /bin/bash
     with_items: "{{ found_directories.files }}"
 

Ответ №2:

Строка repo: "{{ item.path }}/.git" во второй задаче означает, что репозиторий git хранится в .git репозитории (если {{ item.path }} равно /home/ninja/git , это означает, что проект git хранится в /home/ninja/git/.git и что вы найдете .git каталог в /home/ninja/git/.git/.git ).

Я думаю, что вы только что допустили ошибку, указав .git суффикс, и что ваш проект на самом деле /home/ninja/git включен. Если это правильно, просто удалите .git часть в repo параметре.

Комментарии:

1. кажется, вы в некотором смысле правы. Тем не менее, он не извлекает ничего нового

2. Когда вы заходите в каталог вручную и выполняете команду git status , видите ли вы какие-либо измененные файлы в каталоге? Поскольку поведение модуля ansible git по умолчанию заключается в том, чтобы не извлекать, существуют локальные измененные файлы. Кроме того, если вы выполняете git pull вручную, работает ли pull? Если нет, это может быть проблема с ssh / сетью / разрешениями.

3. очень странно, теперь даже git pull командной строки не работает. Я почти уверен, что это сработало для многих репозиториев… что я хотел сценарий для этого

4. Тогда это не проблема с Ansible, а проблема с правами доступа к сети / ssh-ключу / учетной записи. Сначала вы должны это исправить, убедиться, что он работает вручную, а затем снова использовать только свой Ansible.

5. на самом деле задание ansible выполняется как есть, но после git pull ничего не делает. Локкам нравится, когда они просто получают файлы и не выполняют git pull … странно