64
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エニプラAdvent Calendar 2024

Day 10

初めてAnsible使った人が、初めてAnsibleを使う人に向けて説明する

Last updated at Posted at 2024-12-09

今年度、業務でansibleを使用することが度々ありましたが、
私自身は若手エンジニアであり、ansibleを触るのは人生で今年が初でした。
得た経験のアウトプットのためにも、この記事でansibleの知見についてまとめます。





Ansibleについて

Ansibleは、サーバーやネットワーク機器などの管理を自動化するためのツールです。
yaml形式で記述することにより可読性が高く、学習も容易(らしい)です。



Playbookについて

Ansibleでやりたいことを、「Playbook」というファイルに書きます。
Playbookは「指示書」みたいなもので、あるサーバに「このソフトをインストールして、設定を変更する」という作業を実施したい場合、その手順をPlaybookに記載します。



インベントリファイルについて

インベントリファイルは、Ansibleが「どのコンピュータ(サーバー)に対して操作をするか」を指定するリストです。
Ansibleで管理するコンピュータの名前やIPアドレス、グループ分けなどを設定します。



業務で学んだこと

以下の3項目について、業務で関わることが多かったので説明いたします。

・ansible実行用サーバと配布されるサーバの関係
・インベントリファイルの書き方
・ローカルホストにPlaybook流す方法



1. Ansible実行用サーバと配布されるサーバの関係

Ansibleを使う場合、主に以下2つのサーバーが関係します。

Ansibleを実行するサーバ(管理用サーバ)
Ansibleを実行するサーバ。このサーバにAnsibleがインストールされていて、管理対象のサーバ(配布サーバ)に対して設定やコマンドを送信する
配布されるサーバ(管理対象サーバ)
これらはAnsibleで設定や操作を行う対象のサーバ。AnsibleがSSHで接続して操作します。


ざっくりまとめると、Ansibleを利用するためには、以下の2点の準備が必要です。

  • Ansibleを実行するサーバ(管理用サーバ)と配布されるサーバ(管理対象サーバ)がSSH接続を行えること
  • Ansibleを実行するサーバ(管理用サーバ)にPlaybook資材が格納されていること


またAnsibleを使用するには、基本的に管理用サーバ(Ansibleを実行するサーバ)にAnsible自体をインストールする必要がありますが、管理対象サーバ(操作対象のサーバ)にはAnsibleを実行するための特別なソフトウェアやエージェントをインストールする必要はありません。



2. インベントリファイルの書き方

インベントリファイルは、Ansibleが操作するサーバーをリスト化したファイルです。このファイルに管理対象サーバのIPアドレスやホスト名、グループを定義します。

つまり「Aシステムのサーバ群に対して、一括でユーザー作成を行いたい!」といった時、
Aシステムのサーバ群のIPアドレスやホスト名をインベントリファイルに記載することで、想定通りのサーバ達に向けてユーザ作成を行うAnsibleを実行することができます。



基本的なインベントリファイルの例を作成してみました。
インベントリファイルは通常、/etc/ansible/hostsや指定したフォルダに保存します。

# インベントリファイルの例

# グループ1: Linuxサーバ
[Linux]
web-server1 ansible_host=192.168.1.10
db-server1 ansible_host=192.168.1.11

# グループ2: Windowsサーバ
[Windows]
win-server1 ansible_host=192.168.2.10
win-server2 ansible_host=192.168.2.11

# 共通の設定(すべてのホストに適用される)
[all:vars]
ansible_ssh_user=root               # Linuxサーバ用のSSHユーザー
ansible_ssh_private_key_file=/path/to/private_key  # SSH接続に使う秘密鍵のパス


3. ローカルホストにPlaybookを流す方法

Ansible管理用サーバとAnsible管理対象サーバが同一の場合、
つまりAサーバで「Aサーバにユーザ作成するPlaybook」を実行したい場合には、インベントリファイルに他サーバと同様にIPアドレスなどを記載するだけでは上手くいかないことがありました。

ローカルホスト(Ansibleを実行しているサーバー)にPlaybookを流すには、インベントリファイルにそう指定する必要があったようです。


①インベントリファイルで指定

インベントリファイルにlocalhostを追加し、ローカルホストを指定する方法です。

# インベントリファイル(例: /etc/ansible/hosts)

[local]
localhost ansible_connection=local

ansible_connection=localを指定することで、ローカルホストでAnsibleがSSHを使わず直接操作できるようになります。



②コマンドラインで指定

上記とは別の方法になりますが、コマンドラインでlocalhostを指定して、直接Playbookを実行することもできるようです。

ansible-playbook -i localhost, playbook.yml

このコマンドでは、インベントリファイルを指定する代わりに、-i localhostを使ってローカルホストを指定しています。



まとめ

  • Ansible管理用サーバ管理対象サーバは、Ansibleが管理対象サーバに設定を適用するために連携する関係です。
  • インベントリファイルは管理対象サーバの情報を記述するファイルで、グループ分けやホストの追加ができます。
  • ローカルホストにPlaybookを流す方法は、インベントリでlocalhostを指定するか、コマンドラインで直接指定する方法があります。


参考資料

https://e-words.jp/w/Ansible.html
https://www.miraiserver.ne.jp/column/about_ansible/

64
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?