😏

Ansibleで環境構築を自動化する!②

2021/04/06に公開

はじめに

くーばねてすを倒すために今回は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:以降に記述し、構成内容を管理する各モジュールを使用して内容を記述する。モジュールによって同じ名前でもパラメータの意味が異なるので意味をちゃんと理解する。
↓モジュール一覧
https://docs.ansible.com/ansible/2.9_ja/modules/modules_by_category.html
必須項目は赤い文字で required と書かれている。

userモジュール
コマンドモジュール
ファイルモジュール
グループモジュール
yumモジュール
serviceモジュール

playbookの記述例を見てみる。
↓参考↓
https://docs.ansible.com/ansible/2.9_ja/user_guide/playbooks_intro.html#playbooks-intro
↓はApache最新版をインストールしてコンフィグファイルの書き換えと、PostgreSQL最新版をインストールしてサービスを起動するといった内容が記述されている。

playbook記述例
---(↓に基本設定を記述する。この状態は常に保たれる)
- 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