PR

Ansible Towerによる権限の管理

2017年7月27日(木)
平原 一帆
複数のユーザーによる使用を前提としたAnsible Towerでの権限管理の方法を紹介する。

Ansible Tower権限管理の詳細

さて、これでPlaybookを実行するためのほとんどの要素が揃いました。あとはJob Templateにこれまでの情報を設定していくのですが、現時点で、下記のPermissionの設定が行われていません。ここで一度立ち止まって、Ansible Towerの権限管理について再度整理したいと思います。

残すはPermissionの設定

残すはPermissionの設定

ユーザーの権限管理については、「ユーザーの作成」の項目で触れたUser Typeによって、System AdministratorやNormal UserといったTypeを設定しました。この時の設定では、「新しくInventoryやProjectを作成する権限があるか?」ということを設定しています。Normal Userでは、InventoryやProjectを作ることができません。下記の画像は、Normal UserがProjectを作成しようとした場合の例です。値は入力できますが、作成ボタンを押すと権限不足でエラーが返ってきます。

Normal UserがProjecttを作成しようとした場合のエラー

Normal UserがProjecttを作成しようとした場合のエラー

この「作成の権限」であるUser Typeという権限のほかに、各Projectなどへの「参加の権限」であるPermissionsを設定することができます。ユーザーを作成したら、そのユーザーの参加可能な権限の一覧であるGranted Permissionsを確認することができます。ユーザーを作成した直後には、このGranted Permissionsには何も表示されていません。下記は、作成したばかりの「TO1(Tokyo Ops 1)」ユーザーの権限です。

作成したユーザーのGranted Permissionsを確認

作成したユーザーのGranted Permissionsを確認

ProjectなどからPermissionが設定されていないため、ユーザー作成時に指定したOrganization参加の権限のみが表示されています。この状態のまま、Projectのページに移動しても、TO1ユーザーの使用できるProjectは表示されません。

初期状態ではSystem Administoratorで作成したユーザーでも使用できるProjectはない

初期状態ではSystem Administoratorで作成したユーザーでも使用できるProjectはない

ここで一旦Adminとしてログインし、Tokyo ProjectというTokyoユーザーを対象としたProjectを選択して、詳細設定からPermissionsを設定してみます。TO1とTD1というユーザーにUse権限を与えます。

ProjectへのPermissionをユーザーに付与

ProjectへのPermissionをユーザーに付与

その後、改めてTO1ユーザーのGranted Permissionsを確認すると、Projectへの権限が付与されています。InventoryやJob Templateについても、Projectの場合と同様にPermissionを設定することができます。

Projectへの権限が付与された状態

Projectへの権限が付与された状態

TO1ユーザーにProjectへの権限が付与された状態で、改めてProjectのページへ移動してみます。

Projectへの権限があるので、Projectが表示されている

Projectへの権限があるので、Projectが表示されている

今度は参加権限が付与されているため、Projectが表示されています。これで表示されているProjectを利用することができます。

繰り返しとなりますが、Normal Userには参加権限はあっても作成権限を持たないため、この状態で改めて新規にProjectを作成する場合には作成権限であるSystem Administrator権限が必要となることに注意してください。なお、参加権限の付与の際には、Roleと呼ばれるAdmin/Update/Useのような権限を選択することができます。これは参加権限のあるProject内のみでの役割であり、Normal Userに特定のProjectの管理を任せたい場合などには、Adminの役割を付与することで、Normal UserにProject管理の権限を委譲することができます。

Project参加権限付与の際にはRoleを指定できる

Project参加権限付与の際にはRoleを指定できる

Permissionsの付与はTeam単位での登録が可能なので、Userの数が多い場合はTeamを利用したほうが良いでしょう。今回は説明を割愛しますが、Userの数が多い場合にTeamとしてまとめて扱えるのと同じようように、Inventoryの設定時にHostの数が多い場合には、Groupとしてまとめて扱うこともできます。少し紛らわしいですが、Userの複数管理にはTeam、Hostの複数管理にはGroupを用いることになります。

ここまでに作成した要素

ここまでに作成した要素

引用元:http://docs.ansible.com/ansible-tower/latest/html/userguide/organizations.html

Job Templateの作成と権限範囲の確認

Job Templateの作成

これまでの手順で、Jobを実行するための準備が整いました。これまでに設定した情報を用いて、Job Templateを作成します。Projectを選択すると、Projectで指定したディレクトリのPlaybookを選択できます。

Job Templateの作成

Job Templateの作成

今回の環境では、下記3パターンのPlaybookをすべてのOrganizationで実行できるようにしていきます。

Playbook

PlaybookPlaybookの説明
make_new_vm対象にVMを作成する。必要時にその都度実行するPlaybook
alive_monitor対象を死活監視する。1時間に一度実行するPlaybook
backup_log対象のログをバックアップする。1日に一度実行するPlaybook

実際のOrganizationごとのJob Template名は下記のようになります。

Job Template名

地域\所属VMの作成死活監視ログバックアップ
東京(Tokyo)Tokyo_make_new_vmTokyo_alive_monitorTokyo_backup_log
大阪(Osaka)Osaka _make_new_vmOsaka_alive_monitorOsaka_backup_log
名古屋(Nagoya)|Nagoya_make_new_vmNagoya_alive_monitorNagoya_backup_log

Job Templateに対しては、Scheduleを設定することができます。VMを作成するなどの適宜実行する必要のあるPlaybookもあれば、死活監視やバックアップなど定期的に自動実行したいPlaybookもあり、これらをScheduleにより指定することができます。Scheduleは、毎時/毎日/毎週というような設定の他に、「特定の日時」のように柔軟に指定することができます。下記の例では毎日0時を設定しています。

Scheduleの設定例

Scheduleの設定例

Job Templateと権限範囲

作成したJob Templateを確認します。管理者から確認すると、すべてのOrganizationのJob Templateが確認できます。

作成したJob Templateの確認

作成したJob Templateの確認

1日経過した場合のJob Statusは下記のようになります。すべてのOrganizationのPlaybookが実行されており、死活監視については1時間おき、バックアップについては1日に1度実行されていることが分かります。

1日経過後のJob Status

1日経過後のJob Status

一方で、Tokyoのユーザーとしてログインした場合、付与された権限の範囲でしかJob Statusが確認できないことが分かります。

Job Statusが見られるのは、付与された権限の範囲に限られる

Job Statusが見られるのは、付与された権限の範囲に限られる

正しく権限管理を行うことによって、必要なユーザーに必要な環境を提供することが可能になります。

まとめ

今回の記事では、Ansible Towerによる権限管理についてご紹介しました。紹介したように、Ansible Towerではさまざまな権限設定が可能となっています。今回紹介したProjectへのPermissionsの参加権限付与と同じように、OrganizationやInventoryに対してもPermissionsの設定が可能となっています。今回の記事を通して、Organizationによるマルチテナントの管理やユーザーの権限管理を行うことで、組織的にAnsible Towerを利用できることが確認いただければと思います。

次回は、Ansible Towerによるクラウド管理の一例についてご紹介いたします。

  • Ansibleは、Red Hat, Inc.の米国およびその他の国における商標または登録商標です。
  • OpenStackRの文字表記とOpenStackのロゴは、米国とその他の国におけるOpenStack Foundationの登録商標/サービスマークまたは商標/サービスマークのいずれかであり,OpenStack Foundationの許諾を得て使用しています。日立製作所は,OpenStack FoundationやOpenStackコミュニティの関連企業ではなく、また支援や出資を受けていません。
日立ソリューションズ
インフラ系OSSを中心に、新技術・新製品の組み合わせ評価及びソリューション開発支援に従事。現在は主にOSSクラウド技術の評価・情報展開を実施している。Open Standard Cloud Association (OSCA™)、OSSコンソーシアム クラウド部会などでも活動中。

連載バックナンバー

運用・管理技術解説
第10回

Ansible Towerのクラウド連携機能による効率化を目指す

2017/9/26
Ansible Towerが備えるクラウド連携機能を用いることで、Playbookやユーザーの管理を効率良く行えることを紹介する。
運用・管理技術解説
第9回

Ansible Towerによる権限の管理

2017/7/27
複数のユーザーによる使用を前提としたAnsible Towerでの権限管理の方法を紹介する。
運用・管理
第8回

Ansibleの機能を拡張するAnsible Tower

2017/4/18
好評の連載「注目の構成管理ツールAnsibleを徹底活用する」の追加コンテンツとして、Ansible Towerを取り上げる。

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています