44
はじめての Ansible Tower Ansible Tower の紹介と v3.5 のアップデート 齊藤 秀喜 (@saito_hideki) ソフトウェアメンテナンスエンジニア (Ansible/Tower) 2019/06/05

はじめてのAnsible Tower - Red Hatpeople.redhat.com/kfujii/cc2019/R305S4_RHC_2019_Ansible...Monitoring HashiCorp Vault Logging MonitoringMonitoring Prometheus 14 Ansible Towerとは

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

はじめての Ansible TowerAnsible Tower の紹介と v3.5 のアップデート齊藤 秀喜 (@saito_hideki)ソフトウェアメンテナンスエンジニア (Ansible/Tower)2019/06/05

2

氏名 : さいとうひでき

Twitter: @saito_hideki

所属 : - Software Maintenance Engineer- Ansible Support Team- Ansible organization: https://github.com/ansible- Red Hat K.K.

自己紹介

3

今日お話すること

1. Ansible によるオペレーション自動化

2. その先へ ...

3. はじめての Ansible Tower

4. Ansible Tower v3.5 の変更点 ( 参考資料 )

4

Ansible によるオペレーション自動化

5

Ansible が自動化ツールとして採用される背景

手順書

手作業システム X

システム Y

システム Z 自動化ツール B

スクリプト

自動化ツール A

自動化ツール C

ツールがバラバラ

再利用できない自動化

どの作業もあの人しかわからない・できないどの作業もあの人しかわからない・できない

ブラックボックス化ボトルネック化

ブラックボックス化ボトルネック化

横展開が不可能標準化を阻害

横展開が不可能標準化を阻害 全体の効率低下全体の効率低下

自動化を進めても・・・

ある時点で自動化の推進が袋小路に ...

ネットワーク サーバー ストレージ

スキルセットの違いによる自動化レベル差手順書

手作業

手順書

手作業

6

Ansible によるオペレーション自動化の特徴

SIMPLE POWERFUL AGENTLESS

誰もが読める標準化された自動化言語

多様な制御対象を統一的手法で

自動化

セキュアで信頼性の高い設計

PlaybookPlaybook ModulesModules ArchitectureArchitecture

7

Ansible による自動化の考え方現行の手順を Playbook として置き換え自動化● Playbook は実行可能なパラメータシート兼手順書として利用できる。

設計書 パラメータシート 手順書

設計書 Playbook

作業者 環境

Ansible 環境

8

その先へ ...

9

● 誰もが気軽に自動化に取り組めるシンプルな仕組みであるがゆえに ...

解決

Ansible によるオペレーション自動化の課題 - Playbook

誰が管理しているのか分からない

散在していて再利用しにくい

誰が利用しているのか分からない

PlaybookPlaybook

10

Ansible によるオペレーション自動化の課題 - Modules● さまざまなターゲットに対する操作を自動化できるが ...

解決

利用者まかせの認証情報管理

統一されない実行環境

ModulesModules

11

Ansible によるオペレーション自動化の課題 - Architecture● シンプルなコマンドラインツールであるがゆえの限界も ...

解決

管理されない実行ログ

管理できない実行権限

ArchitectureArchitecture

担保されない実行時の安全性

考慮されない実行環境のキャパシティ

12

はじめての Ansible Tower

13

Ansible Tower の概要 - まずはデモ

1. ダッシュボード

実行結果

Ansible TowerAnsible Tower

CredentialCredential

Login

Notification

Monitoring

HashiCorp Vault

Logging

MonitoringMonitoring

Prometheus

14

Ansible Tower とは

Ansible Tower は、自動化エンジンに Ansible を利用する自動化フレームワークです。 Ansible単独ではカバーしにくい以下の2つの課題を解決します。

Playbook をもっと「容易かつ安全」に管理・実行したい

自動化をもう一歩進めるための「仕組み」がほしい

15

外部の SCM でリポジトリ管理されている Playbook の、特定のリビジョンをTower上にチェックアウトし、それを隔離された環境で安全に実行できます。

Playbook をもっと便利に安全に実行したい (1)

External SCMExternal SCM

Playbook-A

Playbook-B

Ansible TowerAnsible Tower

Ansible

Ansible

実行環境 -A

実行環境 -B

host-0

host-1

host-3

host-2

host-4

Inventory HostsInventory Hosts

GitHub

GitLab

Bitbucket

Insights...etc

16

操作対象となるホストにログインするための認証情報を Tower のデータベースで集中管理できます。 CyberArk などの外部サービスと連携も可能です。

Playbook をもっと便利に安全に実行したい (2)

Ansible TowerAnsible Tower

Ansible

実行環境 host-0

host-1

host-2

Inventory HostsInventory Hosts

Database

Credential vaultCredential vault

CyberArk ConjurSecret Lookup

Microsoft AzureKey Vault

HashiCorp VaultSigned SSH

HashiCorp VaultSecret lookup

CyberArk AIMSecret Lookup

Host の認証情報(Username/Password など )

17

Tower から実行した Playbook の実行結果は、データベースに保存されます。Logstashやなどの外部のロギングシステムに送信することもできます。

Playbook をもっと便利に安全に実行したい (3)

Ansible TowerAnsible Tower

Ansible

実行環境 host-A

host-B

host-C

Inventory HostsInventory Hosts

Database

Logging Logging

loggy

sumologic

splunk

Logstash実行結果

実行結果

実行結果

実行結果

実行結果

18

Tower をマルチノードクラスタ構成にすることで、 Playbook 実行時にスケールアウトさせることができます。

Playbook をもっと便利に安全に実行したい (4)

Ansible Tower ClusterAnsible Tower Cluster

実行環境

Inventory HostsInventory Hosts

実行結果

host-0~9

host-10~19

host-20~29

Playbook-A

Inventory-A

host-0…host-29

10台に分割して実行

Tower-A

Tower-B

Tower-Cジョブスケジューラが

適切に割当

host-0…host-29

19

点在する拠点に配置した Playbook 実行用の踏み台「 Isolated host」を配置し、中央の Tower から踏み台経由で Playbook を実行できます。

Playbook をもっと便利に安全に実行したい (5)

実行環境

Inventory HostsInventory Hosts

実行結果

host-0

host-1

host-2

Ansible TowerAnsible TowerIsolated hostIsolated host

Ansible

実行環境

Playbook-A

host-0host-1host-2

Inventory-A

20

利用者は Tower をWebUIにログインして Playbook の実行などの操作を実施することになります。この操作権限を役割毎に制限することができます。

Playbook をもっと便利に安全に実行したい (6)

21

自動化をさらに一歩進めるための仕組み (1)Ansible Tower は Ansible を利用した、直接的なオペレーションの自動化を実現するだけでなく、 CI/CDなどの、より大きな規模の自動化の枠組みに参加させやすいよう、外部プログラムとの連携を目的とした APIを提供しています。

実行結果

Ansible TowerAnsible Tower

WebUI

REST

API

Provisionin g Callback

host-0

host-1

host-2

Inventory HostsInventory HostsExternal SystemExternal System

User WorkstationUser Workstation

Custom code

Chrome/Firefox

22

自動化をさらに一歩進めるための仕組み (2)Ansible Tower にログインするためのユーザ認証や、 Playbook 実行結果の通知・ログの集約を既存のシステムと連携させることができます。

実行結果

Ansible TowerAnsible Tower

NotificationNotificationAuthenticationAuthentication

Email/IRC/Slack...etcLogin

Notification

LoggingLogging

Logstash,Splunk...etc

Monitoring

LDAP/AD/SAML...etc

Logging

MonitoringMonitoring

Prometheus,Insights

23

Tower のインストール (1)

Ansible Tower のインストールプログラムは Playbook 化されています。>オンライン版 (https://releases.ansible.com/ansible-tower/setup/)

>オフライン版 (https://releases.ansible.com/ansible-tower/setup-bundle/)

> OpenShift版 (https://releases.ansible.com/ansible-tower/setup_openshift/)

インストールガイドは、以下のリンクから参照できます。>インストールガイド (https://bit.ly/2W5DGuW)

>インストールガイド - OpenShift版 (https://bit.ly/2Kb8Ny1)

24

Tower のインストール (2)

インストールの基本的な流れは以下の通りです。

1. インストールプログラムをダウンロードして展開

2. 展開したディレクトリにある inventory ファイルを編集して setup.sh を実行

# ./setup.sh

インストール時に利用した inventory ファイルは、バックアップ&リストアそしてアップグレード時に必要です!大切に保管してください!

25

Tower のバックアップ&リストア

バクアップ&リストアには、インストールに利用したインストールプログラムを利用します。インストールプログラムのディレクトリで、以下の操作を行います。

> バックアップ&リストアガイド (https://bit.ly/2X3qKSy)

> バックアップ

> リストア

# ./setup.sh -r

# ./setup.sh -b

26

Tower のアップグレード

Ansible Towern のアップグレードは、アップグレード対象となるバージョンのインストールプログラムと、インストール時に作成した inventory ファイルを利用します。

アップグレードの実行は、インストールと同様です。

# ./setup.sh

27

Playbook を実行する仕組み

認証情報

Playbookリポジトリ

操作対象ホストリスト

● 認証情報● ホストリスト● Playbook● extra_vars● スライス数 ...etcCredentialCredential

ProjectProjectInventoryInventory

Job TemplateJob Template

JobJob

Ansible

Job Template のインスタンス

実行

28

Playbook の実行 - デモ

1. プロジェクトの作成

2. 認証情報の作成

3. インベントリの作成

4. ジョブテンプレートの作成

5. ジョブの実行

29

Ansible Tower 3.5 の変更点 ( 参考資料 )

30

Ansible Tower のリリースタイムライン

Ansible Tower の現時点 (2019/06/06) での最新版は 3.5 です。アップストリーム版である OSS の AWX にはステーブルリリースが存在しないため、残念ながら AWX と Tower のバージョンはマップできません。

2019/01/03v3.4.0

2019/01/23v3.4.1

2019/03/03v3.4.2

2019/03/26v3.4.3

2019/05/29v3.5.0

31

WebUIの改善

AWX/Tower の利用者から寄せられたフィードバックをもとに、使い勝手が良くなりました

1. ジョブ / テンプレートリスト一覧の情報量が増えました

2. ジョブテンプレート編集画面に「起動」ボタンが追加されました

3. 各オブジェクトのパーミッション割当で「割当済み」のユーザも選択できるようになりロールを追加しやすくなりました

4. ワークフローエディタの「ワークフロービジュアライザ」を閉じる際に未保存の場合は警告ウインドウが表示されるようになりました

32

認証情報の外部システム連携

「認証情報」の各パラメータの値を、外部システムから取得できます。認証情報タイプは以下の通りです。

1. CyberArk AIM Secret Lookup

2. CyberArk Conjur Secret Lookup

3. HashiCorp Vault Secret Lookup

4. HashiCorp Vault Signed SSH

5. Microsoft Azure Key Vault

33

外部モニタリングシステム連携

モニタリング用のメトリクスを提供する APIエンドポイントができました。これにより容易に Prometheus と連携させることができます。

• https://<TOWER_URL>/api/v2/metrics/

これまで同様の機能を提供していた、以下の APIは将来廃止される予定です

https://<TOWER_URL>/api/v2/dashboard/

34

Ansible2.8の新機能の活用

Ansible Tower 3.5 の Playbook 実行環境は Ansible 2.8 です。

1. 拡張可能な Privilege Escalation Plugin が利用できます

2. 一部のインベントリが Inventory Plugin 化されました

1. Google Compute Engine

2. Microsoft Azure Resource Manager

3. OpenStack

4. Ansible Tower

35

Red Hat プロダクト関連

Red Hat のプロダクトに関するアップデートは以下の通りです。

1. コントロールホスト・ターゲットホストともに Red Hat Enterprise Linux 8に対応しています

2. Red Hat Insights との連携機能が強化されました

36

内部的な改修ポイント (1)

たくさんあります。

1. 組織単位でインベントリに登録できるホストの上限を設定できます

2. ジョブテンプレート実行時に --limit で指定できる文字数の制限がなくなりました ( これまでは 1024文字 )

3. スケジュール名をシステムワイドでユニークにする必要がなくなりました(つまり異なるスケジュールを同じ名前で作れます )

4. 通知タイプとして新たに「Grafana」が追加されました

37

内部的な改修ポイント (2)

まだまだあります。

5. カスタム virtualenv のサーチパスを UIから指定できるようになりました

6. ジョブ実行画面に出力される情報が増えました

1. 使用しているカスタム virtualenv の情報

2. ジョブを実行しているインスタンス名

3. artifacts として保持されているパラメータ情報

38

内部的な改修ポイント (3)

さらに続きます。

7. 将来廃止予定の v1 API にアクセスすると警告メッセージが出力されます(Tower 3.5 ではまだ使えます )

8. Tower3.2 で廃止された System Tracking が APIからも削除されました

9. UIのダッシュボードに表示されるジョブグラフで CM update などの暗黙に実行されるジョブがカウントされなくなりました

10.インベントリ APIで返されるフィールドから hosts_with_active_failure などいくつかのパラメータが削除されました

39

内部的な改修ポイント (4)

さらにさらに続きます。

11.Tower 自体の実行環境が、ついに Python3 に移行しました

➔ RHEL7の場合は Software Collections の Python3

➔ RHEL8の場合はシステムがもつ Python3(platform-python)、または通常パッケージでインストールされた Python3 が利用されます

12.コントローラとして Debian/Ubuntu サポートする最後のバージョンです( いまのところ )

40

内部的な改修ポイント (5)

これでおしまい。

13.Isolatedホストも含めた全ての環境での Playbook は ansible-runner によって実行さるようになりました

14.データベースのジョブイベントテーブルの created フィールド用に新たにインデックスが作られました。※ジョブの結果を保存するのに若干のパフォーマンス低下があるかもしれません

15.Tech Preview として IPv6 環境へのインストール対応が入りました

41

まとめ

42

まとめ

Ansible でスモールスタートさせた自動化を、チーム・組織・企業へと広く展開させるために、是非、 Ansible Tower を利用してみてください。

現在、 Ansible を単体で利用する中で障壁となっている技術的な課題を解決することができます。

まずは気軽に体験するところから始めたいという方は、是非、 Ansibleユーザグループが開催している「もくもく会」に参加してみてください。

また、エンタープライズ向けのトライアル版もご用意しています。ご興味があれば、御社担当の CSM/TAM/営業まで是非ご相談ください。

43

Red Hat の取り組み

Red Hat では、 Ansible の OSSユーザコミュニティ活動を支援しています。

Ansible もくもく会では、 Red Hat が提供する体験環境を利用して、 AnsibleやTower のインストール・オペレーションを気軽に体験できます (無料です ) 。

> Ansibleユーザ会 (https://ansiblejp.github.io/)

> Ansibleユーザ会 Slack(https://ansiblejp.slack.com)