0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてAnsibleを使ってみた④ ロール

Posted at

前回の記事

Ansibleロールとは

今回はAnsibleのロールを試してみます。
私の中でロールというとAWSのIAMロールやVMwareのロールをイメージしてしまい
権限をセットしてアカウントに付与するものみたいなイメージがありますが
Ansibleでのロールはプレイブック内のタスク細分化みたいな感じです。
例えば前回作成した以下のプレイブックの場合で見てみます。

- hosts: all
  vars:
    sname: httpd
  tasks:
    - name: httpインストール
      yum:
        name={{sname}}
        state=present
    - name: serviceスタート
      service:
        name=httpd
        state=started
    - name: FW無効化
      service:
        name=firewalld
        state=stopped

このプレイブックではタスクとして以下の3個があります。

  • httpdのインストール
  • httpdサービスのスタート
  • FWの無効化

これをロールで細かく分けて作成することができます。
イメージとしてはこんな感じですね。
image.png

まぁぶっちゃけこのサンプルテストブックでは大したことやっていないので
分けるメリットが無いのですが実際に業務等で使用する場合は使えそうですね。
例えば

  1. 責任分界点が明確になる
  2. 関連する動作やアクションだけでまとめることにより記述ミスが減る(インストールだけのロール等)
  3. 2できれいにまとめていればレビューもやりやすい
  4. メインプレイブック側で呼び出すロールを選ぶことで用途に合わせたプレイブックを作成できる

上手くロール側の設計をしておけば柔軟に使えそうですね。

ロールを使って動作を試してみる

前回試したhttpdインストール、サービス起動、FW停止の
プレイブックをロールを使った形にして動作を試してみます。
/home/workのディレクトリを作業ディレクトリとして作成しています。

  • コマンドで実行するプレイブック

/home/work/main.yml

- hosts: all
  roles:
    - install
    - service
    - fw
  • httpdインストールするロール

/home/work/roles/install/tasks/main.yml

---
- name: httpインストール
  yum:
    name: httpd
    state: present
  • httpdサービスを起動するロール

/home/work/roles/service/tasks/main.yml

---
- name: serviceスタート
  service:
    name: httpd
    state: started
  • FWを停止するロール

/home/work/roles/fw/tasks/main.yml

---
- name: FW無効化
  service:
    name=firewalld
    state=stopped

↓の二つの書き方はどちらでもよいみたい
name: firewalld
name=firewalld

ツリーコマンドで表示するとこのようになります。

image.png

デフォルト設定ではロールの名前はmain.ymlとする必要があり
フォルダもロール名/tasks/main.ymlにする必要があるようです。

実行

上手くいきました
image.png

2回目

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?