Ansibleでローカルにあるtar.gzファイルをサーバー(AWS: EC2)に転送した後、展開(解凍)する方法について記載します。
playbookは下記のように記載します。
- hosts: group1
tasks:
- name: tar.gzファイルをローカルからサーバーへ転送した後、展開する
unarchive:
src=/Users/user/ansible_work/test.tar.gz
dest=/home/centos/work
hosts
にはインベントリファイルに設定した任意のgroup名を指定しています。
インベントリファイルにはAWSへの接続先情報などを記載します。
具体的な書き方についてはこちらをご参照ください。
unarchive
はローカルにあるtar.gzファイルをサーバーに転送した後、展開するモジュールです。
src
にはローカル端末に配置してあるtar.gzファイルまでのパスを指定します。
dest
には接続先サーバーでtar.gzを配置、展開するディレクトリパスを指定します。
※インベントリファイルで指定した接続ユーザーの権限が、適切に対象ディレクトリへ付与されていないと処理は失敗します。
実行例
まずローカル端末(Mac)にtest.tar.gzファイルを用意します。
(base) mbp:ansible_work user$ pwd
/Users/user/ansible_work
(base) mbp:ansible_work user$ ls -l test
total 0
-rw-r--r-- 1 user staff 0 1 30 12:20 test1.txt
-rw-r--r-- 1 user staff 0 1 30 12:20 test2.txt
-rw-r--r-- 1 user staff 0 1 30 12:20 test3.txt
(base) mbp:ansible_work user$
(base) mbp:ansible_work user$ tar -zcvf test.tar.gz test
a test
a test/test1.txt
a test/test2.txt
a test/test3.txt
(base) mbp:ansible_work user$ ls -l test.tar.gz
-rw-r--r-- 1 user staff 167 1 30 13:30 test.tar.gz
冒頭でご紹介したplaybook.yml
をansible-playbook
コマンドで実行します。
すると次のような結果となります。
(base) mbp:ansible_work user$ ansible-playbook -i hosts playbook.yml
PLAY [group1] *****************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************
ok: [55.66.123.178]
TASK [tar.gzファイルをローカルからサーバーへ転送した後、展開する] *************************************************************************************************************************
changed: [55.66.123.178]
PLAY RECAP ********************************************************************************************************************************************************************************
55.66.123.178 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
EC2サーバー(55.66.123.178)へ接続して/home/centos/work
ディレクトリにtest.tar.gzが転送、展開されているかを確認します。
[root@ip-55.66.123.178 work]# pwd
/home/centos/work
[root@ip-55.66.123.178 work]# ls -lR
.:
合計 0
drwxr-xr-x. 2 centos centos 57 1月 30 12:20 test
./test:
合計 0
-rw-r--r--. 1 centos centos 0 1月 30 12:20 test1.txt
-rw-r--r--. 1 centos centos 0 1月 30 12:20 test2.txt
-rw-r--r--. 1 centos centos 0 1月 30 12:20 test3.txt
想定通り/home/centos/work
にtest.tar.gz
が展開された状態で配置されていることが確認できました。
Udemy動画