😬

Ansibleのuserモジュール、yumモジュール、serviceモジュール

2021/04/07に公開

はじめに

くーばねてすを倒すために今回はNode.jsをやっつけないといけなくなったのでNode.jsの設定をデーモン化したものをAnsibleで自動化するために色々調べた(^^)/!自動化するにはAnsibleのモジュールを倒さなければならないことが分かった。はぁはぁ

概要

■Ansibleのモジュールとは
■モジュールの種類
■playbookの構成
■userモジュール
■yumモジュール
■serviceモジュール

をまとめた(^^)/!

■Ansibleのモジュールとは

https://docs.ansible.com/ansible/2.9_ja/user_guide/modules_intro.html
Ansibleのモジュールとはコマンドラインまたは Playbook で使用可能なコードを表す。
Ansibleでは、ターゲットノードで各モジュールを実行し、実行結果が戻り値として取得される。
ほとんどのモジュールは、key=value 方式で引数を スペースで区切って指定する。
(command/shell モジュールなどは除く)
playbookのモジュールで設定された内容は冪等性が保たれる。現在の状態が目的の最終状態と一致するように実行される。(それだけではなくてもちろん追加のタスクを実行するモジュールも存在する)

■モジュールの種類

↓公式ドキュメントを参考にして各モジュールを勉強してみようと思う!!(^^)!
https://docs.ansible.com/ansible/2.9_ja/modules/modules_by_category.html#modules-by-category

■playbookの構成


基本情報部分にはターゲットノードの指定や、アクセスするユーザーの指定をする。
↓基本情報部分↓
|パラメータ|意味|
| --- | --- | --- |
|name|playbookの概要を記述。日本語OK|
|remote_user|コントロールノードからターゲットノードにアクセスするユーザーを指定する。Ansible-playbookコマンドを実行するユーザーであれば不要。|
|hosts|Inventoryファイルで作成したグループを指定することができる。全てのグループに適用させたいときはallと指定する。|
|become|ターゲットノードでrootユーザーになるかどうか。trueと指定する。|
処理情報記述部分にはターゲットノードにたいする処理内容をモジュールを使用して記述する。
↓処理情報記述部分↓
|パラメータ|意味|
| --- | --- | --- |
|tasks|処理内容はtasks以下に入れ子で内容を記述する。|
|name(先頭)|処理内容の説明を記述(日本語OK)|
|yum|yumモジュール。yumモジュールでの処理内容は以降入れ子で記述する|
|yum/name|yumモジュールでインストールするパッケージ名を指定する。|
|yum/state|yumモジュールではpresentでは導入,latestなら最新版に更新,adsentなら削除を行う|
|template|templateモジュール。Jinja2 というテンプレートエンジンでテンプレートファイルを利用してファイルを生成してリモート送信することができる|
|template/src|テンプレートのパスを指定する。相対パスまたは絶対パス|
|template/dest|送り先のリモートのファイル名を指定する|

では各モジュールを勉強する!

■userモジュール

userモジュール(公式ドキュメント)
※Windowsがターゲットノードの場合は、win_userモジュールを使用する。
|パラメータ|意味|
| --- | --- | --- |
|name|※必須項目。ユーザーの名前を指定する。|
|password|ユーザーのパスワードを設定する。|
|state|present:ユーザアカウントを作成する。absent:ユーザアカウントを削除する。デフォルト値はpresent|
|remove|"state: absent"と併せて、ホームディレクトリを削除するかどうか指定する。no : 削除しない。yes : 削除する|
|home|ユーザのホームディレクトリを指定する。|
|group|ユーザーが追加されるグループを指定する。|
|append|yes:指定されたグループにユーザーを追加。no:指定されたグループにのみ追加され,他のすべてのグループからは削除される。デフォルトはno|
|createhome|ホームディレクトリが存在しない場合に作成する。|
|shell|ユーザのシェルを指定する|
|uid|ユーザーIDを指定|
userモジュールの記述例↓ちなみに下の二つは同じ内容だ!このように記述できる。

userモジュール記述例
  tasks:
    - name: ユーザーのセットアップ
      user:
        name: suidou
        group: wheel, testuser
	append: yes
userモジュール記述例
  tasks:
    - name: ユーザーのセットアップ
      user: name=suidou group=wheel,testuser append=yes

■yumモジュール

yumモジュール公式ドキュメント
yumパッケージマネージャーを使用してパッケージを管理するモジュール。インストール、アップグレード、削除、一覧表示を実行する。
このモジュールはPython2でのみ機能する。
|パラメータ|意味|
| --- | --- | --- |
|name|※必須項目。パッケージ名/URLを指定を指定する。『state=latest』かつ『name=*』を指定した場合は『yum -y update』を実行する。|
|state|present/installed:インストール。latest:最新バージョンがインストール。absent/removed:削除|
|enablerepo|リポジトリのインストール/更新操作のために有効にするリポジトリを指定する|
|enable_plugin|インストール/更新操作を有効にするプラグイン名を指定する。|

yumモジュール記述例
  tasks: 
    - name: 最新版のApacheをインストールする
      yum:
        name: httpd
        state: latest

■serviceモジュール

serviceモジュール公式ドキュメント
serviceモジュールはターゲットノードのサービスを管理する。sytemctl や service コマンドなどによるサービスの管理(起動、停止、再起動削除など)をする。
Windowsがターゲットノードの時はこちら

|パラメータ|意味|
| --- | --- | --- |
|name|※必須項目。サービスの名前を指定する。|
|state|started: サービスを開始する。stopped: サービスを停止する。restarted: サービスを再起動する。reloaded: サービスを再読み込みする|
|sleep| サービスを再起動する場合に、stopとstartコマンドの間で指定時間スリープします。 動作の悪いinitスクリプトを回避するのに役立つ。|
|enabled|起動時にサービスを自動起動するかどうか。デフォルトはyes。noはしない|
|arguments|コマンドラインの追加の引数を指定する。|

serviceモジュール記述例
  tasks:
    - name: Apacheが起動していなければ起動する。
      service:
        name: httpd
        state: started

まとめ

眠いので続く!

Discussion