【モジュールの使い方】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/
管理対象側のファイルの解凍
- 次のURLからnginxパッケージを
/tmp
にダウンロードする
http://nginx.org/download/nginx-1.20.2.tar.gz - /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: |
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