I. Ansibleの紹介Ansible Playbook は、繰り返し利用でき、再利用性に優れたシンプルな構成管理と複数マシンへのデプロイシステムを提供し、複雑なアプリケーションのデプロイに最適です。Ansible Playbook は、複雑な IT 運用を自動化するための設計図であり、人的介入を最小限に抑え、あるいは全く必要とせずに実行できます。Ansible Playbook は、ホストのセット、グループ、またはカテゴリに対して実行され、全体として Ansible インベントリを形成します。 Ansible Playbook は基本的にフレームワークであり、開発者がアドホックテンプレートや出発点として使用できる、事前に記述されたコードです。Ansible Playbook は、IT インフラストラクチャ(オペレーティングシステムや Kubernetes プラットフォームなど)、ネットワーク、セキュリティシステム、開発者ロール(Git など)の自動化によく使用されます。 Ansible Playbook は、IT プロフェッショナルがアプリケーション、サービス、サーバーノード、その他のデバイスを、すべてをゼロから手作業で作成する手間をかけずにプログラミングするのに役立ちます。Ansible Playbook は、条件、変数、タスクとともに保存、共有、または無期限に再利用できます。
II. Ansible プレイブックはどのように機能しますか?Ansibleモジュールはタスクを実行します。1つ以上のAnsibleタスクを組み合わせてゲームをプレイできます。2つ以上のプレイを組み合わせてAnsible Playbookを作成することもできます。Ansible Playbookは、ホストに対して自動的に実行されるタスクのリストです。ホストグループはAnsibleインベントリーを構成します。 Ansible Playbook の各モジュールは特定のタスクを実行します。各モジュールには、タスクの実行日時と場所、およびタスクを実行するユーザーを決定するメタデータが含まれています。他にも、多種多様な IT タスクを実行できる数千もの Ansible モジュールが存在します。 III. YAML とは何ですか?YAMLは、データシーケンスを表現するための非常に可読性の高いフォーマットであり、本質的にはマークアップ言語です。YAMLは運用と開発の両方で広く利用されており、例えばKubernetesのデプロイメントマニフェストファイル、GitLab CI/CD、YAMLを使用したPython設定ファイル、JSONデータからYAML形式への変換などが挙げられます。この記事ではYAMLの構文については詳しく説明しません。詳細については、BaiduまたはGoogleを参照してください。 IV. YAML言語の特徴
V. Ansible Playbookのコアコンポーネント
(1) ansible-playbookのプロジェクトディレクトリ構造[ルート@ayunw ansible -プロジェクト] # ll 上記は、Dockerを用いたプロジェクトのバッチインストールについて説明しています。このディレクトリ形式は、私が推奨するインストールディレクトリ構造です。ただし、すべてのディレクトリ内のすべてのmain.ymlファイルにコンテンツが含まれているわけではありません。実際、default/main.ymlとmeta/main.ymlは、必ずしも必要ではないかもしれません。 (2)リモートホストのホストリストプレイブック内の各プレイの目的は、特定のホストが指定されたユーザーとしてタスクを実行できるようにすることです。hostsファイルは、指定されたタスクを実行するホストを指定するもので、事前にホストリストに定義しておく必要があります。例えば、前述のように、デフォルトでは通常「/etc/ansible/hosts」ファイルにあります。 [ root @ayunw ansible -例] # cat / etc / ansible / hosts (3) remote_user リモートユーザーホストとタスクの両方で使用でき、sudo経由でリモートホスト上のタスクを実行するように指定することもできます。グローバルに実行することも、特定のタスクに対して実行することもできます。さらに、sudo_user はsudo実行時に切り替え先のユーザーを指定するために使用できます。 [root@ayunw ansible-example]# cat デモプレイブック.yml (4)タスク簡単に言えば、タスクセットとは、Ansibleでサポートされている複数のモジュールを使用して組み合わせたタスクのグループです。Ansibleプレイブックでは、名前がタスクを指定すると考えることができます。各タスクは、hostsファイルに指定されたすべてのホスト上で順番に実行されます。つまり、最初のタスクがすべてのホストで完了してから、次のタスクが開始されます。ただし、非同期モードも使用できます。これについては、後の記事で説明します。 タスクの目的は、指定されたパラメータでモジュールを実行することです。モジュールパラメータでは変数を使用できます。モジュールの実行は冪等性があり、結果が常に一貫しているため、複数回実行しても安全です。 各タスクには、プレイブックの実行出力に対して独自の名前が必要です。わかりやすい名前を選択することをお勧めします。 タスクの 2 つの形式:1 つの形式は key=value であり、もう 1 つは key: value です。 注:後者の場合、コロンの後にスペースが入ります。 [ root @ ayunw ansible -プロジェクト]# cat install_httpd .yml 上記の例では、空行を追加しました。空行や (5)変数通常、変数情報は、次の形式で roles/vars/main.yml に格納されます。 [ root @ayunw ansible - project ] # cat roles / docker / vars / main . yml (6)テンプレートテンプレートは主にJinjia2テンプレート言語(拡張子は.j2)を使用し、基本的には設定ファイルです。例えば: [root@ayunw ansible-project]# cat roles/docker/templates/daemon.json.j2 (7)ハンドラーと通知これら2つは通常、一緒に使用されます。例えば、サービス設定の変更に再起動が必要な場合、設定変更後に「notify」関数を設定する必要があります。そうすることで、ハンドラーはプレイブックが終了する前にサービスの再起動操作を実行します。サービスを再起動するハンドラーが定義されているものの、「notify」関数が定義されていない場合、すべてのタスクが完了した後にもサービスの再起動操作がトリガーされます。 典型的な例を 2 つ挙げます。例は https://docs.ansible.com/ansible/latest/user_guide/playbooks_handlers.html から引用されています。 例1: --- 例2: タスク: (8) タグAnsible Playbookでは、各タスクにタグを付けることで、特定の種類の他のタスクと区別することができます。固有のタグが付いたタスクを実行したい場合は、`ansible playbook`コマンドに`-t`パラメータを追加することで、そのタグの実行Playbookを指定できます。例えば、以下のようになります。 Ansible -プレイブック- t ayunw install_docker .yml VI. Ansible-playbook コマンドコマンド形式: ansible-playbook <filename.yml>...[options] 一般的なオプション: -C --check # 潜在的な変更のみをチェックし、実際には操作は実行しません。 例: ansible-playbook -C install_httpd.yaml 簡単な例: [ root @ayunw ansible -プロジェクト] # cat copy_files . yml 実行スクリプト: [ root @ayunw ansible -プロジェクト] # ansible -プレイブック- C cf . yml 上記の内容は、Ansible Playbookスクリプトの概要と基本的な使用方法を示したものです。もちろん、その機能はこれにとどまらず、より高度な用途にも活用できます。 |
この記事では、Ansible Playbook の使い方を紹介し、説明します。
関連するおすすめ記事
-
パスワード管理ツール KeePass にセキュリティ上の脆弱性があることが判明しました。攻撃者がデータベース全体をプレーンテキスト形式でエクスポートできる可能性があります。
-
オープンソースプロジェクトのボランティアは疲弊しており、大企業はボランティアに報酬を支払わないだけでなく、プロジェクトを更新するよう圧力をかけており、ネットワークは危険にさらされています。
-
-
Jekyllでウェブサイトを構築する
-
Graphite: AI を搭載した Web ベースのオープンソース ベクター グラフィック エディター
-
Firefox 専用のプライバシー拡張機能は正式にオープンソース化されており、将来的には Chrome でもサポートされる予定です。