富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

【初心者エンジニア向け】IaCで自動化入門(Ansible編)

皆さん、こんにちは!
富士通クラウドダイレクトの中の人Sです!

今回は、中小企業のエンジニア・情シス担当者向けに、Infrastructure as Code(以降IaC)への入り口としてAnsibleを使ったインフラ構築の自動化手順を解説してみたいと思います!

Ansibleでサクッといい感じにインフラ構築しているイメージ図


Infrastructure as Code(IaC)とは?
Infrastructure as Code(IaC)」とは、サーバーやネットワークをはじめとしたインフラの構成をプログラムのようにコード化し、その構築や管理を自動化する手法のことです。

昨今、情報インフラ基盤としてクラウドの活用が進んでいます。
しかし、クラウドの大きなメリットの一つである、インフラ構築の自動化については思ったほど進んでいないのが実情です。

Infrastructure as Code(IaC)が注目される理由
サーバー構築を行う場合、ネットワークの設定・ミドルウェアのインストール・ユーザーアカウントの作成など、さまざまな作業が必要です。特に、物理のサーバー構築においては、こうした作業は人間が手作業で行っていました。
運良く先輩が「構築手順書」を残してくれていれば、それを参考に作業をすることができます。
往々にして、「手順書」は残されていない・あっても古いというケースが発生するわけで、いずれにせよ手作業で行う以上、その工数は大きくなりますし、人的なミスも発生しがちです。

クラウドのような仮想化基盤ならば、そういった構築作業を自動化しやすいのですが、クラウドにおいても手順書ベース(もしくは脳内手順書)の手作業による構築が行われているのが現実です。

昨今、クラウドの普及とともにソフトウェアの開発を高速化する取り組み(アジャイルなど)が進んでいますが、開発基盤の構築も以前より高速化が求められるようになっています。
また、日本におけるIT人材不足の深刻化によりインフラ構築に習熟したエンジニアの確保も困難となっています。インフラ構築がソフトウェア開発プロジェクトにおけるボトルネックになってしまうケースも・・・

そういった事情もあって、ようやく日本企業も重い腰を上げてInfrastructure as Code(IaC)に取り組まざるを得なくなっています。

ここでは、クラウドを利用しているが、いまだに手順書ベースの構築しか行ったことがないエンジニア向けに、Ansibleを教材に「IaC」の入り口に立っていただくお手伝いをしたいと思います。

Ansibleとは
そもそもAnsibleって何?というお話ですが、一言で説明するとレッドハット社(Redhut)が開発するオープンソースの構成管理ツールです。
github.com

YAML形式で記述されたAnsibleの設定ファイル(Playbook)を実行すると、サーバーなどのITリソース構築・設定はもちろんソフトウェアのインストールや設定などを自動で行ってくれる便利なソフトウェアです。

類似のツールに「chef」や「puppet」などがあります。
これらのツールに比べてAnsibleはプログラミングの知識があまりない人でも直観的に扱いやすいという大きなメリットがあると言われています。

Ansible超入門(自宅サーバー環境編)
小規模なインフラ構築ならば、手作業でやってしまった方が早い(気がする)ため、あえて手間がかかる(学習コストも含め)自動化を行うメリットは無いと判断されることも多いです。
それでも、自動化を行った方がいい理由は、一度やってしまえば長期的に時間の短縮やミスの削減につながるからです。

ここでは、自宅に適当な物理サーバー環境がある人を対象向けにAnsibleのインストールと簡単なお試し手順を解説します。

1.仮想化環境の構築(Virtualbox)
2.Ansibleをインストールする
3.Ansibleの設定を行う
4.Playbookを作成する

こういう流れに沿っていきます。

適当なLinuxサーバーに、無料で使える仮想化ソフトVirtual boxをインストールします。

仮想サーバーを2台立てて、コントロールノードにAnsibleをインストールして、ターゲットノードにWebサーバーを作成する想定です。

通常は提供元のRedhatのAppStreamからパッケージをインストールしますが、正直PIPからインストールする方が無難だそうです。

1から4までの手順は下記の動画を参考にしてください。

www.youtube.com

正直なところ、設定に多少の手間はかかるのも事実です。

Ansible超入門(FJcloud-V/ニフクラ編)
「もっと簡単な方法を教えてくれ!」という声が聞こえてきましたので、より簡単な方法もご紹介します。

FJcloud-V/ニフクラの場合、ニフクラ用(FJcloud-VのOEM元)のAnsibleのモジュールがGithubで公開されているので、それを使えば環境構築は早いです。

その前に、FJcloud-V/ニフクラの環境がないんだが?という人はこちらで2ヶ月無料で特に制限なくお試しできます。

この記事を読めば、お試しの利用手順がわかります。
blog.pfs.nifcloud.com

FJcloud-V/ニフクラのアカウントが用意できたら、下記のブログ記事の通りにやるだけ。
https://blog.pfs.nifcloud.com/ansible_cloudserver_buildblog.pfs.nifcloud.com

この記事では、サーバーを作成するだけでなく、ファイアウォールやロードバランサーの設定も同時に行なったり、さらにソフトウェアのインストール(nginx)も行うPlaybookのサンプルも掲載されています。

- hosts: nifcl_hosts
  name: set up server
  user: root
  gather_facts: true

  tasks:
    - name: install ntp
      yum:
        name: ntp
        state: present
    - name: Check NTP service
      service: name=ntpd state=started
    - name: install epel-release repository
      yum:
        name: epel-release
        state: present
    - name: install nginx
      yum:
        name: nginx
        state: present
    - name: start nginx
      service:
        name: nginx
        state: started

これが、実際のFJcloud-V/ニフクラでnginxをインストールするPlaybookです。
自動化と言ってもやってることが視覚的に分かるのがAnsibleのいいところです。

こういうPlaybookを実行するには、コマンドラインで

ansible-playbook -I hosts nginx.yml

こういうのを実行するわけです。
コマンドを間違ったところでエラーが返ってくる程度ですので、Playbookの記述さえ間違ってなければ誰が実行しても同じ結果になるはずです。
つまり冪等性を担保できるのも自動化のメリットです。

このブログ記事を読むと、冪等性を意識することでインフラ運用の安定化を目指すということの意味がよくわかるはずです。
tech.fjct.fujitsu.com


まとめ
Ansibleを活用したインフラ構築の自動化について、少しでもご理解いただけたでしょうか?
これまでのお話を箇条書きでざっくりまとめてみました。

・Ansibleは環境構築までに少々手間がかかる
・Ansibleは一度環境を構築してしまえば意外と簡単
・自動化はサーバーの台数が少ないと効果が実感しづらい
・属人化を防いだり人的ミスを減らす(冪等性の担保)ために活用できる

ぜひ、みなさんもIaCにチャレンジしてみましょう!

最後に宣伝です。
FJcloud-V無料トライアル実施中!
ぜひ、この機会に国産クラウドFJcloud-Vをお試しください。
こちらをクリック↓↓↓↓↓↓↓