Ansible:unarchiveモジュールについて(Ansible 2.9.6)

インフラサーバ

unarchive モジュールについて

unarchive モジュールを使用することで次のような操作を実施できます。

  • Ansible マシン側ローカルにある圧縮ファイルを管理対象機器側へ転送した上で管理対象機器側で解凍する
  • 管理対象機器側に存在する圧縮ファイルを解凍する

なお、管理対象機器側に tar がインストールされている必要があります。

◆ 公式ドキュメント

ansible.builtin.unarchive – Unpacks an archive after (optionally) copying it from the local machine. — Ansible Documentation

主なパラメータ

パラメータ必須選択肢/デフォルト説明
src解凍対象の圧縮ファイルの絶対パス
dest解凍後ファイルの保存先ディレクトリの絶対パス
owner解凍後ファイルの所有者
group解凍後ファイルの所有グループ
mode解凍後ファイルの権限
例:“0664”、”u=rw,g=r,o=r”
remote_src・ no ←
・ yes
管理対象機器側に存在する圧縮ファイルを
対象とする場合は yes とする

使用例

作業環境

  • CentOS 8.0
  • Python 3.7.7
  • Ansible 2.9.6

使用例:Ansible マシン側ファイルの転送・解凍

  • Ansible マシン側の /root/bind-9.16.2.tar.xz を管理対象側の /root に解凍する

■ playbook.yml の内容

- hosts: all
  become: yes
  tasks:
    - name: unarchive test
      unarchive:
        src: /root/bind-9.16.2.tar.xz
        dest: /root

■ Ansible 実行後の状態(管理対象側)

# ls -l /root
total 4
drwxrwxr-x 15 root root 4096 Apr  9 09:55 bind-9.16.2

使用例:管理対象側のファイルの解凍

  1. 次の URL から bind パッケージを /tmp にダウンロードする •https://downloads.isc.org/isc/bind9/9.16.2/bind-9.16.2.tar.xz
  2. /tmp/bind-9.16.2.tar.xz を /root に解凍する

■ playbook.yml の内容

- hosts: all
  become: yes
  tasks:
    - name: download bind
      get_url:
        url: https://downloads.isc.org/isc/bind9/9.16.2/bind-9.16.2.tar.xz
        dest: /tmp
    - name: unarchive bind
      unarchive:
        src: /tmp/bind-9.16.2.tar.xz
        dest: /root
        remote_src: yes

■ Ansible 実行後の状態(管理対象側)

# ls -l /tmp
total 4456
-rw-r--r-- 1 root root 4559216 Apr 30 08:01 bind-9.16.2.tar.xz
# ls -l /root
total 4
drwxrwxr-x 15 root root 4096 Apr  9 09:55 bind-9.16.2

―――――――――――――

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