ウェブサイト検索

自動化にAnsibleを使用すべきですか?


Ansibleはあなたが探していたソフトウェアプロビジョニングシステムですか?ここでは、Linux上での設定方法を紹介します。

もし自分がボタンを押すだけで、すべてのシステムが最新の状態になり、必要なパッケージがすべてインストールされて準備完了だったら、あなたはどう感じますか?素晴らしい響きですよね?

現代のIT世界では、DevOpsエンジニアがこの夢を現実にしています。今では、Ansibleのようなツールがあり、IT管理プロセスをより管理しやすく、迅速にし、数回のクリックでエラーを減らし、人間の手動入力を減少させています。

Ansibleについて知っておくべきすべてを学ぶために読み進めてください。Ansibleの使い方についての簡単な概要も含まれています。

Ansibleとは何ですか?

Ansibleは強力なオープンソースの自動化エンジンです。クロスプラットフォームで、開発者はWindows、macOS、Linuxなどの任意のオペレーティングシステムからデバイスを管理できます。

Ansibleはさまざまな機能を提供しています:設定管理、アプリケーションデプロイ、クラウドプロビジョニング、システム更新、セキュリティ自動化、継続的デリバリーなどです。それは軽量なツールであり、実行するために追加のソフトウェアやパッケージを必要としないため、展開が容易です。

コアAnsible機能

以下は、Ansibleが自動化ツールとして提供するいくつかの機能です。

アプリのデプロイメント

Ansibleは、開発者がサーバー上にアプリを迅速かつ簡単にデプロイできるようにします。それは、カスタムコードを書く必要や手動でパッケージ管理を行う必要を排除します。代わりに、アプリケーションが実行されるために必要なタスクを定義し、Ansibleプレイブックを使用する代わりに対象システム上でリモートに実行します。単一のプレイブックを複数のデバイスに同時に送信し、多数のサーバーでアプリケーションを実行することができます。

クラウドプロビジョニング

クラウドプロビジョニングとは、クラウドコンピューティングリソースをインストール、設定、および管理する方法です。

Ansibleは、インフラストラクチャの設定、ホストの設定、ネットワークインターフェースの管理、リモートホスト上のファイアウォールとユーザーの管理を含む、クラウドプロビジョニングタスクを自動化することを可能にします。

構成管理

構成管理はAnsibleのもう一つの機能です。Ansibleのプレイブックやアドホックコマンドを使うことで、数回のコマンドでシステムを迅速に起動することができます。AnsibleはYAMLをデフォルトの構成言語として使用しているため、人間が読みやすい形式でタスクを作成し、リモートマシンで実行することが容易です。

例えば、新しくプロビジョニングされたサーバーがある場合、Ansibleを使用してシステムを更新し、必要なパッケージをインストールし、サーバー上のサービスを開始することができます。

セキュリティ自動化

Ansibleはセキュリティ自動化タスクに役立ちます。たとえば、いくつかのAnsibleコマンドを使用することで、カスタムファイアウォールルールを設定したり、マルウェアをチェックしたり、カスタムツールを使用してシステムをクリーンアップしたりすることができます。また、システムの健康を監視し、障害が発生した場合には迅速にバックアップを取ることもできます。

それはまた、SSHを使用してユーザーを認証し、リモートホストでコマンドを実行するため、非常に安全に使用できます。

Ansibleアーキテクチャ

Ansible Engineを構成する部分についてもっと学びましょう。

在庫

Ansibleは、インベントリを使用してリモートホストを管理します。インベントリは、リモートマシンのIPアドレスとホスト名を含む単純なテキストファイルです。インベントリファイルのホストは、ウェブサーバー、データベース、バックアップなどのさまざまなグループに整理できます。ホストをグループに整理することで、ユーザーは特定のマシンのグループにコマンドを実行するのに役立ちます。

注意: タスクを実行する前に、少なくとも1つのホストでAnsibleインベントリファイルを埋める必要があります。

プレイブック

Ansibleプレイブックは、YAML(YAMLはマークアップ言語ではない)で書かれたシンプルなテキストファイルです。それらは、特定のタスクを実行するためにリモートホストで実行する命令やコマンドを含んでいます。

AnsibleのプレイブックはYAMLで書かれているため、人間が読みやすい形式になっています。これにより、ユーザーは新しい構文を習得する必要がないため、Ansibleを非常に使いやすく理解しやすくなっています。各プレイブックは、すべてまたは特定のホストで実行される1つ以上のタスクで構成されています。

関連:

モジュール

Ansibleはユーザーにモジュールを提供します。モジュールは、コントロールノードからリモートホストを管理するためのコマンドです。これらのモジュールを使用すると、Ansibleはユーザーの管理、パッケージのインストールおよびアンインストール、システムの更新などを行うことができます。これらは必要に応じて特定のタスクのためにプレイブックで実行されます。Ansibleは4600以上のモジュールを提供しています。すべてのAnsibleモジュールをチェックしてください。

プラグイン

Ansibleのアーキテクチャはカスタムプラグインを許可しています。これにより、Ansibleエンジンの基本機能を拡張または改善することができます。デフォルトでいくつかのプラグインが付属していますが、ニーズに合わせてカスタムプラグインを作成することもできます。

API

Ansibleは、デバッグ、コマンドの実行、コールバックなどのためのさまざまなAPIエンドポイントを提供することで機能を拡張します。

Ansibleを始める

Ansibleは簡単に迅速にセットアップおよび使用できます。このセクションでは、ホストマシンにAnsibleをインストールし、リモートホストを構成し、基本的な自動化タスクを実行する方法を示します。

Ansibleはクロスプラットフォームであり、主要なオペレーティングシステムに対応しています。簡潔さのために、このガイドではDebianベースのLinuxディストリビューションにおけるAnsibleのインストールについて説明します。他のオペレーティングシステムのAnsibleインストールプロセスについては、確認してください。

/etc/apt/sources.list ファイルを編集することから始めてください

sudo vim /etc/apt/sources.list

ファイル内に次のエントリを追加してください:

deb http:<em>//</em>ppa.launchpad.net/ansible/ansible/ubuntu trusty main

上記のエントリは、Debian リポジトリに Ubuntu PPA を追加し、Ansible をインストールできるようにします。

次に、以下のコマンドを実行してください。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
sudo apt update
sudo apt install ansible -y

最初のコマンドは、必要なキーを追加します。

次のコマンドはソフトウェアリポジトリを更新し、最終的にAnsibleをインストールします。

システムにAnsibleがインストールされたので、進んでください。

在庫を作成する

Ansibleの自動化タスクを実行する前の最初のステップは、ホストインベントリファイルを設定することです。

デフォルトのインベントリファイルは/etc/ansible/hostsにあります。お気に入りのテキストエディタを使用して、自動化したいリモートホストのIPアドレスを追加してください。

sudo vim /etc/apt/hosts

ファイルを保存して閉じてください。

シンプルなプレイブックを作成する

Ansibleのプレイブックは、リモートホストで実行されるコマンドを設定することで、ユーザーがタスクを自動化できるようにします。

あなたは、Apache Webサーバーをインストールし、Apacheを許可するファイアウォールルールを作成し、サービスを再起動するシンプルなAnsibleプレイブックを作成します。

Ansibleは、プレイブックのデフォルト構成言語としてYAMLを使用します。

タッチコマンドを使用してYAMLファイルを作成します:

touch first-playbook.yaml

テキストエディタを使用して、下記の例のプレイブックに示されているようにエントリを追加してください。

vim first-ansible-playbook.yaml
---
- hosts: all
  become: true
 tasks:
  - name: Update apt packages
    apt:
      state: latest
      update_cache: yes
  - name: Install Apache
    apt:
      name: apache2
      state: latest
  - name: Install UFW Firewall
    apt:
      name: ufw
      state: latest
  - name: Allow HTTP ufw
    ufw:
      state: enabled
      rule: allow
      port: "80"
      proto: tcp
  - name: Restart Apache
    service:
      name: apache2
      state: restarted

上記のプレイブックでは、まずプレイブックを実行したいホストを指定します。インベントリファイルには1つのホストしかないので、ホストをすべてに設定します。

次に、プレイブック内のタスクをrootとして実行することを可能にするbecomeステートメントを設定します。

前の行はリモートホストで実行されるタスクを定義します。それらには機能を説明する名前と、ホストで実行される実際のタスクが含まれます。

最初にAnsibleにリポジトリキャッシュを更新するよう指示します。これは次のコマンドに相当します。

sudo apt-get update

次の指示は、Apacheウェブサーバーの最新バージョンをインストールします。

次に、UFWファイアウォールをインストールする作業があります。これには、ApacheがTCPプロトコルで使用するポート80を有効にする必要があります。

最後に、最後のステートメントはApacheウェブサーバーを再起動します。

Ansible プレイブックを実行する

Ansibleプレイブックを実行するには、インストール時にAnsibleに付属するansible-playbookコマンドを使用する必要があります。

最初のplaybook.yamlファイルを実行するには、次のコマンドを使用します:

ansible-playbook --user=ubuntu first-playbook.yaml

上記のコマンドでは、リモートホストのユーザーを指定する--userオプションが渡されています。

注意: リモートホストにSSHキーがインストールされていることを確認してください。

上記のコマンドを実行すると、以下のような出力が得られます。

上記は、リモートホストですべてのコマンドが正常に実行されたことを示しています。

タスクを確認する

プレイブックのタスクが正常に実行されたことを確認するには、ブラウザを開いてリモートホストのIPアドレスにアクセスしてください。

コマンドが実行され、Apacheサーバーが稼働している場合、次のようにApacheのUbuntuのデフォルトページが表示されるはずです:

Ansibleを使用すべきですか?

結論として、Ansibleは強力なツールであることは明らかです。その柔軟性、機能、能力は、現在および将来の自動化タスクにとって有望なツールとなります。ITタスクを迅速かつ簡単に自動化したいDevOpsエンジニアであれば、Ansibleはあなたの旅において重要な役割を果たすでしょう。

関連記事: