はじめに
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の書き方やモジュールへの理解が圧倒的に足りておらず、なかなか正解に辿り着くことが出来ませんでした。
なので次回からは細かく分けながら、ハンズオンしていきたいと思います。
ありがとうございました。