Ansible Towerによる権限の管理
Ansible Towerのユーザー権限管理
前回の記事では、Ansible Towerの導入手順について紹介しました。今回はAnsible Towerの基本的な使い方と、Ansible Towerの特徴となるユーザー管理機能について紹介していきます。
はじめに、AnsibleとAnsible Towerの扱い方や考え方の違いについて、簡単に説明します。
Ansibleは操作したい内容をPlaybookに記述して、対象となるサーバーを操作することを目的としたツールです。単純に言えば、「Inventory Fileで指定された操作対象に向けて、Playbookに書かれた操作を実施する」というシンプルな機能を提供しています。そのため、複数ユーザーで使用することへの考慮はあまりありません。
一方Ansible Towerでは、複数のユーザーや組織単位でのAnsibleの利用を前提としています。
上記のように、ユーザーや管理者の数、利用したいPlaybookの数が増えると、それらを適切に管理する必要があります。
Ansible Towerでは、OrganizationやInventory、Projectなどの枠組みを設定し、それらを簡単に適用するためにJob Templateとして登録することで、実行したいJobを1クリックで実行することができます。
このように複数のユーザーを適切に管理するため、Ansible Towerにはさまざまな機能が用意されています。Ansible Towerを用いることで、Playbookを複数のユーザーで使用するというだけではなく、どのユーザーがどのPlaybookを利用できるかを割り当てたり、いつ操作したかを確認したりすることができるようになります。また、大規模な複数の組織を管理するためのマルチテナント機能を備えています(前回はBasic Editionライセンスでの登録方法をご紹介しましたが、マルチテナント機能を利用するためにはStandard以上のライセンスが必要です)。
一方で、ユーザー管理のためAnsible Towerではさまざまな概念や用語を用いる必要があり、少し複雑になっています。
引用元:http://docs.ansible.com/ansible-tower/latest/html/userguide/organizations.html
今回の記事では、Ansible Tower公式ドキュメントに掲載されている上記の図を元に、各用語について整理していきます。
それでは、実際にAnsible Towerを用いてユーザー管理機能を試した結果を紹介します。Ansible Towerに存在するOrganization、Team、Groupなどの概念を整理するため、シンプルな組織を作成し、ユーザーごとの権限について確認していきます。具体的にはOrganization、Team、Userを作成した環境で、ある組織のユーザーが環境を操作した場合やPlaybookを実行した場合の実行結果について確認しています。Ansible Towerのユーザー管理機能を理解するための一助となれば幸いです。
今回想定した組織は下記のとおりです。地域ごとにそれぞれの部署があり、そこに所属しているユーザーを表しています。
地域\部署 | 運用(Operator) | 開発(Developer) | 研究(Researcher) |
---|---|---|---|
東京(Tokyo) | TO1~TO4 | TD1~TD2 | TR1~TR2 |
大阪(Osaka) | OO1~OO2 | OD1~OD2 | - |
名古屋(Nagoya) | NO1~NO2 | ND1~ND2 | - |
東京、大阪、名古屋の3拠点があり、それぞれに運用、開発、研究の部署があります。各ユーザーは、拠点の頭文字と部署の頭文字からTO(Tokyo Operator)、OD(Osaka Developer)+数字でユーザー名を付与しています。別途、東京の運用部署には、拠点をまたがった管理者であるAdminがいるものとします。
それでは、上記の環境を構築していきます。
ユーザー環境の構築と権限管理
Organizationの作成
権限管理の中で最も大きな概念となる「Organization(組織)」は、SettingsのOrganizationsから作成します。今回の例では「東京」「大阪」「名古屋」がOrganizationとなります。
Teamの作成
組織の下に「Team(チーム)」を作成することができます。今回の例では「運用」「開発」「研究」がTeamに相当します。
Userの作成
続いて「User(ユーザー)」を作成します。UserはTeamに所属させるような形でまとめて管理することもできますし、Organizationに直接所属させて扱うようにもできます。Userの作成時に、User Typeを選択することで権限を管理することができます。
Ansible Towerで付与できるUser Typeには、すべての操作が可能な「System Administrator」、操作はできませんがすべての閲覧が可能な「System Auditor」、付与された権限の範囲で操作が可能な「Normal User」が用意されています。今回はOperatorをSystem Administratorとして、DeveloperとResearcherをNormal Userとして作成しています。
なお、Ansible TowerのGUIからユーザーを作成する場合は、上に示した画像を見れば分かるように、ユーザー名、メールアドレス、パスワードなどを逐一入力する必要があり、十数人分の入力でも意外と手間がかかります。Ansible TowerのStandard Edition以上であれば、LDAPやAD連携によりUserやTeamを追加することも可能です。
以上により、Organization、Team、Userを用いて想定した組織を作成することができました。
引用元:http://docs.ansible.com/ansible-tower/latest/html/userguide/organizations.html
操作対象の設定
Inventoryの作成
組織の作成が終わりましたので、続いてその組織で操作する対象としてInventoryを設定します。Inventoryには、Playbookによる操作の対象となるサーバーなどを登録します。
引用元:http://docs.ansible.com/ansible-tower/latest/html/userguide/organizations.html
これまでの手順で、ユーザーを含む組織と操作対象を作成しました。このあと実際にPlaybookをJobとして実行するためには、Playbookを使うUserとPlaybookの対象となるInventoryの情報に加えて、Inventoryへの認証情報であるCredentialと、どのPlaybookを使うのかという情報を記載したProjectが必要となります。これらすべてをJob Templateで設定することで、Jobを実行することができます。このJob Templateを作成するために、まだ作成していないCredentialとProjectを作成します。
Credentialの作成
Credentialは、Ansible Towerの操作対象となるサーバーの認証情報などを保持する仕組みです。今回はPlaybookで操作するサーバーを対象とするため、TypeとしてMachineを選択しています。サーバーのログインユーザー名やパスワード、sshキーをCredentialに登録しておくことで、Job実行時の認証は省略できます。
Projectの作成
Projectでは、主にPlaybookに関する情報を登録します。今回のように、PlaybookがAnsible Towerを実行しているサーバー上にある場合は、SCM TypeとしてManualを選択し、Playbookのあるディレクトリを指定します。その他にも、GitやSubversionを選択することも可能で、その場合は選択に応じたPlaybookの所在を指定します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Ansible Towerのクラウド連携機能による効率化を目指す
- Ansibleの機能を拡張するAnsible Tower
- Ansible:さらにPlaybookをきわめる
- Ansible応用編:より実践的なPlaybookを作り上げる
- 構成管理ツールとしてAnsibleを選ぶべき理由
- 開発チームの環境をAnsibleで一括構築しよう
- Ansibleにおいてテストを行う理由
- Red Hat、サーバ設定自動化フレームワーク「Ansible Tower 3.1」リリース
- 実践! AnsibleによるWordPress環境構築
- ITインフラ管理の自動化を成功に導くAnsibleの実力と可能性を探る【後編】