← Back to Home

Ansibleによるシステム管理

Views: 862

You can try the commands on our interactive shell.

AnsibleによるLinuxシステム管理入門

Ansibleは、DevOpsプロセスにおける自動化ツールとして広く使用されています。このチュートリアルでは、Ansibleを用いてLinuxシステムを管理する方法について詳しく説明します。

Ansibleとは?

Ansibleは、SSHを使用して複数のホストに対して一括でコマンドを実行し、自動化を支援します。Ansibleは構文がシンプルで、学習曲線が低いのが特徴です。

Ansibleインストール

まず、Ansibleをインストールしましょう。Ubuntuの場合、以下のコマンドを使用できます:

sudo apt update
sudo apt install ansible

Windowsの場合は、PowerShellから以下のようにインストールできます:

choco install ansible

Ansible Playbookの作成

Ansible Playbookは、一連のタスクを記述したYAML形式のファイルです。以下に基本的なPlaybook例を示します:

---
- name: ホスト名変更
  hosts: all
  become: yes
  tasks:
    - name: ホスト名設定
      hostname:
        name: my_new_hostname

このPlaybookは、指定したホストに新しく「my_new_hostname」というホスト名を設定します。

ファイルの転送

Ansibleを使用してファイルを転送することも可能です。以下は、ファイルをコピーするPlaybookの例です:

---
- name: ファイル転送
  hosts: all
  become: yes
  tasks:
    - name: ファイルコピー
      copy:
        src: /path/to/local/file
        dest: /path/to/remote/file

サービスの管理

Ansibleを使用してサービスを起動、停止、再起動することもできます。以下は、Apacheサービスを起動するPlaybookの例です:

---
- name: Apacheサービス管理
  hosts: all
  become: yes
  tasks:
    - name: Apacheサービス起動
      service:
        name: apache2
        state: started

パッケージのインストール

Ansibleを使用してパッケージをインストールすることもできます。以下は、NginxパッケージをインストールするPlaybookの例です:

---
- name: Nginxパッケージインストール
  hosts: all
  become: yes
  tasks:
    - name: Nginxインストール
      apt:
        name: nginx
        state: present

条件付きタスク

Ansibleでは、条件付きタスクを定義することもできます。以下は、ディレクトリが存在しない場合にのみ作成するPlaybookの例です:

---
- name: ディレクトリ作成(条件付き)
  hosts: all
  become: yes
  tasks:
    - name: ディレクトリチェック
      stat:
        path: /path/to/directory
      register: dir_check

    - name: ディレクトリ作成
      file:
        path: /path/to/directory
        state: directory
      when: dir_check.stat.exists is absent

タスクの繰り返し

Ansibleでは、タスクを繰り返すこともできます。以下は、複数のホストに対して同じタスクを実行するPlaybookの例です:

---
- name: 複数ホストへの同一タスク適用
  hosts:
    - web_servers
    - db_servers
  become: yes
  tasks:
    - name: タスク適用
      command: /path/to/script.sh

Ansible Galaxy

Ansible Galaxyは、共有するPlaybookやRoleを管理できるプラットフォームです。以下では、GalaxyからRoleを使用してMySQLをインストールする例を示します:

---
- name: MySQL Roleを使用したインストール
  hosts: all
  become: yes
  roles:
    - mysql

上記のPlaybookは、Ansible Galaxyから「mysql」Roleを利用しています。Galaxyで探して使用可能なRoleを探し、インストールすることができます。

練習問題

  1. ホスト名を変更するPlaybookを作成してください。
  2. ファイルを転送するPlaybookを作成してください。
  3. Apacheサービスを停止するPlaybookを作成してください。
  4. NginxパッケージをアンインストールするPlaybookを作成してください。
  5. もしディレクトリが存在しない場合のみ作成するタスクを作成してください。
  6. 複数のホストに対して同じスクリプトを実行するPlaybookを作成してください。
  7. Ansible GalaxyからRoleを使用してPostgreSQLをインストールするPlaybookを作成してください。

以上は、AnsibleによるLinuxシステム管理の基本的な方法について説明したチュートリアルです。より高度な機能や最適化については、公式ドキュメンテーションやオンラインリソースを参考にしてください。

Try it Now!