Ansibleでgit pull しようとしたら Local modifications exist in repository (force=no). って出た

Linux
スポンサーリンク

時の対処方法

 

スポンサーリンク

事象

以下のPlaybookを実行したときに、タイトルのエラーが出力された

---
- hosts: "{{ hostname }}"
  gather_facts: no

  vars_prompt:
    - name: username
      prompt: "gitに接続するユーザーを入力してください"
      private: no
    - name: password
      prompt: "パスワードを入力してください"

  tasks:
    - name: git clone
      git:
        version: master
        repo: https://{{ username }}:{{ password }}@github.com/username/hogehoge.git
        dest: "/srv/hogehoge"
        accept_hostkey: yes
      become: true
      ignore_errors: true

git pullをリモートホストで実行する簡単なplaybookだけど、実行したときにエラーが出力された

Local modifications exist in repository (force=no).

 

原因

リモートホスト側のローカルリポジトリにてファイルを更新していたことが原因

ローカルホスト側で以下のコマンドを実行

$ git status --porcelain
M testfile.txt

testfile.txtがローカルリポジトリで変更されていることがわかる

どうやらansibleのgitモジュールはgit status –porcelainを実行して、もしローカル差分があった場合は中断するような処理となっているよう。

解決するにはローカルホストにログインして手動pullするしかない(ハズ)

もしくは

  tasks:
   - name: git pull
     shell: git pull

とかでいけるのかな?(未検証)

 

追記(2022/11/11)

どうやらansibleのgitモジュールの中に

force

というパラメータがあるらしい。

これをyesにするとローカルのリポジトリが変更されていたとしても強制的に上書きできる。

---
- hosts: "{{ hostname }}"
  gather_facts: no

  vars_prompt:
    - name: username
      prompt: "gitに接続するユーザーを入力してください"
      private: no
    - name: password
      prompt: "パスワードを入力してください"

  tasks:
    - name: git clone
      git:
        version: master
        repo: https://{{ username }}:{{ password }}@github.com/username/hogehoge.git
        dest: "/srv/hogehoge"
        accept_hostkey: yes

        force: yes
      become: true
      ignore_errors: true

ローカルでの作業をぶっ壊す可能性があるので取り扱いには注意(1敗)

Youtubeチャンネル作成しました!

主にFPSゲームのプレイ動画を投稿しております
良ければ登録よろしくお願いいたします
Linux
スポンサーリンク
vatchをフォローする
ばちブロ

コメント

タイトルとURLをコピーしました