#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 … странно