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

4 min read読了の目安(約3900字

はじめに

くーばねてすを倒すために今回は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

まとめ

眠いので続く!