開発プロセス

Ansible あんしぶる

IaC構成管理自動化PlaybookエージェントレスRed Hat
Ansibleって何?

簡単に言うとこんな感じ!

Ansibleは「複数のサーバーにまとめてSSHでログインして、同じ設定を一気にやってくれる」自動化ツールだよ。「このサーバー50台全部にNginxをインストールして設定を適用して」みたいな作業を、1つのYAMLファイル(Playbook)に書いて実行するだけでOKなんだ!エージェント不要で使いやすいのが特徴!


Ansibleとは

Ansibleとは、Red Hatが開発・提供するサーバーの設定管理・ソフトウェアデプロイ・タスク自動化のためのIaCツールです。2012年にMichael DeHaanがOSS公開し、2015年にRed Hatが買収しました。最大の特徴はエージェントレスであること。対象のサーバーに専用エージェントをインストールする必要がなく、SSHと標準Pythonさえあれば動作します。

AnsibleはYAMLで記述したPlaybookという手順書で操作を定義します。Playbookは人間が読みやすく、プログラミングの経験が少ない運用担当者でも書けます。実行内容(タスク)はModuleとして提供されており、パッケージインストール・ファイルコピー・サービス起動・クラウドリソース操作など数千種類のModuleが公式・コミュニティで提供されています。

Ansibleは冪等性(べきとうせい)を重視します。「Nginxをインストールせよ」というタスクは、すでにインストール済みの場合は何もせず変更なしと報告します。これにより、同じPlaybookを何度実行しても安全です。


AnsibleとTerraformの役割分担

項目AnsibleTerraform
主な用途サーバーの中の設定(ミドルウェア・アプリ・設定ファイル)クラウドリソースの作成(VM・VPC・S3等)
アプローチ手続き的(順番にタスクを実行)宣言的(望ましい状態を定義)
エージェント不要(SSH経由)不要(APIを直接呼び出し)
状態管理ステートレス(状態ファイルなし)ステートフル(tfstateで管理)
典型的な使い方VM作成後の設定・ミドルウェアセットアップVM・ネットワーク・DBの作成

歴史と背景

  • 2012年2月:Michael DeHaanがAnsibleをGitHubで公開。シンプルさとエージェントレスが支持を集める
  • 2013年:Ansible Inc.設立。エンタープライズサポートの提供開始
  • 2015年10月:Red HatがAnsible Inc.を1億5000万ドルで買収
  • 2016年〜:Ansible GalaxyにコミュニティRoleが蓄積。エコシステムが急成長
  • 2019年:Red Hat Ansible Automation Platformとして企業向け製品を強化
  • 2022年〜:Event-Driven Ansible(イベントトリガー自動化)の機能が追加

AnsibleのシンプルなPlayBook例

# webservers.yml: Webサーバーグループへの設定Playbook
---
- name: Webサーバーにnginxを設定する
  hosts: webservers          # インベントリで定義したホストグループ
  become: true               # sudo権限で実行

  tasks:
    - name: nginxをインストール
      ansible.builtin.package:
        name: nginx
        state: present       # インストール済みなら何もしない(冪等性)

    - name: 設定ファイルをコピー
      ansible.builtin.copy:
        src: nginx.conf
        dest: /etc/nginx/nginx.conf
        mode: '0644'

    - name: nginxを起動・自動起動設定
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

関連する規格・RFC

規格・RFC番号内容
Ansible GalaxyAnsibleのRole・Collection(再利用可能な自動化コンテンツ)の公開レジストリ
Ansible LintPlaybookのベストプラクティスチェックツールのOSS

関連用語

  • IaC(Infrastructure as Code) — AnsibleはIaCの代表的な実装ツールの一つ
  • Terraform — クラウドリソース作成に特化したIaCツール。Ansibleと相補的に使われる
  • CI/CDパイプライン — AnsibleのPlaybook実行をパイプラインで自動化する
  • Docker — Ansibleの導入により、DockerをサーバーにインストールしてコンテナをデプロイするPatternも
  • GitOps — AnsibleのPlaybookをGitで管理し、変更を自動適用する運用へ発展できる
  • SRE — 運用作業のToil削減にAnsibleを活用するSREの実践
  • カオスエンジニアリング — 障害後の復旧シナリオをAnsibleで自動化することも可能