tschifftner.duplicity

Ansibleロール: Duplicityのインストールと設定

ビルドステータス

ソースからDuplicityをインストールし、Debian/UbuntuのLinuxサーバーでバックアップタスクを管理します。

必要条件

Ansible 2.0以上

依存関係

なし。

インストール

$ ansible-galaxy install tschifftner.duplicity

例のプレイブック

利用可能な変数は以下に示し、デフォルト値を含みます(defaults/main.ymlを参照):

    - hosts: webservers
      vars:
        # Duplicity
        duplicity_known_hosts:
          - host: 'example.org'
            key: 'example.org ssh-rsa AAAAB3NzaC...+PwAK+MPw=='
            state: present
    
        duplicity_config_vars:
          FTP_SERVER: 'sftp://[email protected]/my/folder/'
          FTP_PASSWORD: '*******'
          DEFAULT_PARAMS: '--verbosity info --exclude-device-files --exclude-other-filesystems --exclude-if-present .duplicity-ignore'
    
        duplicity_cronjobs:
          - name: '2ヶ月以上古いファイルのクリーンアップ'
            user: root
            group: root
            source: /etc/duplicity/duplicity.conf
            hour: 4
            minute: 10
            command: >
              duplicity remove-older-than 2M --force --extra-clean $FTP_SERVER;
              duplicity cleanup --force $FTP_SERVER
    
          - name: '/var/wwwのバックアップ'
            user: root
            group: root
            hour: 5
            minute: 21
            source: /etc/duplicity/duplicity.conf
            command: duplicity $DEFAULT_PARAMS --include /var/www --full-if-older-than 1M --exclude '**' / $FTP_SERVER

      roles:
             - { role: tschifftner.duplicity }

すべての変数を外部ファイルに保存することをお勧めします。

    - hosts: webservers
      vars_files:
        - duplicity-settings.yml
    
      roles:
         - { role: tschifftner.duplicity }

ヒント

  • サーバーのssh-keyを取得するには、ssh-keyscan -t rsa example.orgを使用します(これはduplicity_known_hosts変数で使用されます)。
  • cronジョブは複数行で記述することも可能ですが、アイデポテンスに失敗する原因になります。例えば:
 command: >
   duplicity remove-older-than 2M --force --extra-clean $FTP_SERVER;
   duplicity cleanup --force $FTP_SERVER

これは常に変更された結果になります。

Duplicityの変数

duplicity_config_vars:
  SERVER: 'ftp://[email protected]/backups/'
  PASSPHRASE: 'あなたの秘密のパスフレーズ'
  FTP_PASSWORD: '*******'
  PARAMS: '--verbosity info --exclude-device-files --exclude-other-filesystems --exclude-if-present .duplicity-ignore --exclude-filelist /etc/duplicity/exclude.list'
  INCLUDES: '/root /home /var/www /var/backup'

GPG暗号化

GPG暗号化はこのロールではサポートされていません。手動でインストールする必要があります。

GPGキー・ペアを生成

GPGキーを生成するには、以下のスニペットを使用します。

gpg --batch --gen-key <<EOF
%echo GPGキーを生成中
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: Duplicity Backup
Name-Comment: バックアップ暗号化用
Name-Email: duplicity@localhost
Expire-Date: 0
Passphrase: あなたの個人的なユニークなパスフレーズ
%commit
%echo 完了
EOF

公開鍵をエクスポート

gpg --output FB37DF3B.public.asc --armor --export FB37DF3B

オーナートラストをエクスポート

gpg --export-ownertrust > ownertrust.txt

秘密鍵をエクスポート

gpg --output FB37DF3B.private.asc --armor --export-secret-key FB37DF3B

知っているホスト

ホストを既知のホストとしてマークするには

duplicity_known_hosts:
  - host: 'ftp.example.com'
    key: 'ftp.example.com ssh-rsa AAAAB3NzaC1yc2[...]+MPw=='
    state: 'present'

システムがサポートしている場合、ecdsaやed25519キーを使用することも可能です。

ssh-keyscan -t ecdsa ftp.example.com
ssh-keyscan -t ed25519 ftp.example.com

Duptools

Duptoolsはバックアップを管理するためのヘルパースクリプトです。デフォルトでインストールされていますが、duplicity_install_duptools: falseで無効にすることができます。

Duptoolsを実行

コマンドラインにduptoolsと入力するだけで、利用可能なオプションを取得できます:

    duptools - Duplicityバックアップを管理します

    使用法:

    duptools backup
    duptools list
    duptools status
    duptools restore file [time] dest
    duptools remove [time]

    [time]
    a) now
    b) 2002-01-25T07:00:00+02:00
    c) D=日、W=週、M=月、Y=年、h=時間、m=分、s=秒

サポートされているOS

  • Debian 9 (Stretch)
  • Debian 8 (Jessie)
  • Ubuntu 18.04 (Bionic Beaver)
  • Ubuntu 16.04 (Xenial Xerus)

必要なAnsibleのバージョン

Ansible 2.5以上

ライセンス

MITライセンス

著者情報

TODO

  • 再インストールの修正と他のバージョンのインストール、現在はファイル/usr/local/bin/duplicityを書き換えず、pipがduplicityをアンインストールしないようにする。
プロジェクトについて

Installs duplicity from source and handles backup tasks on Debian/Ubuntu linux servers.

インストール
ansible-galaxy install tschifftner.duplicity
ライセンス
mit
ダウンロード
90
所有者
Kubernetes Software Architekt, Magento Certified Developer und Full-Stack Entwickler