はじめに
AnsibleはInfrastructureasCodeツールであり、単一の中央ロケーション(Ansible制御ノード)を使用して、多数のリモートサーバー(ホスト)を監視および制御できます。
Ansibleを使用して、新しいファイルやディレクトリの作成など、リモートホストが実行できるいくつかのタスクを設定します。
このチュートリアルでは、Ansibleを使用してリモートホストでファイルを作成するさまざまな方法について説明します。
前提条件
- Ubuntu20.04を実行しているシステム
- コマンドライン/ターミナルウィンドウへのアクセス
- Ansibleのインストールと構成(WindowsへのAnsibleのインストールまたはUbuntuへのAnsibleのインストールに関するガイドを参照)
AnsiblePlaybookの作成
Ansible Playbookは、リモートホストに実行させたいタスクのリストです。保存して再利用できるため、複雑なプロセスを自動化できます。
ファイルやフォルダーの作成など、リモートホストに発行するすべてのコマンドは、プレイブックに含める必要のあるタスクです。プレイブックを実行すると、リモートホストはプレイブックで定義されているすべてのタスクを実行します。
Ansibleプレイブックを作成するには、次のコマンドを使用します:
sudo nano /etc/ansible/playbook.yaml
このコマンドは、「playbook」という.yamlファイルを作成します Ansibleインストールフォルダーにあります。 playbook.yamlのタスクを使用します リモートホスト上にファイルとフォルダを作成するためのファイル。
Ansibleのドライラン機能を使用すると、ユーザーはサーバーに変更を加えることなくプレイブックを実行できます。組み込みのチェックモードを使用して、実行前にプレイブックのエラーを証明します。
空のファイルの作成
空のファイルを作成する最も速い方法は、Ansibleのfile
を使用することです。 モジュール。
次の構成をAnsibleプレイブックに追加します:
---
- hosts: all
tasks:
- name: Creating an empty file
file:
path: "/your path"
state: touch
上記のファイルには、次のコンポーネントが含まれています。
hosts
: タスクを実行するAnsibleインベントリファイルのリモートホストを定義します。すべては、すべてのホストがコマンドを受信することを意味しますが、ホストカテゴリまたは1つの個別のホストの名前を入力することもできます。tasks
: リモートホストがタスクを実行する必要があることをアナウンスします。name
:タスクの名前を定義できます。名前は参照用であり、タスク自体には影響しません。file
:Ansibleのファイルモジュールを使用して新しいファイルを作成します。path
:リモートホストのハードドライブ上の新しいファイルのパスを定義します。state
:Ubuntuターミナルのtouchコマンドと同様に、touch
と入力します。 選択した場所に空のファイルを作成します。
プレイブックを実行するには、次を使用します:
ansible-playbook /etc/ansible/playbook.yaml
コンテンツを含むファイルの作成
コンテンツを含む新しいファイルを作成する場合は、最初に上記の方法を使用して空のファイルを作成してから、 blockinfile
を使用できます。 またはlineinfile
コンテンツを挿入するモジュール。
より簡単な方法は、copy
を使用することです モジュール。このモジュールは、制御ノードからリモートホストにファイルをコピーするために使用されますが、content
を含めることができます。 空のファイルにコンテンツを即座に追加するためのパラメータ。
プレイブックでこの構成を使用します:
---
- hosts: all
tasks:
- name: Creating a file with content
copy:
dest: "/your path"
content: |
line 01
line 02
ファイルでは、次を使用しました:
copy
:Ansibleのコピーモジュールを使用します。dest
:新しいファイルのパスを定義します。content
:このパラメータはline 01
を追加します およびline 02
新しいファイルのコンテンツとして。
複数のファイルの作成
Ansibleプレイブックの1つのタスクを使用して、複数のファイルを作成できます。
次の構成を使用して、複数のファイルを作成します。
---
- hosts: all
tasks:
- name: Create multiple files
file:
path: "{{ item }}"
state: touch
with_items:
- test01.txt
- test02.txt
- test03.txt
- test04.txt
上記の構成ファイルでは、次のように定義しました。
path
:"{{ item }}"
値は、Ansibleがそれぞれのファイルごとに個別のパスを作成することを意味します。デフォルトでは、これらのファイルはリモートホストのホームフォルダにあります。/your_folder_path/"{{ item }}"
を使用して、別のパスを定義します 。-
with_items
:このパラメーターは、作成するファイルのリストを開始するために使用されます。必要な数のファイルをリストします。この例では、 testというタイトルの4つのファイルのリストを作成しました。 。
ディレクトリの作成
新しいディレクトリの作成では、空のファイルを作成する場合と同じ構成が使用されます。唯一の違いは、state
の下にあることです パラメータ、directory
を入力します 値として:
---
- hosts: all
tasks:
- name: Creating a new directory
file:
path: "/your path"
state: directory
ファイルの削除
Ansible Playbookは、既存のファイルを削除することもできます。これを行うには、state
を設定します absent
へのパラメータ :
---
- hosts: all
tasks:
- name: Removing a file
file:
path: "/your path"
state: absent
ファイルがすでに削除されている場合、このコマンドは何もしません。
ファイルのアクセス許可の設定
上記のすべての例で、新しいファイルとフォルダーのアクセス許可を設定することもできます。このためには、mode
を使用する必要があります パラメータ。
これを行うには2つの方法があります:
- 8進モード形式の使用: 0644や0777などの8進数を使用できます。先頭の0を省略すると、予期しない結果が生じる可能性があるため、忘れないでください。
- シンボリックモード形式の使用:
u=rwx
のような値を使用できます 、g=rx
、またはo=rx
、ここでu
所有者の略です 、g
groupの略です 、およびo
その他の略です 。権限はr
として定義されています 読む 、w
書き込みの場合 、およびx
実行の場合 。
たとえば、所有者を定義するときに、8進数の値0755を使用できます。
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: 0755
owner: test
0755と同等の記号を使用することもできます:
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: u=rwx,g=rx,o=rx
owner: test