LoginSignup
0
1

More than 5 years have passed since last update.

初めてのAnsible(8章:ロール:プレイブックのスケールアップ)

Posted at

「初めてのAnsible」を読み進めながらのメモ

前掲
初めてのAnsible(1章:イントロダクション)
初めてのAnsible(2章:Playbook:始めてみよう)
初めてのAnsible(3章:インベントリ:サーバーの記述)
初めてのAnsible(4章:変数とファクト)
初めてのAnsible(7章:複雑なPlaybook)

ロール

  • Ansibleでplaybookを複数のファイルに分割するための仕組み
  • playbookをシンプルに記述し、再利用しやすくできる!
  • 1つ以上のホストに割り当てるもの
    • 例:データベースサーバとして動作するホストにdatabaseというロールを割り当てる

ロールに関連づけられるファイル群

パス 説明
roles/role_name/tasks/main.yml タスク群
roles/role_name/files ホストにアップロードされるファイル群
roles/role_name/templates Jinja2のテンプレートファイル群
roles/role_name/handlers/main.yml ハンドラ群
roles/role_name/vars/main.yml オーバーライドすべきでない変数群
roles/role_name/defaults/main.yml オーバーライドできる変数群
roles/role_name/meta/main.yml ロールに関する依存対象の情報

ロールを探す場所

  • playbookが置かれているディレクトリのrolesディレクトリ
  • システム全体にわたるロールは /etc/ansible/roles

playbook中でのロールの割り当て

playbook中でrolesセクションを置き、ロールのリストを指定すればよい

- name: role example
  hosts: webservers
  pre_tasks:
    - shell: echo 'hello'
  roles:
    - { role: example_role, app_port: "{{ app_default_port }}" }
  tasks:
    - shell: echo 'still busy'
  post_tasks:
    - shell: echo 'goodbye'

上記の例では、ホストwebserversに対してロールexample_roleを割り当てている

また、ロール呼び出しの際に{{ }}で変数を渡すことも可能

この変数が vars/main.ymldefaults/main.yml ですでに定義されていた場合には渡された変数でオーバーライドされる

pre_tasks / post_tasks

ロールの呼び出し前後に何らかのタスクを実行したい場合に利用

依存ロール

  • あるロールの依存する1つ以上のロールを指定できる
  • 指定された依存対象のロールがまず実行されることを保証

roles/role_name/meta/main.yml で以下のように指定

dependencies
  - { role: ntp, ntp_server=ntp.ubuntu.com }

Ansible Galaxy

コマンドラインで一発。

$ ansible-galaxy install role_name
  • デフォルトでは/etc/ansible/rolesにインストールされる
  • インストール先を指定する場合には -p path/to/roles オブションを利用すればよい
0
1
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
1