1
0

作成したVMをAnsibleで初期設定まで自動化してみたい(仮想化技術に触れてみよう)

Last updated at Posted at 2024-08-16

はじめに

VM作成や初期設定を理解できるようになってきましたが、
もっと自動化して楽できるようになりたいなと考えていたところ、
Ansibleという構成管理ツールがあることを知ったので実際に触っていきたいと思います。

今回はコントロールノードと呼ばれる遠隔操作をするサーバと
管理対象ノードと呼ばれる操作される側のサーバの2台を用意しています。

以降は下記の名称で呼称していきます。
コントロールノード・・・HOSTSV (AlmaLinuxをインストール)
管理対象ノード・・・・・TRGTSV (AlmaLinuxをインストール)

目次

①Ansibleを動かすための前準備

HOSTSVとTRGTSVにて、パッケージの更新を行います。

$ dnf upgrade

HOSTSVとTRGTSVにて、pythonのバージョン確認を行います。

$ python3 -V
Python 3.9.18

HOSTSVにて、pipをインストールする

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py
$ pip -V
pip 24.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

HOSTSVにて、Ansibleをインストールする

$ pip install ansible
$ ansible --version
ansible [ core 2.15.12 ]
・・・略

HOSTSVにて、SSHKey作成をして、TRGTSVにKeyのコピーを行います。

$ ssh-keygen      #今回はパスフレーズなし
$ ssh-copy-id alma@192.168.0.***  #TRGTSVのIPアドレス
Number of key(s) added : 1
・・・略

②Ansibleを動かしてみる

ここからは基本HOSTSV(コントロールノード)での作業になります。

まずは作業階層を作成して
インベントリファイルinventory.iniを作成、TRGTSVの情報を書き込みます。

$ mkdir ansible
$ cd ~/ansible
$ vi inventory.ini

[TRGTSV]
192.168.0.*** (TRGTSVのIPアドレス)

:wq

作成したインデントりファイルとpingモジュールでpingの疎通確認を行い、無事成功。

$ ansible -i inventory.ini TRGTSV -m ping

192.168.0.*** | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

初めてAnsibleを動かすことができました。

③Playbookを作成して動かす

次にPlaybookを作成し、任意のコマンドを実行できるようにしてみたいと思います。

手始めに、指定したディレクトリを作成するPlaybookを作成。

$vi playbook.yml

- hosts: TRGTSV
  tasks:
  - name: create direvtory
    file:
       path: /home/alma/ansible/DIR
       state: directory
       owner: alma
       mode: 0777

作成したPlaybook.ymlと前項で作成したinventory.iniを使って動かしまして、
無事Playbookを使ったコマンドを実行をすることに成功。

$ ansible-playbook -i inventory.ini playbook.yml

PLAY [TRGTSV] ***********************************************************************************************

TASK [Gathering Facts] **************************************************************************************
ok: [192.168.0.***]

TASK [create direvtory] *************************************************************************************
changed: [192.168.0.***]

PLAY RECAP **************************************************************************************************
192.168.0.***              : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

試しにもう一度、同じコマンドを実行してみましたが、
冪等性を保つためにディレクトリを作成するコマンド自体は実行されませんでした。
(changedが0のため)

$ ansible-playbook -i inventory.ini playbook.yml

・・・略
PLAY RECAP **************************************************************************************************
192.168.0.***              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

冪等性の働きを、実際に体験すると感動しますね。

④さいごに

今回は、構成自動化のためにAnsibleを触ってみましたが、
動かすところまでは比較的簡単にできることがわかりました。

ただしユーザ追加やNTP設定など、まだまだ自動化して楽したい初期設定作業を簡略化したい部分があるので、少しずつ理解を深めていきたいです。

少なくとも現時点では、ymlの書き方やモジュールへの理解が圧倒的に足りておらず、なかなか正解に辿り着くことが出来ませんでした。

なので次回からは細かく分けながら、ハンズオンしていきたいと思います。

ありがとうございました。

1
0
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
1
0