お久しぶりです。
最近は緊急事態宣言が終わってからの通勤という名の苦行に疲れ、休みは気分転換にカメラ片手に歩き回ってばかりいる今日この頃です。 前回記事を書いてからかなり間が空いてしまいましたが、その間にやったことのひとつを紹介したいと思います。
それが、Ansibleに入門するための演習リポジトリです。
何が目的?
ズバリ!Ansibleを体感してもらうため、です!
Ansible自体は、Infrastructure as Code(IaC)のためのツールです。
そのため、プロジェクトでの特定の環境を構築するために記述することが多いと思います。その際に特定の環境の構築という目的があるため、インフラ構築にある程度慣れており、またAnsible自体にも慣れている人がまとまった設定群をガッツリ作ってしまうことが多いと思います(Ansibleに限らないとは思いますが、Dockerfileなどに比べるとより複雑で大きくなりがちです)。
これにより、すでにあるものをAnsibleをまだ触ったことがない人が触りにくい状況になります。ちょっといじってみると言う場合にも、複数の設定などを確認していき、全体の把握をしっかり行ってから、といったあとになり、「とりあえず触ってみる」というところのハードルが高い印象があります。
こうした中では初心者はAnsibleのドキュメントを読んでみた程度ではなかなか理解が進まず、結果せっかく設定ファイル化してリポジトリ管理したにもかかわらず、扱えるのが特定の人に偏ってしまうということがおきます。いわゆる属人化です。
このような自体に対し、ステップアップ形式でAnsibleの使い方を体感できる演習を作ることにした、というのがリポジトリを作成した意図になります。
演習をやってみるには、どうすればいいの?
この演習では、簡単に環境を作りなおせるように、Dockerを利用しています。 そのため、前提として、Dockerおよびdocker-composeが利用できるようにしておく必要があります。
- リポジトリをクローンします
- 演習用のダミーのssh鍵を生成するため、
./prepare.sh
を実行します(シェルスクリプトが実行できない環境の場合、.keys
ディレクトリに、ansible_workshop
という名前のSSH鍵をパスフレーズなしで作成すれば大丈夫です)。 - 各演習のディレクトリに移動して、READMEを読みながら、演習をやってみます
どんな環境を想定しているの?
Ansibleは 4.6 を想定しています。作成時点の最新ですが、2.xの後半くらいから基礎部分でいうとそこまで大きな変更は入っていないので、多少バージョンの差があっても学習としては問題ないかと思います。
また、クラウド環境としてよく使われるAWSのEC2上でAmazon Linux 2 の環境構築を想定して、演習で構築を試す環境は Amazon Linux 2 のDockerコンテナとしています。
もちろん他の環境の構築をしたい人もいると思いますが、Ansible自体の学習という点では、Linux環境であれば入門としては十分可能ではないでしょうか?
演習では何をやるの?
演習は以下を用意しています。
Practice01: モジュールを使ってみる Practice02: ファイルの作成と編集をする Practice03: ロールを使ってみる Practice04: インベントリを編集してみる Practice05: 変数を利用してみる Practice06: 条件を利用してみる Practice07: Vaultを利用してみる
基本的な部分を身に着けていけるように、最初はちょっとした設定内のTODOコメントを解消していくところから入るため、初心者でも入りやすくしています。最終的には、機密情報の扱いまでを学んでおくことで、きちんと実際のプロジェクト等での活用ができることを目指しています。
プロジェクトのメンバー向けにやってみたいけど、環境などの中身を変えてやってみたい
MIT Licenseとしているので、使う際に変更などは全く問題ありません。
やってみたよ!というひとは、Twitterでもこちらのブログでもコメントいただけると、作者がめちゃくちゃ喜びます。
ちょっとした注意点
今回、きちんと構築できたか?というのを検証しやすいように、 InSpec を導入しています。
ただこれにより、Ansibleを実行するためのDockerイメージのビルドが少々時間がかかってしまうようになっています。
もしやって見る場合には、先に Practice01 の docker-compose build
の部分を行いながら、READMEを読みすすめる、というのをオススメしたいと思います。
まとめ
今回は、Ansible入門者のための演習用リポジトリを紹介しました。
似たような入門サイトなどもありますが、実際の小規模な設定に自分で手を加えて実行してみる、という体験ができるものは少ないので、Ansibleを体験してみたい人、Ansible初心者メンバーに簡単なところから入門してほしい人などは活用してもらえればと思います。