てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] git config に相当する git_config モジュールを試す

はじめに

git の設定を行う git config コマンドに相当する git_config モジュールがあります。

というより、最近存在を知りました。簡単な例ですが、まとめます。

  • 動作環境
    • ansible 2.9.14

Playbook

git config --global user.email sakana@example.com
git config --global user.name sakana

に相当する Playbook です。

---
- hosts: sv
  gather_facts: false

  tasks:
    - name: git config
      git_config:
        scope: global
        name: "{{ item.name }}"
        value: "{{ item.value }}"
      loop:
        - name: user.name
          value: sakana
        - name: user.email
          value: sakana@example.com

事前確認

~/.gitconfig には何も設定がない状態からはじめます。

[admin@centos7 ~]$ cat ~/.gitconfig
cat: /home/admin/.gitconfig: No such file or directory
[admin@centos7 ~]$ git config -l
[admin@centos7 ~]$

Playbook 実行

Playbook を実行します。

$ ansible-playbook -i inventory.ini git.yml
PLAY [sv] ***************************************************************************************

TASK [git config] *******************************************************************************
changed: [sv01] => (item={'name': 'user.name', 'value': 'sakana'})
changed: [sv01] => (item={'name': 'user.email', 'value': 'sakana@example.com'})

PLAY RECAP **************************************************************************************
sv01     : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

事後確認

設定されたことを確認します。

[admin@centos7 ~]$ cat ~/.gitconfig
[user]
        name = sakana
        email = sakana@example.com
[admin@centos7 ~]$ git config -l
user.name=sakana
user.email=sakana@example.com
[admin@centos7 ~]$ 

おわりに

もう一度実行したら ok になってくれました。

TASK [git config] *********************************************************************
ok: [netbox01] => (item={'name': 'user.name', 'value': 'sakana'})
ok: [netbox01] => (item={'name': 'user.email', 'value': 'sakana@example.com'})

command モジュールでやってしまっても簡単に実現できるレベルですが、はやり専用モジュールがあるのは便利ですね。