Ansibleで環境構築を自動化する!②
はじめに
くーばねてすを倒すために今回はNode.jsをやっつけないといけなくなったのでNode.jsの設定をデーモン化したものをAnsibleで自動化するために色々調べた(^^)/!
概要
■Ansibleで環境構築を自動化するには
■①SSHの設定
■②ターゲットノードで設定を行い内容を手作業で確認する
■playbook特徴
■③手作業工程の手順をもとにplaybookを作成する。(コントロールノードで作成)
■④ターゲットノードにplaybookを実行する。
をまとめた(^^)/
①まではAnsibleで環境構築を自動化する!①にまとめた。
■②ターゲットノードで設定を行い内容を手作業で確認する
ターゲットノードで設定を行い内容を手作業で確認する。
今回はターゲットノードにNode.jsとyarnとforeverをインストールして、yarnでhttpモジュールをインストール、スクリプトをforeverでデーモン化したい!
ターゲットノードにnvmを利用してNode.jsをインストールする。
↓ノードバージョンマネージャー (nvm) をインストールしてnvm を有効化する。
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ . ~/.nvm/nvm.sh
Node.jsをインストールする。
$ nvm install node
確認
$ node -v
v15.13.0
$ npm -v
7.7.6
Node.jsをインストールするとnpmもインストールされる。
Yarnをインストールする。
$ curl -o- -L https://yarnpkg.com/install.sh | bash
$ yarn -V
yarn install v1.22.5
foreverをインストールする。
$ yarn add forever
$ yarn -v
1.22.5
作業用ディレクトリを作成し移動する。
$ mkdir nodetest
$ cd nodetest
ディレクトリをnodejs配下に置く。
$ yarn init
スクリプトを作成する。
$ vim server.js
作成したスクリプトを簡易的にテストする。
$ node server.js
成功したらforeverでスクリプトをデーモン化する。
$ forever start server.js
確認できたらデーモン化解除
$ forever stop server.js
設定した手順と内容を確認して問題なければ、手作業工程の手順をもとにAnsibleのplaybookを作成する。
コントロールノードのAnsible作業ディレクトリにplaybook専用ディレクトリを作成し、そこにターゲットノードの処理内容を指定するためのplaybookを作成していく。作業内容によって複数のplaybookを作成して管理していく。
■playbookの特徴
playbookとは実行したい処理を記述するYAML形式のファイルだ。
Playbookの中身はターゲットノードの基本設定を記述する部分と、ターゲットノードに適用する処理内容を記述する部分に分かれる。
playbookを記述するとその内容はターゲットノードにおいて冪特性が保たれる。(常に同じ状況が保たれる)
処理内容を記述する部分においては tasks:以降に記述し、構成内容を管理する各モジュールを使用して内容を記述する。モジュールによって同じ名前でもパラメータの意味が異なるので意味をちゃんと理解する。
↓モジュール一覧
必須項目は赤い文字で required と書かれている。
userモジュール
コマンドモジュール
ファイルモジュール
グループモジュール
yumモジュール
serviceモジュール
playbookの記述例を見てみる。
↓参考↓
↓はApache最新版をインストールしてコンフィグファイルの書き換えと、PostgreSQL最新版をインストールしてサービスを起動するといった内容が記述されている。
---(↓に基本設定を記述する。この状態は常に保たれる)
- name: webサーバーセットアップ
hosts: webservers
remote_user: root
tasks: (↓に処理内容を記述する)
- name: Apache最新バージョンインストール
yum:
name: httpd
state: latest
- name: apache configファイルを書き込む
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
---
- name: PostgreSQLセットアップ
hosts: databases
remote_user: root
tasks:
- name: postgresql最新バージョンインストール
yum:
name: postgresql
state: latest
- name: postgresqlを開始する
service:
name: postgresql
state: started
まとめ
続く!次はplaybook倒す!!(^^)!
Discussion