はじめに
Ansible は、インフラストラクチャやアプリケーションの管理を簡素化する強力なオープンソースの自動化ツールです。このチュートリアルでは、システム管理や DevOps ワークフローで一般的なタスクである、ローカルマシンからリモートホストにファイルをコピーするために Ansible をどのように使用するかを探ります。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Ansible は、インフラストラクチャやアプリケーションの管理を簡素化する強力なオープンソースの自動化ツールです。このチュートリアルでは、システム管理や DevOps ワークフローで一般的なタスクである、ローカルマシンからリモートホストにファイルをコピーするために Ansible をどのように使用するかを探ります。
Ansible は、リモートシステムの管理と構成のプロセスを簡素化する強力なオープンソースの自動化ツールです。使いやすく、エージェントレスで、高いスケーラビリティを備えているため、IT プロフェッショナルや DevOps チームにとって優れた選択肢となっています。
Ansible は、ソフトウェアのデプロイメント、構成管理、インフラストラクチャのプロビジョニングなど、さまざまなタスクを自動化できる構成管理およびオーケストレーションツールです。システムの望ましい状態を定義するために、YAML と呼ばれるシンプルで人間が読みやすい言語を使用し、その後、それらのシステムを望ましい状態にするために必要なアクションを実行します。
Ansible は、以下を含む幅広いシナリオで使用できます。
Ansible を使い始めるには、コントロールノード(Ansible コマンドを実行するマシン)と 1 つ以上のリモートホスト(管理したいシステム)が必要です。コントロールノードでは、Ansible をインストールし、管理したいリモートホストを定義するインベントリファイルを設定する必要があります。
以下は、Ubuntu 22.04 システムに Ansible をインストールする方法の例です。
sudo apt update
sudo apt install -y ansible
Ansible をインストールすると、インフラストラクチャとアプリケーションの管理タスクを自動化し始めることができます。
インフラストラクチャ自動化における最も一般的なタスクの 1 つは、コントロールノード(Ansible を実行しているマシン)からリモートホストにファイルをコピーすることです。Ansible は、copy
モジュールを使用してこのタスクを簡単かつ効率的に実行する方法を提供しています。
copy
モジュールAnsible の copy
モジュールは、コントロールノードからリモートホストにファイルをコピーするために使用されます。以下のようなさまざまなオプションをサポートしています。
src
: コントロールノード上のソースファイルまたはディレクトリ。dest
: リモートホスト上の宛先パス。owner
: リモートホスト上のファイルの所有者。group
: リモートホスト上のファイルのグループ。mode
: リモートホスト上のファイルのパーミッション。コントロールノードからリモートホストに単一のファイルをコピーするには、以下の Ansible プレイブックを使用できます。
- hosts: all
tasks:
- name: Copy a file
copy:
src: /path/to/local/file.txt
dest: /path/to/remote/file.txt
owner: myuser
group: mygroup
mode: "0644"
この例では、copy
モジュールを使用して、ローカルパス /path/to/local/file.txt
からリモートパス /path/to/remote/file.txt
に file.txt
ファイルをコピーします。ファイルは myuser
ユーザーと mygroup
グループによって所有され、0644
のパーミッション(所有者には読み書き権限、グループとその他のユーザーには読み取り専用権限)が付与されます。
コントロールノードからリモートホストにディレクトリ全体をコピーするには、以下の Ansible プレイブックを使用できます。
- hosts: all
tasks:
- name: Copy a directory
copy:
src: /path/to/local/directory/
dest: /path/to/remote/directory/
owner: myuser
group: mygroup
mode: "0755"
recursive: yes
この例では、copy
モジュールを使用して、ローカルディレクトリ /path/to/local/directory/
の内容をリモートディレクトリ /path/to/remote/directory/
にコピーします。recursive
オプションを yes
に設定することで、ディレクトリ構造全体がコピーされます。ファイルとディレクトリは myuser
ユーザーと mygroup
グループによって所有され、0755
のパーミッション(所有者には読み書き実行権限、グループとその他のユーザーには読み取り実行権限)が付与されます。
copy
モジュールを使用することで、コントロールノードからリモートホストにファイルとディレクトリを簡単かつ効率的にコピーでき、インフラストラクチャ自動化ワークフローを合理化することができます。
このセクションでは、Ansible を使用してコントロールノードからリモートホストにファイルをコピーする実践例を紹介します。
この例では、以下の設定があると仮定します。
リモートホストに SSH でアクセスできること、およびコントロールノードの ansible
ユーザーがリモートホストに接続するための必要な権限を持っていることを確認してください。
コントロールノード上に copy_file.yml
という名前の新しいファイルを作成し、以下の内容を追加します。
- hosts: all
tasks:
- name: Copy a file
copy:
src: /path/to/local/file.txt
dest: /path/to/remote/file.txt
owner: myuser
group: mygroup
mode: "0644"
このプレイブックでは、以下のことが行われます。
hosts: all
は、Ansible インベントリに定義されたすべてのホストを対象とします。copy
モジュールを使用して、ローカルパス /path/to/local/file.txt
からリモートパス /path/to/remote/file.txt
に file.txt
ファイルをコピーします。myuser
ユーザーと mygroup
グループによって所有され、0644
のパーミッション(所有者には読み書き権限、グループとその他のユーザーには読み取り専用権限)が付与されます。プレイブックを実行するには、コントロールノードで以下のコマンドを実行します。
ansible-playbook copy_file.yml
Ansible は SSH を使用してリモートホストに接続し、ファイルをコピーし、適切な所有者とパーミッションを設定します。
プレイブックを実行した後、リモートホストにログインして、ファイルが正常にコピーされたことを確認できます。
ssh myuser@remote_host
ls -l /path/to/remote/file.txt
これにより、期待される所有者とパーミッションでファイルが表示されるはずです。
この実践例に従うことで、Ansible の copy
モジュールを使用してコントロールノードからリモートホストにファイルをコピーする方法を学びました。このアプローチを特定のユースケースや要件に合わせて調整し、Ansible がインフラストラクチャ自動化に提供する豊富な機能を引き続き探索することができます。
この Ansible チュートリアルでは、ローカルマシンからリモートホストにファイルをコピーする方法について包括的なガイドを提供しました。Ansible のファイルモジュールを活用することで、インフラストラクチャ管理を合理化し、環境全体で一貫したファイル配布を確保することができます。経験豊富な Ansible ユーザーであろうと、このプラットフォームの初心者であろうと、このチュートリアルを通じて、Ansible 自動化ツールを使用して効率的にファイル転送を管理するための知識を身につけることができました。