#はじめに
Ansibleを使用してアプリケーション環境構築を行う際の手順を記述します
サンプルアプリケーションはgithubになります
##前提事項
Ansibleセットアップ手順はREADMEを参照ください
#Ansibleとは
Ansible(アンシブル)はレッドハットが開発するオープンソースの構成管理ツールです
PlaybookというYAML形式のテキストファイルに定型業務をタスクとして記述します。
それらをAnsibleが実行することで様々な処理を実現できます。
詳細はAnsibleドキュメントを参照ください
#アプリケーション環境構築(Ansible)
##アプリケーション環境構築イメージ
Ansibleを使用したアプリケーション環境構築イメージは以下のとおりです。
##Ansibleのディレクトリ構成
Ansibleのディレクトリ構成は以下のとおりです。
各ファイルはpypeach_playbookを参照ください
/ansible_playbook
│ app_server.yml # サーバplaybook
│ inventory # インベントリ
│ site.yml # マスタplaybook
│
├─group_vars
│ └─app_server
│ server.yml # サーバ共通変数
│
└─roles
├─account
│ ├─tasks
│ │ main.yml # アカウント作成タスク
│ └─vars
│ main.yml # アカウント作成変数
│
├─apache
│ ├─tasks
│ │ main.yml # Apacheインストールタスク
│ └─vars
│ main.yml # Apacheインストール変数
│
├─jenkins
│ ├─tasks
│ │ main.yml # Jenkinsインストールタスク
│ └─vars
│ main.yml # Jenkinsインストール変数
│
├─mysql
│ ├─tasks
│ │ main.yml # MySQLインストールタスク
│ └─vars
│ main.yml # MySQLインストール変数
│
└─python
├─tasks
│ main.yml # pythonインストールタスク
└─vars
main.yml # pythonインストール変数
###サーバplaybook
サーバ接続先や実行タスク(roles)を定義します
app_server.yml
- hosts: app_server
remote_user: "{{ remote_user_name }}"
become: true
roles:
- account
- python
- mysql
- apache
- jenkins
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
hosts | サーバ接続先を指定します インベントリと値を合わせます |
remote_user | サーバ接続時のユーザを指定します 変数はgroup_varsディレクトリ内のサーバ共通変数に定義します |
become | suコマンドの実行を許可します ※pythonインストール時にスイッチユーザを行うために指定します |
roles | 実行するタスクを指定します |
###インベントリ
リモートサーバのホスト名やIPを定義します
inventory
app_server:
hosts:
192.168.33.11
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
app_server | サーバ名を指定します サーバplaybookと値を合わせます |
hosts | サーバ接続時のホスト名やIPを指定します |
###マスタplaybook
サーバplaybookを定義します。サーバに応じてroleを変える場合は複数のサーバplaybookを定義します。
site.yml
- import_playbook: app_server.yml
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
import_playbook | インポートするサーバplaybookを指定します |
###サーバ共通変数
サーバplaybookで使用する変数を定義します。
group_vars内のディレクトリ名はサーバplaybookと合わせます
server.yml
###各タスク実行
アプリケーション環境構築を行うためのタスクの詳細は以下を参照ください
項目 | 内容 |
---|---|
アカウント作成 | グループやユーザ追加等を行うます |
Pythonインストール | ユーザにPython及び各モジュールのインストールや設定を行います |
MySQLインストール | MySQLパッケージのインストールやユーザ・DB作成を行います |
Apacheインストール | Apacheインストールや設定変更を行います |
Jenkinsインストール | Jenkinsインストールや設定変更を行います |
#参考情報