こんにちは、東京本部のごっちです。
東京本部のインフラ関連の情報発信として、今回はクラウドが叫ばれる中で急速に注目を浴び始めた【Ansible】とは何なの? 何ができるの?と思われている方に概要をご紹介します。
①Ansibleとは・・・?
Ansibleは、レッドハット社が開発をしているオープンソースソフトウェアです。
※Ansibleをコアとして、機能面を強化した Ansible Tower は有償製品です。こちらは別の機会にまた紹介をしようと思っています。
<Ansible Tower>
https://access.redhat.com/products/ansible-tower-red-hat
Ansible とは?を簡単に説明すると、"あるべき状態"を構築するツールです。playbookと呼ばれるファイルに、Python形式で命令を記述することで実行します。
同じようなプロビジョニングツールである、Chef や Puppet と比べるとかなりシンプルな構成になっています。
例えば、サーバAはパラメータが"ONであること"、"1であること"といった内容を記述することで、Ansibleがパラメータを"ON"や"1"に設定します。
その際の動作は、以下のような流れになります。
1) Ansibleが、playbook に記載の値が対象のパラメータに設定されているかCheck!
2) Checkして値が異なっていれば、playbook に記載された値を反映
もし、2)で値が同じであれば、Checkのみを行いAnsibleは変更をしません。
製品構成は以下の通り。
<マネージャ側> LinuxOS, Ansible
<エージェント側> 特になし
※Ansibleが動作するための前提パッケージを除くと、エージェント側には特に製品がいりません。エージェントレスなのも、Ansibleの特徴です。
ただし、Windowsを対象にした場合はエージェントに相当するパッケージが必要になってきます。
②ツールだと、プログラム言語が読めないといけない?
Ansibleは、Pythonで記述するツールではありますが 基本的に人間が読みやすい形式なので、Pythonが読めるに越したことはありませんが、読めないからと言ってまったくわからないレベルではありません。
例を記載すると、こんな感じになります。
- name: Gather all registered esxi ←概要。わかればなんでもOK
local_action: ←実行方法を記載
module: vmware_vm_facts ←利用するモジュールを指定
hostname: "{{ esxi_hostname }}" ←外部に記載している変数リストからホスト名を取得
username: "{{ esxi_user }}" ←外部に記載している変数リストからユーザ名を取得
password: "{{ esxi_pass }}" ←外部に記載している変数リストからパスワードを取得
簡素なコードの例をもってきましたが、どうでしょうか。こちらは、Ansibleの情報を取得する機能を利用した、ESXiの構成情報を取得するモジュールです。
このように、開発言語が得意じゃない!という方でもやりたいことを実現し、パーツを置いていくことでツールを組み立てることができます。
インストール方法や設定についての具体的な話は、また次回にご紹介したいと思います!
では最後に、Ansibleを導入・構築するときの簡単な項目を記載しておきます。備忘録のレベルではありますが。。。
●年を越したらきっと忘れてる備忘録!
・Ansibleで何をしたか?
1) VMデプロイ、設定変更
・良かった点
1) AnsibleでVMデプロイを簡略化
2) GUIを経由しないVMのパラメータ操作
3) VMに関するノウハウがなくても、Ansibleのパラメータ変更を変えるだけでOK
・苦労した点
1) 自動化のスコープ定義
2) 作成の時間をどれだけ取れるか
3) VM作成の前提モジュール整理
4) 必要なサーバの整理
5) VMの展開に必要なVMテンプレートの整理
6) 運用ポリシーをどう設定するか
7) SSHユーザに何を使うか
それでは、またお会いしましょう!
東京本部 ごっち
▼
このように東京本部ではインフラチームが存在しており、日々サーバーの提案や構築、 今後はクラウドにも挑戦しようとしている部隊がいます。
気になる方はご連絡ください!!
東京本部 さとさん より