More Related Content Similar to Ansible with AWX Similar to Ansible with AWX (20) More from Hideki Saito (17) Ansible with AWX1. Ansible with AWX
~ Move to the next step of IT automation ~
Hideki Saito
Software Maintenance Engineer for Ansible@Red Hat K.K.
2018-07-29
2. Red Hat / Ansible2
• 氏名: 齊藤 秀喜 (さいとう ひでき)
• TwitterID: @saito_hideki
• 所属: Ansible Support Team / Red Hat K.K.
• 仕事: Software Maintenance Engineer
• 趣味: Ansible / Ansible Tower / AWX
自己紹介
Ansible方面からきました
怪しい者ではありません
3. Red Hat / Ansible3
Ansibleを利用した自動化を管理するコントローラ "AWX" を紹介します。
本日のテーマ
本日お話すること:
1. Ansibleによる自動化
2. Ansible + AWX で実現する一歩進んだ自動化
3. デモ (AWX on OpenShift)
5. Red Hat / Ansible5
手作業で行っていたシステム運用の自動化を実現するためのツールです。
Ansibleの特徴を表す3つのキーワード :
1. SIMPLE
๏ 手順書感覚で自動化するオペレーションを記述することができる
๏ 最低限必要なのはInventoryファイルとPlaybookファイルのみ
2. POWERFUL
๏ 同時に複数台のターゲットを操作することができる
๏ モジュールを利用することで、さまざまな操作を自動化できる
3. AGENTLESS
๏ ターゲット側でエージェントを起動させることなく遠隔操作できる
Ansibleで実現できること
6. Red Hat / Ansible
Ansibleの仕組み
Ansibleが管理対象となるリモートホストを操作する方法は大きく3つ。
公式ドキュメントのUsing Ansible(https://goo.gl/bLvNFq)で解説されています。
6
コントロールホスト
ansibleコマンド
ansible-playbookコマンド
(1)SSH
(2)WinRM
(3)API
ターゲットホスト
(2)SSH / WinRM を利用する場合はターゲット上に実行可能プログラムを転送
(1)モジュールから生成した実行可能なプログラムコード
(2)APIを利用するモジュールの場合は
コントローラ上で実行
(3)SSH / WinRM を利用する場合は
ターゲットホスト上で実行
7. Red Hat / Ansible7
Ansibleの仕組み
ネットワーク機器とITサーバでは管理の仕組みが違います。
8. Red Hat / Ansible8
目的、利用者、利用方法を5W1Hで表現すると…
Ansibleで実現する自動化
WHY ITインフラの構成管理業務の品質向上とオペレータの負荷の軽減をめざして
WHO オペレータ自身が
WHEN 日常業務として
WHERE さまざまなシステムの構成要素に対して
WHAT 実施する作業を共通の手法でコード化する
HOW 自動化を共通のツールを利用して実現する
9. Red Hat / Ansible9
Ansibleは、シンプルであることを重要視しているために不足している機能があり
ます。こんな機能があったらいいのになぁ...
次のステップに進むためには...
1. いつ・誰が・どこで・どのようなPlaybookを実行したのか知りたい!
2. Playbookの実行結果をまとめて管理しておきたい!
3. そのPlaybook古くない?
4. 複数のPlaybookをワークフローのように実行したいんだけど...
5. ターゲットホストの認証情報を一元管理したい!
6. コントロールホストのキャパシティをちゃんと管理したい...OOM killerさんが大暴
れしてるの...
7. 他のシステムと連携させたいけどAPIがない...だってただのコマンドだもの
などなど...自動化を進める上で、このような課題が見えてきます。
11. Red Hat / Ansible11
旧Ansible, Inc (2015年に Red Hat が買収)が、商用ソフトウェアとして提供し
ている Ansible Tower のアップストリーム版で、Apache v2ライセンスに基づい
てOSSとして開発が進められています。
AWXの位置付け
分類 アップストリーム エンタープライズ
(レッドハットが提供&サポート)
自動化プラットフォーム
(GUI/REST API/
権限管理/
実行履歴管理など)
AWX Project Ansible Tower
動作エンジン
(コマンド等のコア部分、
モジュール、プラグインなど)
Ansible Project Ansible Engine
12. Red Hat / Ansible12
AWXに関する情報は、以下のサイトから入手することができます。
ユーザガイドや管理者ガイドなどのドキュメント類は、AWX向けとしては存在しません。
Enterprise版であるAnsible Towerのものを参照してください。
★Source Code
➡ https://github.com/ansible/awx
★Install Guide
➡ https://github.com/ansible/awx/blob/devel/INSTALL.md
★User Guide
• https://docs.ansible.com/ansible-tower/latest/html/userguide/index.html
★Administration Guide
➡ https://docs.ansible.com/ansible-tower/latest/html/administration/index.html
★API Guide
➡ https://docs.ansible.com/ansible-tower/latest/html/towerapi/index.html
AWXに関する情報
13. Red Hat / Ansible13
2018-08-16にv1.0.0がリリースされました。
最新版(2018-07-22時点)は、2018-04-28にリリースさらたv1.0.6です。
AWXのリリースタイムライン
’2017-08-16
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.0.4
v1.0.5
v1.0.6
’2017-10-11
’2017-12-14
’2018-02-02
’2018-02-21
’2018-03-27
’2018-04-28
14. Red Hat / Ansible14
ここでは、以下の主要な10機能を紹介します。
AWXが提供する主な機能
1. WebUI / RESTful API / Callback URL 機能
2. ユーザ管理機能(Active DirectoryやGoogle OAuth2などと連携可能)
3. ターゲットホストの認証情報を一元管理するCredential機能
4. AWS / GCP / Azure / OpenStack などと連携可能なDynamic Inventory機能
5. Github / Gitlab などの外部SCM上のPlaybookを取得するための連携機能
6. 複数のジョブ(Playbook)をワークフローとして実行する機能
7. ジョブやワークフローを指定の日時で実行するスケジュール実行機能
8. ジョブの実行結果をIRCやSlackなどに送信する機能
9. ログをlogstashやsplunkなどの外部システムに転送する機能
10.AWXサービスをクラスタ化(HAではなくマルチノード構成)する機能
15. Red Hat / Ansible15
AWXリポジトリをクローンしてから、Playbookを利用してインストール(*)
*) 事前にAnsibleのインストールが必要です
AWXをインストールする
RHEL7系のOSの場合:
# yum install docker python-docker-py
# systemctl enable docker
# systemctl start docker
# git clone https://github.com/ansible/awx.git
# cd awx/installer
# ansible-playbook -i inventory install.yml
16. Red Hat / Ansible16
モダンなWeb Dashboardを利用して操作することができます。
AWXを利用する
17. Red Hat / Ansible17
AWXでオペレーションを自動化する
AWXで自動化を実現するための機能要素は以下の通りです。
18. Red Hat / Ansible18
AWXで外部システムと連携
AWX
Authentication NotificationLogging
IaaS PaaS SCM
API Provisioning Callback
AWXは外部からAPI経由で操作可能。Job TemplateのProvisioning Callbacks
機能を有効化することで、外部からのジョブ起動も簡単に行えます。
19. Red Hat / Ansible19
PlaybookをもとにしてJob Templateを作り、これをJobとして実行します。
AWXの機能要素
機能要素 概要
Organization 全ての機能要素を収容するグループ
Project Playbookを収容するディレクトリ
Credential 操作対象となるホストの認証情報(SSHユーザ・パスワード等)
Inventory 操作対象となるホスト及びホストをグループ化したリスト
Job Template Project(Playbook)/Credential/Inventoryから構成されるジョブ
Workflow 複数のJob Templateから作られたワークフロー
Job Job Template / Workflowの実行単位
User Towerの各機能要素を操作する権限を付与されたユーザ
Team 複数のTeamを所属させたチーム。User同様に権限を付与可能
20. Red Hat / Ansible
FinishedLaunch "Job template"Grant permissions to "User"
Create "Organization"
Add "User" to "Team"
Create "Host" in "Inventory"
Create "Project"
Create "Team"
Create "Inventory"
Add "Host" to "Group"
Setting up "Job template"
20
基本的な操作の全体の流れ
Create "User"
Create "Credential"
Create "Group" in
"Inventory"
Create "Job template"
21. Red Hat / Ansible21
Organizationを作成する。
基本的な操作の流れ(1)
AWXの管理情報は
Organization単位で管理される
22. Red Hat / Ansible22
Userを作成する。
基本的な操作の流れ(2)
23. Red Hat / Ansible23
AWXにログインして操作するためのユーザには、ユーザタイプの中から1つを選択
して割り当てることができます。
基本的な操作の流れ(2) - ユーザの種類
ユーザタイプ 概要
Normal User
(標準ユーザ)
一般ユーザとして、AWXのさまざまなオブジェクト(Project / Credential /
Inventory / Job template など)に設定された権限にしたがって操作を実行する。
System Auditor
(システム監査者)
AWXシステムの監査を目的として、全てのオブジェクトに対する読み込み権限をデフ
ォルト状態で持っている。
System Administrator
(システム管理者)
AWXシステム管理者として、全てのオブジェクトの管理者権限を持っている。
24. Red Hat / Ansible24
Teamを作成する。
基本的な操作の流れ(3)
25. Red Hat / Ansible25
UserをTeamに所属させて、適切な役割を設定する。
基本的な操作の流れ(4)
26. Red Hat / Ansible26
Credentialを作成する
基本的な操作の流れ(5)
27. Red Hat / Ansible27
現時点(v1.0.6)でプリセットされている認証情報タイプは以下の通りです。
基本的な操作の流れ(5) - 認証情報の種類
認証情報 用途
Amazon Web Services AWSとの連携に必要な認証情報(ACCESS_KEY/SECRET_KEY/STS_TOKEN)
Ansible Tower Ansibleのモジュールから利用できるTower/AWXの認証情報
Google Compute Engine GCEとの連携に必要な認証情報(サービス用アカウントのEmailアドレス等)
Insights Insightsと連携するための認証情報(USERNAME/PASSWORD)
Machine (必須) SSH/WinRMでターゲットホストに接続するために利用する認証情報
Microsoft Azure Resource Manager Azure Resource Managerとの連携に必要な認証情報(SUBSCRIPTION_ID等)
Network Ansibleから操作可能なネットワーク機器への接続に利用する認証情報
OpenStack OpenStackの認証情報(OS_USERNAME/OS_PASSWORD/OS_AUTH_URL等)
Red Hat Cloud Forms CloudFormsの認証情報(URL/USERNAME/PASSWORD)
Red Hat Satellite 6 Satellite 6.3以降との連携するための認証情報(URL/USERNAME/PASSWORD)
Red Hat Virtualization RHEV(Ovirt)と連携するための認証情報(URL/USERNAME/PASSWORD)
Souce Control Github/Gitlab等のSCMと連携するための認証情報(USERNAME/PASSWORD等)
Vault Ansible Vaultを利用するために必要な認証情報(PASSWORD)
VMware vCenter vCenterとの連携に必要な認証情報(HOST/USERNAME/PASSWORD)
28. Red Hat / Ansible28
Inventoryを作成する
基本的な操作の流れ(6)
29. Red Hat / Ansible29
Inventory内にホストを作成する
基本的な操作の流れ(7)
30. Red Hat / Ansible30
Inventory内にグループを作成する。
基本的な操作の流れ(8)
31. Red Hat / Ansible31
Inventory内に作成したグループにホストを登録する。
基本的な操作の流れ(9)
32. Red Hat / Ansible32
AnsibleのInventoryファイルと同様に、AWXのInventoryにはHostとGroupをを
定義します。varsパラメータも定義可能です。
基本的な操作の流れ(9) - GroupとHost
Inventory
{vars}
host-A
{vars}
host-B
{vars}
group-A
{vars}
group-B
{vars}
host-C
{vars}
33. Red Hat / Ansible33
Projectを作成する。
基本的な操作の流れ(10)
Playbookが配置されているGithub/Gitlabなどの
外部SCMのリポジトリを指定する
34. Red Hat / Ansible34
Job templateを作成する。
基本的な操作の流れ(11)
Projectに指定したリポジトリ内の
Playbookを指定する
35. Red Hat / Ansible35
Project / Credential / Inventory / Job Template に対する権限を設定する。
基本的な操作の流れ(12)
36. Red Hat / Ansible36
AnsibleのInventoryファイルと同様に、AWXのInventoryにはHostとGroupをを
定義します。varsパラメータも定義可能です。
基本的な操作の流れ(12) - 権限(Role)
オブジェクト 権限
Project
• Admin => 使用権限 / 編集権限 / SCMのリポジトリの同期権限
• Use => 使用権限
• Update => SCMリポジトリの同期権限
•
Credential
• Admin => 使用権限 / 編集権限
• Use => 使用権限
Inventory
• Admin => 使用権限 / Dynamic Inventoryの同期権限 / Ad Hocコマンド実行権
限
• Use => 使用権限
• Update => Dynamic Inventoryの同期権限
• Ad Hoc => Ad Hocコマンド実行権限
Job template
• Admin => 実行権限 / 編集権限
• Execute => 実行権限
37. Red Hat / Ansible
Project-A
Credential-A
Inventory-A
Job template-A
role:use
role:use
role:use
role:execute
37
Project / Credential / Inventory / Job template などのAWXの各オブジェ
クトに対する操作権限(role)は、ユーザ毎に割り当てられますが、これを複数のユー
ザを所属させたチームに対して行うことで一括設定が可能です。
基本的な操作の流れ(12) - 権限の割当
Team-A
foo
bar
baz
38. Red Hat / Ansible38
Job Templateを実行する。
基本的な操作の流れ(13)
39. Red Hat / Ansible39
Jobの実行結果を確認する。
基本的な操作の流れ(14)
ansible-playbookコマンドの実行結果は
Live Eventとしてリアルタイム出力
ansible-playbookコマンドの実行結果を
テキストファイルとしてダウンロード可能
41. Red Hat / Ansible41
デモ内容
1. 組織を作成する
2. プロジェクトを作成する
3. ユーザを作成する
4. 認証情報を作成する
5. インベントリを作成する
6. ジョブテンプレートを作成して実行する
7. ジョブの実行結果をダウンロードする
8. OpenShift上のpodを増やしてクラスタ化する
43. Red Hat / Ansible43
まとめ
Ansibleは、シンプルで強力な自動化ツールです。しかし、シンプルであるために、あ
えて実装していない、さまざまな機能があります。
AWXは、Ansibleを自動化のエンジン部分として利用することで、自動化の根幹とな
るPlaybookなどの仕組みをシンプルなまま維持し、これに加えてモダンなWeb UIや
APIを提供することで、人だけではなく外部システムからも利用することを想定した機
能を補完しています。
みなさんも、AWXを利用して、Ansibleで実装してきた自動化をもう一歩進めてみま
せんか?