Ansible Towerによる権限の管理

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

Ansible Towerのユーザー権限管理

前回の記事では、Ansible Towerの導入手順について紹介しました。今回はAnsible Towerの基本的な使い方と、Ansible Towerの特徴となるユーザー管理機能について紹介していきます。

はじめに、AnsibleとAnsible Towerの扱い方や考え方の違いについて、簡単に説明します。

Ansibleの仕組み

Ansibleの仕組み

Ansibleは操作したい内容をPlaybookに記述して、対象となるサーバーを操作することを目的としたツールです。単純に言えば、「Inventory Fileで指定された操作対象に向けて、Playbookに書かれた操作を実施する」というシンプルな機能を提供しています。そのため、複数ユーザーで使用することへの考慮はあまりありません。

一方Ansible Towerでは、複数のユーザーや組織単位でのAnsibleの利用を前提としています。

複数ユーザーによる利用を前提にしたAnsible Tower

複数ユーザーによる利用を前提にしたAnsible Tower

上記のように、ユーザーや管理者の数、利用したいPlaybookの数が増えると、それらを適切に管理する必要があります。

Ansible Towerでは、OrganizationやInventory、Projectなどの枠組みを設定し、それらを簡単に適用するためにJob Templateとして登録することで、実行したいJobを1クリックで実行することができます。

Ansible Towerが提供する枠組みでユーザーやPlaybookを管理

Ansible Towerが提供する枠組みでユーザーやPlaybookを管理

このように複数のユーザーを適切に管理するため、Ansible Towerにはさまざまな機能が用意されています。Ansible Towerを用いることで、Playbookを複数のユーザーで使用するというだけではなく、どのユーザーがどのPlaybookを利用できるかを割り当てたり、いつ操作したかを確認したりすることができるようになります。また、大規模な複数の組織を管理するためのマルチテナント機能を備えています(前回はBasic Editionライセンスでの登録方法をご紹介しましたが、マルチテナント機能を利用するためにはStandard以上のライセンスが必要です)。

一方で、ユーザー管理のためAnsible Towerではさまざまな概念や用語を用いる必要があり、少し複雑になっています。

Ansible Towerで使われる概念や用語の例

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~TO4TD1~TD2TR1~TR2
大阪(Osaka)OO1~OO2OD1~OD2
名古屋(Nagoya)NO1~NO2ND1~ND2

東京、大阪、名古屋の3拠点があり、それぞれに運用、開発、研究の部署があります。各ユーザーは、拠点の頭文字と部署の頭文字からTO(Tokyo Operator)、OD(Osaka Developer)+数字でユーザー名を付与しています。別途、東京の運用部署には、拠点をまたがった管理者であるAdminがいるものとします。

組織とユーザーの一覧

組織とユーザーの一覧

それでは、上記の環境を構築していきます。

ユーザー環境の構築と権限管理

Organizationの作成

権限管理の中で最も大きな概念となる「Organization(組織)」は、SettingsのOrganizationsから作成します。今回の例では「東京」「大阪」「名古屋」がOrganizationとなります。

Organizationの作成

Organizationの作成

作成されたOrganization

作成されたOrganization

Teamの作成

組織の下に「Team(チーム)」を作成することができます。今回の例では「運用」「開発」「研究」がTeamに相当します。

Teamの作成

Teamの作成

Team作成後の全体図

Team作成後の全体図

Userの作成

続いて「User(ユーザー)」を作成します。UserはTeamに所属させるような形でまとめて管理することもできますし、Organizationに直接所属させて扱うようにもできます。Userの作成時に、User Typeを選択することで権限を管理することができます。

Userの作成

Userの作成

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

Userまで作成した全体の構成図

Userまで作成した全体の構成図

操作対象の設定

Inventoryの作成

組織の作成が終わりましたので、続いてその組織で操作する対象としてInventoryを設定します。Inventoryには、Playbookによる操作の対象となるサーバーなどを登録します。

Inventoryの作成

Inventoryの作成

ここまでに作成した要素

ここまでに作成した要素

引用元: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実行時の認証は省略できます。

Credentialの作成

Credentialの作成

Projectの作成

Projectでは、主にPlaybookに関する情報を登録します。今回のように、PlaybookがAnsible Towerを実行しているサーバー上にある場合は、SCM TypeとしてManualを選択し、Playbookのあるディレクトリを指定します。その他にも、GitやSubversionを選択することも可能で、その場合は選択に応じたPlaybookの所在を指定します。

Projectの作成

Projectの作成

日立ソリューションズ
インフラ系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 Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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