1つのSFTPコマンドで2台のコンピュータにファイルを転送したいと思います。可能ですか?
答え1
習慣。 SFTP コマンドは単一の接続で発生します。
ターゲットコンピュータのリストを取得し、そのコンピュータからファイルをコピーし、コマンドを実行し、状態と成功を継続的に確認する簡単なプログラムが必要なようです。
そのようなツールがたくさんあります!私が主に使うのはアンシプール。
デフォルトでは、両方のコンピュータグループに名前を付けるファイルが作成されます。私たちはそれを次のように呼びますinventory.ini
。
[karthiksmachines]
machine1
machine2
(もちろん、machine1
コンピュータmachine2
のホスト名またはIPアドレスに置き換えてください)
その後、次のコマンドを実行して動作しているかどうかをテストできます。
ansible -i inventory.ini karthiksmachines -m ping
machine1 | SUCCESS =>…
のような素晴らしい出力を得る必要がありますmachine2
。 (そうしないと、SSHアクセスキーが正しく設定されていない可能性があります。)
うまくいけばいいですね!今書いてみましょうスクリプトつまり、各コンピュータで実行される一連の作業です。このファイルをと呼びましょうplaybook.yaml
。
- name: Maintain the machines of Karthik
hosts: karthiksmachines
tasks:
- name: Copy file over
ansible.builtin.copy:
src: /path/to/your/local/file.ext
dest: /path/where/the/file/should/end/file.ext
推測できるように、リストにさらに多くのタスクを追加できますtasks:
。通常、これらのタスクには、セキュリティ更新プログラムのインストール、ログファイルのダウンロード、またはサーバー上のサービス設定が含まれます。どちら!
次にプレイブックを起動します。
ansible-playbook -i inventory.ini playbook.yaml
だからそれはすべてです。管理したいマシンを1つのファイルに入れ、そのマシンで実行するコマンドを別のファイルに入れたら、コマンドを実行する必要があります。 :)
私はこれが非常に簡単だと思うので、すべてのサーバーで実行されるすべてのタスク、特にソフトウェアのインストール、サービスの構成、ユーザーの作成などのタスクについてそうしようとします。
これには、他のサーバーを追加する必要がある場合は、マニフェストに追加してプレイブックを実行できるという大きな利点があります。再現可能なサーバー!