unarchive モジュールについて
unarchive モジュールを使用することで次のような操作を実施できます。
- Ansible マシン側ローカルにある圧縮ファイルを管理対象機器側へ転送した上で管理対象機器側で解凍する
- 管理対象機器側に存在する圧縮ファイルを解凍する
なお、管理対象機器側に tar がインストールされている必要があります。
主なパラメータ
パラメータ | 必須 | 選択肢/デフォルト | 説明 |
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
使用例:管理対象側のファイルの解凍
- 次の URL から bind パッケージを /tmp にダウンロードする •https://downloads.isc.org/isc/bind9/9.16.2/bind-9.16.2.tar.xz
- /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
―――――――――――――