「50 日間で 50 の DevOps ツール」シリーズの 30 日目へようこそ!今日は、DevOps ツールキットの最も重要なツールの 1 つである Ansible について説明します。このブログでは、Ansible の基本を紹介し、その主要コンポーネントを分解し、簡単な例を使用して開始方法を示します。初心者にとって完璧な出発点となるよう、物事をわかりやすく説明していきます。
Ansible は、構成管理、アプリケーションのデプロイメント、オーケストレーションなどのタスクを簡素化するオープンソースの自動化ツールです。シンプルでありながら強力になるように設計されており、反復的なタスクを自動化し、インフラストラクチャをより効率的に管理できるようになります。
エージェントレス: Ansible ではリモート システムにエージェントをインストールする必要がないため、オーバーヘッドが削減されます。
人間が読める YAML プレイブック: Ansible は YAML (Yet Another Markup Language) を使用して、読み書きが簡単なプレイブックを作成します。
冪等: 意図しない変更を心配することなく、同じプレイブックを複数回実行できます。
エージェントレス アーキテクチャ: Ansible はエージェントレスであるため、クライアント システムに追加のソフトウェアをインストールする必要がなく、オーバーヘッドと潜在的なセキュリティ リスクが軽減されます。
シンプルな構文: Ansible は、読み書きが簡単な YAML をプレイブックに使用しており、自動化が初めての人でもアクセスしやすくなっています。
冪等性: Ansible は、現在の状態に関係なく、望ましい状態が確実に達成されるようにします。これは、プレイブックを複数回実行しても問題やアクションの重複が発生しないことを意味します。
広範なコミュニティ サポート: 大規模で活発なコミュニティを持つ Ansible には、ニーズに合わせて再利用したりカスタマイズしたりできる豊富なロール、モジュール、プレイブックがあります。
スケーラビリティ: 数台のサーバーを管理する場合でも、数千台のサーバーを管理する場合でも、Ansible は適切に拡張できるため、あらゆる規模の組織に適しています。
Inventory: Ansible が管理するホスト (サーバー) のリストです。インベントリは、静的 (ファイルで定義) または動的 (スクリプトによって生成) にすることができます。
モジュール: モジュールは Ansible の主力です。これらはリモート ホスト上で実行され、パッケージのインストール、ファイルのコピー、サービスの管理などのタスクを実行します。
Playbook: Playbook は、Ansible の構成、デプロイメント、およびオーケストレーション言語です。これらは YAML で書かれており、ホスト上で実行される一連のタスクを記述します。
ロール: ロールを使用すると、プレイブックを再利用可能なコンポーネントに分割できるため、大規模なプロジェクトの管理と整理が容易になります。
変数: 変数は、Playbook 全体で再利用できる値を保存するために使用されます。これらは柔軟性を提供し、値をハードコーディングせずに Playbook をカスタマイズできるようにします。
ハンドラー: ハンドラーは、他のタスクによってトリガーされた場合にのみ実行される特別なタスクです。これらはサービスの再起動などによく使用されます。
まず、コントロール ノードに Ansible をインストールします。インストールプロセスは簡単ですが、オペレーティングシステムによって若干異なります。
Ubuntu/Debian への Ansible のインストール
sudo apt update sudo apt install ansible -y
CentOS/RHEL への Ansible のインストール
sudo yum install epel-release -y sudo yum install ansible -y
インストールの確認
インストール後、次を実行して Ansible が正しくインストールされていることを確認できます:
ansible --version
リモートサーバーにNginxをインストールするための簡単なプレイブックを作成しましょう。まずは在庫を定義することから始めます。
ステップ 1: インベントリ ファイルを作成する
hosts:
という名前のファイルを作成します。
[webservers] 34.42.111.35 34.42.111.66
このインベントリ ファイルは、2 つのサーバーを含む webservers というグループを定義します。
ステップ 2: ハンドブックを作成する
次に、これらのサーバーに Nginx をインストールして起動するためのプレイブックを作成します。
nginx_setup.yml:
という名前のファイルを作成します
--- - name: Install Nginx on web servers hosts: webservers become: yes tasks: - name: Install Nginx apt: name: nginx state: present - name: Start Nginx service service: name: nginx state: started enabled: true
name: プレイブックまたはタスクの動作についての人が読める形式の説明。
hosts: Playbook を実行するホストのグループを (インベントリから) 指定します。
become: Ansible が昇格された権限 (sudo など) を使用する必要があることを示します。
tasks: Ansible が実行するステップをリストします。ここでは、Nginx をインストールし、起動時にサービスが開始されて有効になっていることを確認します。
ステップ 3: ハンドブックを実行する
プレイブックを実行するには、次のコマンドを実行します:
ansible-playbook -i hosts nginx_setup.yml
このコマンドは、ホスト インベントリ ファイルで定義されているホスト上で nginx_setup.yml 内のタスクを実行するように Ansible に指示します。
複数のサーバーにパッケージのセットをインストールする必要があるシナリオを考えてみましょう。これを手動で行うと時間がかかり、エラーが発生しやすくなります。 Ansible を使用すると、このタスクを簡単に自動化できます。
複数のパッケージをインストールするための簡単なプレイブックは次のとおりです:
--- - name: Install essential packages hosts: all become: yes tasks: - name: Install packages apt: name: - git - curl - htop state: present
この Playbook では、Ansible はインベントリにリストされているすべてのサーバーに git、curl、および htop をインストールします。 apt モジュールは、各パッケージが確実にインストールされるようにします。
複数のサーバー上に新しいユーザーを作成し、それらを特定のグループに割り当てる必要があると想像してください。各サーバーでこのタスクを手動で実行するのは面倒です。 Ansible を使用すると、それは簡単です。
その方法は次のとおりです:
--- - name: Create a new user hosts: all become: yes tasks: - name: Create user "devuser" user: name: devuser state: present groups: sudo
このプレイブックは、すべての管理対象サーバー上に新しいユーザー devuser を作成し、それらを sudo グループに追加します。
一貫性: Ansible はシステムの構成が一貫していることを保証し、構成のドリフトのリスクを軽減します。
効率: 反復的なタスクを自動化することで、より重要な作業に時間を割くことができます。
スケーラビリティ: 少数のサーバーを管理する場合でも、数千のサーバーを管理する場合でも、Ansible は簡単に拡張できます。
柔軟性: Ansible のモジュール型アプローチにより、必要に応じて機能をカスタマイズおよび拡張できます。
Ansible は、インフラストラクチャの管理を大幅に簡素化できる、強力でありながら使いやすいツールです。わずか数行のコードで複雑なタスクを自動化し、環境全体での一貫性と信頼性を確保できます。サーバーのセットアップ、アプリケーションのデプロイ、構成の管理のいずれを行う場合でも、Ansible はそれをより効率的に行うのに役立ちます。
明日は、より高度な Ansible トピックを取り上げ、自動化を次のレベルに引き上げることができる機能を検討します。乞うご期待!
? 最新情報を入手するには、LinkedIn で私をフォローしてください: シヴァム アグニホトリ
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3