はじめに
今回は、Ansibleを入れてみたけどどうやって使ったらいいのかわからない人向けの記事です。
そのため、Ansibleのインストールや必要に応じて各サーバへの鍵の設置は完了している状態とします。
サーバはコントロールノードとターゲットノードの2つを準備して行います。
ターゲットノードのIPは「192.168.210.238」としています。
ターゲットサーバにローカルのファイルをコピーする
■ディレクトリ構造
|- master.yml
|- config.yml
|- test.txt
└- roles
└- setup_file
└- tasks
└- main.yml
各ファイルの説明
master.yml:
「どこでどのタスクを実行するか」を定義しています。
config.yml:
今回はターゲットノードのIPを記載してます。
test.txt:
コピー対象のファイルです。
main.yml:
ローカルのファイルをターゲットノードにコピーする処理を記載してます。
各タスクは「roles/タスク名/tasks」の中に追加していく感じです。
今回の各ファイルは以下のような内容になっています。
●master.yml
※諸事情により中括弧が全角になってますが、実際は半角で記載しています。
- hosts: target_sv
remote_user: test_user
vars:
dir_date: "{{ lookup('pipe', 'date +%Y%m%d') }}"
roles:
- setup_file
●config.yml
[target_sv]
192.168.210.238
●main.yml
※諸事情により中括弧が全角になってますが、実際は半角で記載しています。
---
- name: copy file
copy: src=test.txt dest=/home/test_user/target/{{ dir_date }}/ owner=test_user group=test_user mode=0644
今回の場合、「/home/test_user/target/[実行日の日付]/」配下にtest.txtがコピーされる想定です。
では実際にコントロールノードから実行してみましょう。
実行コマンド:
ansible-playbook -i config.yml master.yml
出力:
~~~~~~~~省略~~~~~~~~
TASK [setup_file : copy file] ************************************************************************************
changed: [192.168.210.238]
PLAY RECAP **********************************************************************************************************
192.168.210.238 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
実際にターゲットノードにファイルが設定されているか確認してみます。
ls -l /home/test_user/target/20240410/test.txt
-rw-r--r-- 1 test_user test_user 17 4月 10 12:17 /home/test_user/target/20240410/test.txt
おわりに
今回はAnsibleを使ってテストファイルをターゲットノードにアップロードしてみました。
roles配下に別のタスクを作成し、mastar.ymlを編集することで一度に実行するタスクを増やすこともできますのでやってみてください。
ここまで読んでいただきありがとうございます。