PC 管理省力化のための Ansible の使い方
小畑 沙生＊

白石 啓一＊＊How to use Ansible to save labor for manage PCs
Saki OBATA and Keiichi SHIRAISHIAbstract
In today's society, almost all organization have a huge number of PCs. It is extremely inefficient to manage
all of these PCs manually. Therefore, it is needed to use a configuration management tool to manage various
PC settings and software. We would like to manage 200 PCs in the Information Infrastructure Center's
computer room with Ansible configuration management tool. In this paper, 4 virtual PCs installed CentOS8
are used as an experimental environment. One virtual PC that Ansible is installed on is a controller, the others
are targets. The controller manage targets with Ansible. Ansible configuration files that is called "Playbook"are shown. These playbooks are for copying files and install software.

Keywords : Configuration Management Tools，Ansible

ニアが手動で複雑なオペレーションを実施するのが，1. 緒言
現代社会では PC で作業を行う企業が数多くあり，各当然のこととして捉えられてきた。例えば，ハードウェ組織で莫大な数の PC を所持している。1000 台の PC をアのセットアップから，OS のチューニング，またミド手作業で管理すると，1 台の PC にかかる時間を 2 時間

ルウェアのクラスタ構築に至るまでが手作業であり，とした場合，“2h×1000=2000h”より 2000 時間，1 日 8一度構築したものを保守期間が切れるまで長期的に利時間の作業時間なら 250 日間の作業時間を要すること用し続けるという塩漬け状態が，よく見られる運用スになる。このことより，PC を手作業で管理するのは非タイルであった。また，記録システムでは，企業の基幹常に非効率である。そこで構成管理ツールを用いて PC系業務やマスタデータを管理する凡用系システムが多の様々な設定やソフトウェア管理等が一括でできるとく，投資対効果に基づいた業務効率化を図ることが主便利だ。

業務とされている。そのため，ウォータフォール型の構成管理ツールとは，処理を自動化するという観点開発プロセスで，信頼性の高いシステムを一度に作りではなく，最終的にマシンを目的の状態にする，とい上げることが重視されていた。さらに塩漬け状態のシ1)う観点で作成されたツールのことである 。構成管理

ステムは，運用管理を行う中で，構成管理と定期的にツールの導入により，攻めの方向，新規サービスの高同期を行っていればよく，手作業での構成管理でも，速投入などができるようになった。このことから，近運用工数の計画範囲に十分に収まる状況であった。

年構成管理ツールの需要が高まっている。従来のオンところが，クラウドの登場により，この管理プロセス

プレミス環境におけるインフラ構築作業では，エンジに大きな影響を与えた。クラウド環境は，仮想化により物理的な制約を排除しただけではなく，
API からの構＊

香川高等専門学校専攻科 電子情報通信工学専攻＊＊

成情報の取得や操作を可能とした。そのため，ネット

香川高等専門学校 通信ネットワーク工学科

ワークやストレージボリュームなどのインフラリソー

165

独立行政法人国立高等専門学校機構香川高等専門学校研究紀要 13(2022)

図 1 構成管理の変化
スを簡単に把握し，調達，変更，削除できるクラウド環

・Oracle Virtual Box: 米国オラクル社が開発し境では，今までのように負担の大きな構成管理が必要た仮想化ソフトウェアパッケージである。本研究なくなった。逆にシステムの構成管理を手動で行ってでは仮想 PC を作成するために使用する 3)。

いては，インフラリソースのライフサイクルの短さか・Ansible: RedHat 社が開発している構成管理ツー

らくる変更頻度の増加により，かえって運用コストをルである 4)。システムオペレーションの自動化を肥大化する可能性がある。

支える Python 製の構成管理ツールである。

そこで，インフラリソースを効率よく管理するため

Ansible を利用することによって，スクリプトやに開発されたのが，システムオペレーションの自動手動で行っていたオペレーションを自動化し，運ツールである。これまでの構成管理の対象は，システ用プロセスを効率化できる。

ムの変更履歴や構成情報そのものであった。しかし，

Ansible は構成管理の自動化に伴う，動的な作業クラウドを活用することで，クラウドプラットフォータスクの実行制御やマルチスレッド処理など多ムに任せることが可能となる。構成管理の役割は，構くの特徴を持っている。主な特徴は，以下の 3 点

成情報を取得して意図する状態にシステムを収束するが挙げられる。

ことだ。つまり，動作しているシステムの状態を管理(1) 設定ファイルの可読性の高さすることが，構成管理ツールの役割となる。構成管理

Ansible では，処理を記述したファイルはの変化を図 1 に示す。このように，クラウドの登場に“YAML”というデータ表現記法で記述される。

よってオペレーションの自動化，さらには構成管理

YAML の構文は，インデントと改行に構造的ツールの実装機能そのものが，構成管理の役割になっな意味を持つ。それさえ把握できれば特別なた。

コーディングスキルがなくても，どのようなChef や Puppet，SaltStack をはじめとする，数多く処理を行っているのか把握することが可能の構成管理ツールが世の中には存在している。今回はだ。Chef，Puppet，saltstack などのほかの構成管理ツール Ansible を用いて仮想環境 PC の管理

構成管理ツールでは，プログラム言語に慣れサーバから管理対象サーバへ mariadb と PHP をインスているメンバーばかりで使用するのであれトールすることを目的とする。
Ansible とはアメリカのば学習コストも低く迅速に共有できるが，複株式会社 RedHat 社の Python 製の構成管理ツールであ雑な処理を書くほどプログラミング経験のる。

ないエンジニアは，理解に時間を要する。可読性の高い YAML での記述は，エンジニアの2. 研究環境

手記学習コストを下げるだけだはなく，複数・CentOS 8: Red Hat Enterprise Linux(RHEL)をもで作業を共有できる環境づくりにも貢献すとに作成された Linux ディストリビューションでる。ただし，Ansible をより効果的に利用すある。CentOS-8.1.1911-x86_64(以下 CentOS 8)をるためなら，可動性の高さを重視しながら属

2)人的なコードを排除することを心掛ける必作成した仮想 PC にインストールする 。

166

小畑沙生 他：PC 管理省力化のための Ansible の使い方

図 2 エージェントレス型のアーキテクチャ的設定変更など，ある特定のオペレーション要がある。

だけを対象にした自動化が主流であった。し(2) エージェントレス構成
Ansible は，構成管理対象サーバに，エージェ

かし Ansible では，デフォルトの機能だけでントソフトウェアをインストールする必要も管理対象レイヤが広く，インフラエンジニがない。Ansible が実行する処理内容は，管ア，アプリケーションエンジニアの隔てなく理サーバから SSH 接続を介して安全に送信，利用できるツールとなっている。さらにマル実行される。管理サーバや構成管理対象のチベンダーのプロダクトもサポートしておサーバに特定バージョンの Python をインスり，ネットワークベンダーから，エンタープトールする必要はあるが，主な Linux ディス

ライズ OS，クラウドリソースまで，あらゆるトリビューションであれば，基本構成として製品をコントロールできるのも魅力である。
・Python も SSH サーバもインストールされてMariaDB: リレーショナルデータベース管理シスいるので追加の作業が不要である。図 2 にテム MySQL をフォークした製品である。最新機能

エージェントレス型とエージェント型の比を取り込んだセキュリティや機能を高めている 5)。

較を示す。

・

PHP: Web サーバの機能を拡張し，動的に Web ペー

通常，構築や運用のオペレーションを行う場ジを生成するために用いられるプログラミング

合，セキュリティ上の観点から作業対象サー言語である。スクリプト言語，軽量言語と呼ばれ，バへは，特定の踏み台サーバからのみ SSH 接

オペレーティングシステム（OS）やアプリケー続を許可する。既存のオペレーションをションソフトの動作や機能などをプログラムのAnsible に移行したとしても，SSH 接続を介形で記述できる 6)。

して，タスクが処理されるため，特別な設定を追加しなくてもよいことが Ansible の利

3. 研究結果とその検討点である。この特徴が，Ansible の導入コス3.1 mariadb

トを下げる要因にもつながる。

(1)構築環境(3) マルチレイヤ対応

VirtualBox に CentOS8 をインストールし，仮想マシ

Ansible はマルチレイヤに対応した構成管理ンを構築した 1,7)。また，Ansible を用いて仮想マシンツールである。従来の構成管理ツールでは，に管理サーバ(IP:10.0.2.4)のhostsファイルを管理対パッチの自動やミドルウェアクラスタの動象サーバ 3 台(IP:10.0.2.5，10.0.2.7，10.0.2.8)に送167

独立行政法人国立高等専門学校機構香川高等専門学校研究紀要 13(2022)

図 3 MariaDB 構築環境図

図 4 MariDB インストール用ロール構成
付 し た 8) 。 Ansible を 用 い て 管 理 対 象 サ ー バ

め，“mariadb-server”をインストールする。inventory(IP:10.0.2.5)に MariaDB をインストールした。構築環

ファイル（図 5）には，インストールしたい管理対象境を図 3 に示す。管理対象サーバ(IP:10.0.2.5)にサーバの IP アドレスを記述する。
本研究では 10.0.2.5

MariaDB をインストールするために 6 個のソースファの仮想 PC にインストールする。

イルを作成した。これらのロール構成を図 4 に示す。
Ansible は，宛先を記載する inventory ファイル，主な[dev]動作を記載する playbook ファイル(図 4 では dev.yml)

10.0.2.5を作成し，実行コマンドを実行し，管理対象を管理する。ここでは inventory ファイル，playbook ファイル

図 5 roles/inventory.ini

だけではなく，tasks ディレクトリ以下に 4 個のファイルにロールを記述し，MariaDB のインストールを行う。

playbook ファイル dev.yml（図 6）では，roles ディロールとは playbook を分割・構成するコンポーネント

レクティブを使用することで，作成した mariadb ローであり，再利用性を高めるものである。

ルを参照している。これで roles/mariadb/tasks に記述したタスクが実行される。また，“become:true”は(2) 構築結果

sudo 権限でタスク実行を行う。sudo に必要なパスワー

コマンド$ dnf module list mariadb

ドは，PASSWORD と伏せている。ここでは，dev.yml にロールに必要なすべての作業を記述せず，作業を tasks

により，管理対象サーバにインストールできる MariaDB

ディレクトリ内に作成した YAML ファイルへ分割してのバージョンを調べた。2021 年 4 月に構築を開始した

記述することで，分かりやすく整理している。

ので，mariadb10.3 をインストールした。本研究では，

mariadb ロールのインストール作業の YAML ファイル

情報基盤センター演習室の PC の Linux 環境を作るたを図 7 に示す。install.yml の“Add repository”タス168

小畑沙生 他：PC 管理省力化のための Ansible の使い方

ク で は yum repositiry モ ジ ュ ー ル を 使 用 し て[ansiblecontrol@localhost roles] $ ansible-playbook/etc/yum.repos.d/配下にリポジトリ定義ファイル-i inventory.ini dev.yml -- diffMariaDB.repo を追加することを示している。実行を終PLAY [dev] *えると，/etc/yum.repos.d/MariaDB.repo が作成され

TASK [Gathering Facts]る。

ok: 10.0.2.5
TASK [mariadb : Add repository] ****

hosts: dev- before: etc yum. repos.d/MariaDB. repo +++ after:

vars:/etc/yum. repos.d/MariaDB, repo 2 -0,0 +1,6 @@ +ansible_become_pass : <PASSWORD>

MariaDB

become: true

mariadb.org/10.3/rhel7-amd64 #gpgcheck = 1 #gpgkey#baseurlroles:=- mariadb+name = MariaDB repo

https://yum.

=

http://yum.

mariadb.org/RPG-GPG-KEY-MariaDB

changed: [10.0.2.5]

図 6 MariaDB インストール用 roles/dev.yml

TASK [Module install mariadb] ******
changed: [10.0.2.5]

name: Add repository

TASK [mariadb : Install mariaDB server] *****

yum_repository:

ok: [10.0.2.5]

name: MariaDB

TASK [mariadb : Start mariaDB service]***description: MariaDB repochanged: [10.0.2.5]

baseurl: http://yum. mariadb.org/10.3/rhel7-amd64

PLAY RECAP***

gpgkey:10.0.2.5:ok

https://yum.

mariadb.org/RPG-GPG-KEY-changed=3

MariaDB gpgcheck: trueskipped=0

name: Module install mariadb

rescued=0 ignored=0

yum:

unreachable=0

gailed=0

図 8 MariaDB インストール用 playbook の実行結果

name: mariadb
state: present

3.2 PHP- name: Install mariadb server(1) 環境構築

yum:

Ansible を用いて PHP を管理サーバ(IP:10.0.2.4)とname: mariadb-server

管理対象サーバ(IP:10.0.2.5)にインストールした。図state: present

3 の MariaDB の 構 成 と 同 様 に 管 理 対 象 サ ー バ

enablerepo: mariadb(IP:10.0.2.5)に PHP のインストールを行った。PHP イ-name: Start mariaDB service

ンストール用のロール構成を図 9 に示す。PHP でもsystemd:

MariaDB と同様に，inventory ファイル，playbook ファ

name: mariadb

イルだけではなく，設定ファイル 2 個を記述し，PHP を

state: started

インストールする。

enabled: yes(2) 構築結果

図 7 MariaDB インストール用

コマンド

roles/mariadb/tasks/install.yml$ dnf module list php
実行コマンドと実行結果を図 8 に示す。“Addにより，管理対象サーバにインストールできる PHP のrepository”タスクに/etc/yum.repos.d/MariaDB.repoバージョンを調べた。2021 年 8 月に構築を開始したのが作成されたことが分かる。図 8 より MariaDB がインで，php7.4 をインストールした。本研究では，情報基ストールできた。

盤センター演習室のPC のLinux 環境を作るため，“phpcommon”, “php-devel”をインストールする。図 10 に
playbook ファイル(dev.yml)を示す。Inventory ファイ

169

独立行政法人国立高等専門学校機構香川高等専門学校研究紀要 13(2022)

図 9 PHP インストール用ロール構成
PowerTools を有効にする。PowerTools はもともとデルは図 5 と同じである。
図 6 では“roles: -mariadb”とすることで mariadbフォルトで無効になっており，EPEL パッケージに必要ディレクトリ内のタスクを実行した。ここでは，な開発ツールが含まれているためこれを有効にする。

“roles:-php”とすることで PHP ディレクトリ内のタ“Install php”で管理対象側でコマンド‟dnf module

スクを実行する。今後， playbook で仮想マシンに gcc

install –y php:remi-{{ php_version }}”を実行してや binutils 等をインストールしていくので，どのタスPHP をインストールする。

クにも対応できる playbook を作成する。同時に実行し“Install Modules”でインストールする PHP モ

たければ“roles:-mariadb -php”のように増やしていジュールを指定する。本研究では，情報基盤センター

けば良い。

演習室の PC と同じ環境にするために“php-common”と“ php-devel ” を 指 定 し て イ ン ス ト ー ル す る 。
“Configure php”で php プログラムの全体的な動作環

hosts: dev

境 を 設 定 す る フ ァ イ ル (php.ini) を 作 成 す る 。

vars:“with_items”の中身を以下に説明する。

ansible_become_pass : <PASSWORD>・

become: true

“mbstring”: PHP でマルチバイト文字を使用できるようにする PHP の拡張モジュールのことで，

roles:mbstring の設定を行うことで，PHP 内で日本語が- php使えるようになる。
図 10 PHP インストール用 roles/dev.yml

・

PHP のインストール用タスクを記述したファイルを・“post_max_size”: POST データの許容最大サイズを設定する。

図 11 に示す。“rpm_key”で RPM(Red Hat Package“upload_max_filesize”: アップロードファイ
ルの許容サイズを設定する。

Manager)パッケージを“state:present”でインストー・ルする。
“Add EPEL Repository”で EPEL レポジトリを“mbstring.language”: デフォルトの言語設定する。

インストール，“Add Remi Repository”で Remi レポジ・トリのインストールを行う。EPEL(Extra Packages for“mbstring.internal_encoding”: 内部文字エンコーディングの変更・確認する。

Enterprise Linux)とは，Red Hat Enterprise Linux や・CentOS で使えるパッケージレポジトリのことである。

“mbstring.encoding_translation”: HTTP 入力変換の設定する。

Remi レポジトリは様々なバージョンの php のパッケー・ジ を 配 布 し て い る レ ポ ジ ト リ で あ る 。“ Enable“mbstring.detect_order”: 文字コードの検出順を指定する。

PowerTolls”で管理対象側でコマンド“dnf config-

図 12 には，PHP のデフォルト値を記述した。図 13 にmanager –set-enableed PowerTools” を 実 行 し て

PHP のインストールのコマンドと実行結果を示す。

170

小畑沙生 他：PC 管理省力化のための Ansible の使い方

rpm_key:state: present
key: https://rpms. remirepo.net/RPM-GPG-KEY-remi2018
rpm key:state: present
key: https://dl. fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8
name: Add EPEL Repository dnt:
name: "https://dl. fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm"state: present
name: Add Remi Repository
dnf:
name: "http://rpms.remirepo.net/enterprise/remi-release-8. rpm
state: present
name: Enable Power Tools
shell:
cmd: dnf config-manager --set-enabled Power Tools
name: Install php
shell:
cmd: dnf module install -y php: remi- {{ php_version }}-name: Install Modules
dnf:
name: ['php-common', 'php-devel']state: present
name: Configure php ini_file:
path: /etc/php.ini section: "{{item. section }}" option: "{{ item. option }}" value: "{{item. value }}"backup: "{{ item. backup }}"with_items:- section: php, option: post_max_size, value: "{{ filesize}}", backup: true } - { section: php, option:
upload_max_filesize, value: "{{ filesize}}", backup: fals
- { section: Date, option: date.timezone, value: "{{ timezone}", backup: false }- { section: mbstring, option: mbstring. Language, value: " language }}", backup: false }-{ section: mbstring, option: mbstring internal_encoding, value: "{{ internal_enco ding }}", backup: false }- { section: _mbstring, option: mbstring.encoding translation, value: "{{ encoding.t ranslation }} ", backup:false }- { section: mbstring, option: mbstring.detect_order, value: "{{ detect_order }}". backup: false }図 11 roles/php/tasks/main.yml[ansiblecontrol@localhost roles] $ ansible-playbook -i inventory.ini dev.yml --diff
PLAY [dev] *****（省略）
before: etc/php.ini content) +++ after: /etc/php.ini (content)
mbstring) mbstring.detect_order = autochanged: (10.0.2.5) => (item={'section': 'mbstring', 'option': 'mbstring.detect_order' 'value': 'auto','backup': False})

図 13 PHP インストール用 playbook の実行結果

171独立行政法人国立高等専門学校機構香川高等専門学校研究紀要 13(2022)

高等専門学校通信ネットワーク工学科卒業研究
論文(2021)--php_version: 7.4
language: Japanesetimezone: Asia Tokyo
internal_encoding: UTF-8
encoding_translation: off
detect_order: auto
filesize: 128M

図 12 roles/php/defaults/main.yml
4. 結論
本研究では，構成管理ツール Ansible を用い，本校の情報基盤センター演習室の PC 管理の省力化を行うことを目的とした。そのために，Ansible を用いて仮想マシンに MariaDB と PHP のインストールを行った。今後は，同様に情報基盤センターの演習室の PC と同じ環境構築を行う。MariaDB と PHP のほかに binutils，openJDK 等のソフトウェアインストールを行う。現在はbinutils のインストールに向けて playbook に記述する内容を考慮中である。
参考文献1)

北山 晋吾ほか, Ansible 実践ガイド第 3 版,インプレス(2019)

2)

CentOS, Download,
https://www.centos.org/download/ (2021)(閲覧日 2020 年 4 月 10 日)

3)

Oracle VM VirtualBox,
https://www.virtualbox.org/ (2022)( 閲 覧 日
2022 年 4 月 10 日)

4)

RedHat, Ansible，https://www.ansible.com/ (閲覧日 2020 年 4 月 16 日)

5)MariaDB Foundation, MariaDB.org,
https://mariadb.org/ (2021)(閲覧日 2021 年 4月 6 日)

6)

PHP,

https://windows.php.net/download/(2022)，(閲覧日 2021 年 10 月 18 日)
7)Tomcky’s blog, [入門・初心者向け]Ansible でMariaDB(MySQL)をインストールして起動するところまで,
https://tomcky.hatenadiary.jp/entry/2019051
3/1557707578 (2019)(閲覧日 2021 年 4 月 6 日)

8)

小畑 沙生, Ansible を用いた演習室 PC の管理作業の省力化～ファイル配布自動化～, 2020 香川172