ホーム テクノロジー DEVOPS Ansible で自動化する 7 つの毎日のシステム管理タスク

Ansible で自動化する 7 つの毎日のシステム管理タスク

Red Hat による無料のオープンソース Python ベースのプロジェクトである Ansible は、人気のある構成管理および IT 自動化プラットフォームです。

マルチプラットフォームであり、Linux、Windows、Mac など、ほとんどの最新のオペレーティング システムで動作します。システム構成を記述するために、 YAMLまたはYAML Ain't Markup Languageで書かれた宣言言語をサポートします。

Ansible は、他の最新の構成管理プラットフォームとともに、IT 自動化と業界標準に革命をもたらしました。構成管理ツールは DevOps ツールセットの一部となっており、最新の IT プロセスのライフサイクルにとって切り離せない部分となっています。これは、オンプレミス環境、ハイブリッド環境、またはクラウド環境に構築されているかどうかに関係なく、あらゆる最新のインフラストラクチャ環境に適用できます。 DevOps だけでなく、Ansible は、システム管理者が行う多くの日常タスクの自動化にも役立ちます。

Ansible を使用する利点の 1 つは、エージェントレスであり、ターゲット マシンへの SSH アクセスと、最新のオペレーティング システムのほとんどにデフォルトですでにインストールされているサポートされているバージョンの Python への SSH アクセス以外に、開始するのに多くの準備が必要ないことです。また、軽量なツールであるため、従来のシステムから革新的なシステムまで導入して使用できます。

Ansible の使用法

オーケストレーション

Ansible は、さまざまなシステム管理および導入タスクを調整するために最適なツールです。 Playbook を使用すると、異なるプロジェクト間で同じオーケストレーション ワークフローを使用できるようになり、 YAMLベースの構成データを使用すると、インフラストラクチャを Git リポジトリまたはサポートされているバージョン管理プラットフォームに保存してバージョン管理できるようになります。

アプリケーションの展開

単純な数行のコード アプリケーションであっても、多層の重量のあるデプロイメントであっても、Ansible を使用すると、エンドツーエンドのアプリケーション デプロイメント ライフサイクルを自動化できます。

セキュリティとコンプライアンス

Ansible は、組織のガイドラインに従ってシステムが保護され、業界標準に準拠していることを確認するのにも役立ちます。数千台のサーバーにわたって実行し、監査を生成し、それらのセキュリティ ホールを修正できるため、管理者は環境を完全に制御できます。

次に、Ansible で自動化できる一般的なシステム管理タスクのいくつかを見てみましょう。

ローカルまたはリモート システムからファイルをコピーする

システム管理者は、あるディレクトリから別のディレクトリにファイルをコピーするのが一般的です。多くの場合、構成ファイルはリモート サーバーにコピーする必要があり、場合によってはファイルをあるリモートの場所から別の場所に移動する必要があります。

Ansible copyモジュールは、Playbook でこれらのタスクを実行するのに役立ちます。

システム管理者にとって、管理対象サーバーのステータスを把握し、組織のポリシーに従って事前定義されたアクションを実行することは日常的なタスクです。そのようなタスクの 1 つは、サーバーの稼働時間を知ることです。 Ansible を使用すると、稼働時間の値を簡単に取得して一緒に出力できます。 copyモジュールを使用してntp設定をローカル サーバーからリモート サーバーにコピーする例を以下に示します。

 ---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Copy a new ntp configuration file and back up the original, if it differs
      copy:
        src: ./ntp.conf
        dest: /etc/ntp.conf
        owner: root
        group: root
        mode: '0644'
        backup: yes

追加の cron ジョブを構成する

定期的なタスクを実行するためにスケジュールされたジョブを設定することは、サーバーの管理の一部です。自動バックアップ、パッチ適用、監査などを 1 日または月の特定の時間帯に自動的にスケジュールし、生産的な時間を利用できるようにすることができます。

cron 、スケジュール設定をサポートする Linux のツールの 1 つであり、Ansible はこれらのジョブの追加または変更に役立ちます。例として、以下のプレイブックは、Ansible を使用して、一部またはすべてのサーバー上でrootとしてrsyncジョブを簡単に設定する方法を示しています。

 ---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Deploy cron job
      cron:
        name: "Set rsync job"
        user: root
        minute: "5"
        hour: "4"
        job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"

ディスクとファイルシステムを管理する

Ansible を使用すると、ディスク、パーティション レイアウト、ファイル システム、Linux サーバー上の/etc/fstabなどのマウントを管理できます。別の Ansible モジュールによりこれが可能になります。以下は、 100GBディスク上にパーティションを作成し、 ext4ファイルシステムでフォーマットし、パーティションをマウントするための新しいディレクトリを作成し、最後に指定されたディレクトリにマウントする例です。 /etc/fstab内のエントリは、モジュール オプションに応じて一時的または永続的なマウントによっても作成されます。

 ---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Create a partition
      parted:
        device: /dev/sdb
        number: 1
        part_end: "100%"
        state: present
    - name: Format new partition
      filesystem:
        fstype: ext4
        dev: /dev/sdb1
    - name: Create mount directory
      file:
        path: /data
        state: directory
    - name: Mount partition
      mount:
        path: /data
        src: /dev/sdb1
        fstype: ext4
        state: mounted

サーバーログを収集する

ログを便利な場所に保管することは、セキュリティ、監査、分析にとって不可欠な場合があります。 Ansible を使用すると、エンタープライズ環境内のさまざまなサーバーからログを収集し、定義した場所に簡単に保存できます。これを実現するためのプレイブックは次のとおりです。

 ---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
  
    - name: Find logs
      find:
        paths: /var/log/
        patterns: '*.log'
        recurse: yes
      register: _logs

    - name: Fetch logs
      fetch:
        src: "{{ item.path }}"
        dest: /tmp/logs
      with_items: "{{ _logs.files }}"

パッケージとソフトウェアのインストールまたは削除

多くの場合、パッケージはユーザーの要求に応じて、または初期サーバー構築の一部としてインストールする必要があります。また、不要になったパッケージや重大なバグがある特定のパッケージを削除する必要がある場合もあります。Ansible を使用すると、各サーバーに移動して手動コマンドを実行する手間をかけずに、パッケージを簡単にインストールまたは削除できます。ここでは、Ubuntu サーバーと RHEL/CentOS ベースの Linux サーバーに対してそれぞれ 1 つのパッケージをインストールおよび削除する例を示します。

 ---
- hosts: ubuntu
  gather_facts: no
  tasks:
    - name: Install lsof utility
      apt:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      apt:
        pkg: arp-scan
        state: absent
      sudo: yes
      
 ---
- hosts: centos
  gather_facts: no
  tasks:
    - name: Install lsof utility
      yum:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      yum:
        pkg: arp-scan
        state: absent
      sudo: yes

ユーザーの管理

ユーザーとグループは、Unix/Linux ベースのシステムがアクセスと権限を管理するための基本構造を形成します。大規模な組織では、環境をサポートするための自動化にもかかわらず、ユーザーとグループの管理が大きな課題になる可能性があります。

Ansible を使用すると、システム管理者は、OS でサポートされているさまざまな機能を使用してユーザーとグループを作成、変更、削除するための優れたツールを利用できます。

以下は、Ansible を使用したユーザーとグループの作成と削除を示す簡単な例です。このプレイブックを実行すると、ターゲット サーバーには指定された GID でgroupAgroupBが作成され、 user1存在する場合は削除されます。シェルを持たない新しいユーザーは、指定された UID、割り当てられたグループ、およびロックされたパスワードを持つuser2として作成されます。

 ---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - group:
        gid: 12310
        name: groupA
        state: present
    - group:
        gid: 12311
        name: groupB
        state: present
    - user:
        name: user1
        state: absent
    - user:
        name: user2
        uid: 12427
        shell: /bin/false
        password_lock: yes
        groups: groupA, groupB

サービスの管理

サービスはバックグラウンドで実行され、SSH 接続を提供するsshdなどのサービスを提供するプロセス デーモンです。Ansible を使用すると、システム サービスやユーザー サービスの開始、停止、再起動などを管理できます。これを示すサンプル プレイブックは次のとおりです。

 ---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Restart ssh daemon
      service:
        name: ssh
        state: restarted
    - name: Restart sssd daemon
      service:
        name: sssd
        state: stopped
    - name: Restart httpd daemon
      service:
        name: httpd
        state: started

上記の例では、次に SSSD サービスを停止しながら、SSH サービスが再起動されます。 httpdデーモンは最後のほうで開始されます。 Ansible は冪等であるため、既に開始または停止されているサービスは変更されませんが、再起動すると常にサービスの状態が変化します。 Linux ディストリビューションが異なると、 sshsshdなどの同じサービスでも別の名前が使用されるため、サービス名を必ず確認してください。

概要 👨‍💻

Ansible を使用すると、繰り返し行われる時間のかかるタスクを自動化された方法で実行できるようになり、人的エラーと労力が削減されるため、システム管理者の作業が楽になります。さらに、構成データを Git などの中央コード リポジトリに保存できるようになり、複数のユーザーが協力して各アクティビティを確認できるようになります。

Ansible とその広範なモジュール セットの詳細については、そのドキュメントを参照してください。

「 Ansible で自動化する 7 つの毎日のシステム管理タスク」についてわかりやすく解説!絶対に観るべきベスト2動画

Ansible 利用その一歩先へ – Ansible Tower の使い方徹底解説!: レッドハット株式会社岡野 浩史
運用事例から考えるAnsibleの利用方法
https://www.youtube.com/watch?v=8xxlf53YrYU&pp=ygVOIEFuc2libGUg44Gn6Ieq5YuV5YyW44GZ44KLIDcg44Gk44Gu5q-O5pel44Gu44K344K544OG44Og566h55CG44K_44K544KvJmhsPUpB