やりたいこと
Ansibleでtarファイルを展開するときに、ディレクトリを指定する方法です。
前提条件
ゲストOSがLinuxの場合、すなわちGNU Tarを使うことを想定しています。
概要
以下の2通りがあります。
--transform
オプションを使う方法--strip-components
オプションを使う方法
後者の方が良さそうです。
手順
--transform
オプションを使う方法
tar --transform=s/^apache-tomcat-8.5.24/tomcat/ -xvf apache-tomcat-8.5.24.tar.gz
Ansibleの場合は以下のようになります。
unarchive:
src: apache-tomcat-8.5.24.tar.gz
dest: /opt/tomcat/
extra_opts: "--transform=s/^apache-tomcat-8.5.24/tomcat/"
--strip-components
オプションを使う方法
unarchive:
src: apache-tomcat-8.5.24.tar.gz
dest: /opt/tomcat/
extra_opts: [--strip-components=1]
こちらの場合、あらかじめディレクトリを作る必要はありますが、 extra_optsにディレクトリを含めなくていいというメリットがあります。