ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【モジュールの使い方】unarchive

機能

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

  • Ansibleマシン側ローカルにある圧縮ファイルをhostsで指定した
    転送先サーバ上で解凍する。
  • hostsで指定したサーバに存在する圧縮ファイを解凍する

使用例

hostsで指定したサーバ側ファイルの転送・解凍

  • Ansibleがインストールされている端末のローカル環境にある/root/nginx-1.20.2.tar.gz
    hostsで指定したサーバの/rootにて解凍する

playbook.yml

- hosts: all
  become: yes
  tasks:
  - name: template test
    unarchive:
      src: /root/nginx-1.20.2.tar.gz
      dest: /root

追加オプションを使用してアーカイブを解除する。

playbook.yml

- hosts: all
  become: yes
  tasks:
  - name: template test
    unarchive:
      src: /tmp/foo.zip
      dest: /usr/local/bin
      extra_opts:
        - --transform
        - s/^xxx/yyy/

管理対象側のファイルの解凍

  1. 次のURLからnginxパッケージを/tmpにダウンロードする
    http://nginx.org/download/nginx-1.20.2.tar.gz
  2. /tmp/nginx-1.20.2.tar.gzを/rootに解凍する。

playbook.yml

- hosts: all
  become: yes
  tasks:
    - name: download nginx
      get_url:
        url: http://nginx.org/download/nginx-1.20.2.tar.gz
        dest: /tmp
    - name: unarchive nginx
      unarchive:
        src: /tmp/nginx-1.20.2.tar.gz
        dest: /root
        remote_src: yes


主なパラメータ

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


全パラメータ

パラメータ 必須 デフォルト値 選択肢 説明
attributes 結果として得られるファイルやディレクトリが持つべき属性
サポートされているフラグを取得するには、ターゲットシステムのchattrのマニュアルページを参照
この文字列には、lsattrによって表示されるものと同じ順序で属性を含める必要があります。
「=」演算子がデフォルトで、それ以外の場合は「+」または「-」演算子を文字列に含める必要がある
エイリアス:attr
copy yes yes
no
yesの場合:ファイルはローカルコントローラから管理下の(リモート)にコピーされます。
プラグインは管理下のマシンでsrcアーカイブを探します。
このオプションは廃止され「remote_src」が採用されました。
このパラメータは「remote_src」と一緒に使用できません。
creates 指定した絶対パス(ファイルまたはディレクトリ)がすでに存在する場合、このステップは実行されません
decrypt yes yes
no
このプションは、Vaultを使用したソースファイルの自動復号化を制御します
dest 解凍後ファイルの保存先ディレクトリの絶対パス
exclude アーカイブ解除アクションから除外するディレクトリとファイルのエントリをリストアップ
このパラメータは「include」と一緒に使用できません。
extra_opts "" 配列を渡して追加のオプションを指定
スペースで区切られた各コマンドらいのプションは、配列の新しい要素でなければなりません。
例を参照
複数の要素を持つコマンドラインオプションは、配列内で複数行、各要素ごとに1行ずつ使用する必要がある。
group 転送後ファイルの所有グループ
include アーカイブから抽出したいディレクトリやファイルのエントリリス
ここにきさいされたファイルのみが抽出されます。
このパラメータは「excute」と一緒に使用できません。
keep_newer no yes
no
アーカイブのファイルより新しいファイルに置き換えない
list_files no yes
no
True設定:tarballに含まれるファイルリストを返却
mode 転送後のファイル/ディレクトリの権限
例:"0664"、"u=rw,g=r,o=r"
owner 転送後ファイルの所有者
remote_src no yes
no
hostsで指定したサーバに存在する圧縮ファイルを対象
とする場合はyesとする
selevel SELinuxファイルコンテキストのレベル部分
MLS/MCS属性であり、rangeとも呼ばれる
_defaultに設定すると、ポリシーのlevel部分が使用可能な場合はそれが使用される
serole SELinuxファイルコンテキストのレベル部分
_defaultに設定すると、ポリシーのrole部分が使用可能な場合はそれが使用される
settype SELinuxファイルコンテキストのレベル部分
_defaultに設定すると、ポリシーのtype部分が使用可能な場合はそれが使用される
seuser SELinuxファイルコンテキストのレベル部分
デフォルトでは、該当する場合はsystemポリシーを使用します
_defaultに設定すると、ポリシーのuser部分が使用可能な場合はそれが使用される
src 解凍対象の圧縮ファイルの絶対パス
unsafe_writes no yes
no
このオプションを使用すると、アトミック操作が失敗した場合にAnsibleがファイル更新する際、安全ではない方法でフォールバックする事が出来ます。
(但し、Ansibleに安全ではない書き込みを強制的に実行させることはありません)
重要:安全でない書き込みは、競合条件の対象となり、データの破損につながる可能性がある
validate_certs yes yes
no
ファイルのソースとしてhttpsURLを利用している場合のみ適用
自己証明書を使用する個人的に制御されるサイトでは使用されないように設定する必要があります
ver2.2より前ではyesの設定のように機能していました。

アトミック操作 他からの割り込みがない状態にすること

フォールバック 機能や性能を制限して動かすこと


戻り値

Key Type Returned 説明
dest string always 宛先ディレクトリへのパス
Sample:
/opt/software
files list/elements=string list_filesがtrueの場合 アーカイブ内のすべてのファイルのリスト
Sample:["file1","file2"]
gid integer always 宛先ディレクトリを所有するグループの数値ID
Sample:
1000
group string always 宛先ディレクトリを所有するグループの名前
Sample:
librarians
handler string always アーカイブの展開・解凍に使用するアーカイブソフトのハンドラ
Sample:
TgzArchive
mode string always 送信先ディレクトリの8進数のパーミッションを表す文字列
Sample:
0755
owner string always 宛先ディレクトリを所有するユーザの名前
Sample:
paul
size integer always 送信先ディレクトリのサイズをバイト単位で指定
ディレクトリに含まれるファイルやサブディレクトリのサイズは含みません
Sample:
36
src string always ソースアーカイブのパス
srcがリモートWebURLである場合、またはローカルのAnsibleコントローラからのものである場合、これはダウンロードが保存された一時的な場所を返します。
Sample:
/home/paul/test.tar.gz
state string always 作業対象のディレクトリ名
Sample:
directory
uid integer always 作業対象のディレクトリを所有するユーザの数値ID
Sample:
1000


ドキュメント

【Ansible Documentation】Module unarchive

参考サイト

matsublog Ansible:narchiveモジュールについて