chriswayg.etckeeper

ansible-etckeeper

ビルドステータス

Etckeeperのドキュメント

  • Debian 10 と Ubuntu 18.04 で Vagrantを使ってテスト済み

Ansibleの役割で、etckeeperをgitとともにインストール、設定、使用します。

要件

  • Ansible 2.4以上で開発・テスト済み
  • Debian/Ubuntuシステム

役割の変数

  • install - boolean(デフォルトはfalse

    初回のプレイではtrueに設定する必要があります。

  • commit - boolean(デフォルトはtrue

    「etckeeperに変更を記録する」ハンドラーへの通知を有効にし、プレイに対するetckeeperコミットを生成します。 これをfalseに設定するのではなく、etckeeperロールを完全に省略してください (初回のプレイでない限り)。

以下の変数(defaults/main.ymlにデフォルトが定義されています)は、commitがtrueのときにetckeeperが使用するコミットメッセージを制御します。

  • etckeeper_message - string (デフォルトは「{{ ansible_user_id }}として実行されるAnsibleプレイからの変更」)

    このメッセージは、プレイの終了時に行われるコミットに使用されます。

etckeeperが使用するバージョン管理システムを制御するための設定変数があります(defaults/main.ymlにデフォルトがあります)。

  • etckeeper_vcs - string(デフォルトは「git」、または「hg」、「bzr」、「darcs」)

    これにより、etckeeperが使用するバージョン管理システムが決まります。 etckeeperパッケージのデフォルトはGitであるため、このAnsibleロールはGitでのみテストされています。 すでにetckeeperがインストールされている場合、この変数は影響を与えません。

gitによる特定の追加ファイルを無視するための設定変数があります(defaults/main.ymlに例があります)。

  • etckeeper_gitignore - string

依存関係

なし。

例のプレイブック

このロール(および他の何も)をプレイブックの最初のプレイにする必要があります。 理想的には、サーバーで最初に実行するプレイとして実行するべきです。 初回の実行時に/etc/ディレクトリのほぼ全ての内容を含む初期コミットを生成します。

他のプレイにetckeeperロールを追加すると、プレイの終了時にetckeeperコミットが生成されます(未保存の変更があれば、開始時にも生成される可能性があります)。 正確な未保存変更の検出をするために、etckeeperロールは最初であるべきです。 etckeeperロールを使用すると、etckeeperコミットはハンドラー内で実行されます。 (すべてのタスクの後に1回)ですが、他のハンドラーの前に実行される可能性があります。

タスク内でetckeeperコミットを実行すると、プレイ内で複数のコミットを許可しますが、すべてのロールがプレイ内のプレイブックタスクの前に実行されるため、 各ロールを1つずつ持つ多数の小さなプレイにプレイブックを分割することが、詳細なコミットを達成するためには必要です。

次に、etckeeperロールを使用してインストールとコミットを行い、シェルアクションを使用してコミットを行う例のプレイブックを示します。

---
# これはプレイブックの最初のプレイであるべきです
- hosts: all
  vars:
  - etckeeper_vcs: git
  roles:
  - { role: etckeeper, install: true }
  # このプレイには他のロールを追加しないでください

# これは2番目のプレイです
- hosts: all
  roles:
  - { role: etckeeper, etckeeper_message: 'プレイブックの2番目のプレイ' }
  # ここに追加のロールを配置

# これは3番目のプレイです
- hosts: all
  tasks:
  - name: 何かをインストールおよび/または構成する
    command: cp /dev/null /etc/null
    register: result
  - name: 前のタスクの変更をetckeeperコミットに記録する
    shell: if etckeeper unclean; then etckeeper commit '3番目のプレイ pt. 1'; fi
    when: result|changed
  - name: /etc内の何も変更しない操作を行う
    action: true
  - name: /etc内の何かを変更する可能性のある別の操作を行う
    action: cp /dev/null /etc/zero
    notify: このプレイの他の変更をetckeeperコミットに記録する
 handlers:
 - name: このプレイの他の変更をetckeeperコミットに記録する
   shell: if etckeeper unclean; then etckeeper commit '3番目のプレイ pt. 2'; fi

私が現在使用しているプレイブックの最初の部分

## etckeeperをインストールするためのプレイブック
- name: etc gitリポジトリを初期化するためにetckeeperを単独でインストールする。
  hosts: servers
  user: root
  vars_files:
    - production/vars/site.yml
  roles:
  - { role: expansible.etckeeper, install: true }
## このプレイには他のロールを追加しないでください!

## メインプレイブック
- name: サーバーを構成する。
  hosts: servers
  user: root
  vars_files:
    - production/vars/.site.yml

  roles:
    - { role: ansible-etckeeper, etckeeper_message: 'mailcowプレイブックの開始時のAnsibleの変更' }
    - willshersystems.sshd
    - { role: ansible-etckeeper, etckeeper_message: 'willshersystems.sshdによるAnsibleの変更' }
    - ansible-fail2ban
    - { role: ansible-etckeeper, etckeeper_message: 'ansible-fail2banによるAnsibleの変更' }

ライセンス

MIT(Expat) - 詳細はLICENSEファイルを参照してください

著者情報

  • 元の著者: alex.dupuy at mac.com
  • このフォークはChristian Wagnerによって修正されました。
プロジェクトについて

Ansible role to install, configure, and use etckeeper

インストール
ansible-galaxy install chriswayg.etckeeper
ライセンス
mit
ダウンロード
449
所有者