Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Interact 2019 -OP01: ひよこでもわかるAnsible Ansibleによる...
Search
hiyokotaisa
June 29, 2019
Technology
3
2.9k
Interact 2019 -OP01: ひよこでもわかるAnsible AnsibleによるAzure構成管理
2019年6月29日に開催されたInteract 2019のスライド資料です。
hiyokotaisa
June 29, 2019
Tweet
Share
More Decks by hiyokotaisa
See All by hiyokotaisa
JTF2020 C1: テクニカルサポートエンジニアという働き方
hiyokotaisa
2
15k
RHTN - 5分でわかるAnsible TowerのSSO
hiyokotaisa
0
260
RHTN: Ansible 2.8 x Windows
hiyokotaisa
1
4k
Twitter転職でなってみたグローバルサポートエンジニア
hiyokotaisa
1
2.2k
インフラ勉強会にみるコミュニティへの「貢献」
hiyokotaisa
2
3k
Red Hat Tech Night 2018: Ansible x Network Ansibleで実践するネットワーク自動化
hiyokotaisa
1
1.3k
AnsibleではじめるWindows自動化
hiyokotaisa
7
6.6k
Other Decks in Technology
See All in Technology
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
880
Абьюзим random_bytes(). Фёдор Кулаков, разработчик Lamoda Tech
lamodatech
0
280
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.3k
Model Mondays S2E02: Model Context Protocol
nitya
0
190
rubygem開発で鍛える設計力
joker1007
1
120
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全
opelab
9
2.2k
~宇宙最速~2025年AWS Summit レポート
satodesu
1
1.4k
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
110
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
130
原則から考える保守しやすいComposable関数設計
moriatsushi
3
500
ひとり情シスなCTOがLLMと始めるオペレーション最適化 / CTO's LLM-Powered Ops
yamitzky
0
380
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
5
570
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
660
Writing Fast Ruby
sferik
628
61k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
BBQ
matthewcrist
89
9.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Building Applications with DynamoDB
mza
95
6.5k
Transcript
Interact 2019 Ansible による Azure 構成管理 ひよこでもわかる Ansible Kento Yagisawa
(@hiyoko_taisa) Technical Support Engineer Red Hat 1 ×
自己紹介 Agenda 2 八木澤 健人 (やぎさわ けんと) ITエンジニア 7年目 (昨年3月にTwitter転職しました)
Ansible Engine / Ansible Tower のテクニカルサポートをしています @hiyoko_taisa https://github.com/hiyokotaisa
本日のおしながき Agenda 3 1. Ansibleのおさらい 2. Azureのおさらい 3. AnsibleからAzureを操作する 4.
Dynamic Inventoryを活用してみる 5. Ansible Tower(AWX)からAzureを活用する
What is Ansible? 4 のおさらい
Ansibleとは? What is Ansible 5 • Red Hatとコミュニティが開発している構成管理ツール • 学習コストの低いYAML形式のPlaybook
• 冪等性(べきとうせい)を保った変更 • 多種多様な環境に対応 (Linux/Windows/Network/etc…) • エージェントレス • 最新バージョンは2.8.1
Ansibleの動作イメージ What is Ansible 6 SSH / WinRM / etc...
Ansibleの動作イメージ What is Ansible 7 Inventory host_A host_B ... Playbook
test.yml 1. スクリプトを転送 host_A 3.結果を返却 Connection Plugin Modules 2.実行
What is Azure? 8 のおさらい
Azureとは? What is Azure? 9 • Microsoftが提供するパブリッククラウドプラットフォーム • 100を超えるサービス ◦
Azure Virtual Maches ◦ Azure SQL Database ◦ Azure Cosmos DB ◦ Azure Active Directory(Azure AD) ◦ etc...
What is Azure? 10
Managing Azure from Ansible 11 から を操作する
Azureを操作するとは? Managing Azure from Ansible 12 • Azure上のリソース管理 → azure_rm_*
モジュール • Azure VM上のインスタンスに接続 → Dynamic Inventory
Azure関連モジュール Managing Azure from Ansible 13 146 モジュール (2019年6月29日時点)
Managing Azure from Ansible 14
事前準備 Managing Azure from Ansible 15 • 実行するノードにAzure SDK Moduleをインストール
https://docs.ansible.com/ansible/latest/scenario_guides/guide_azure.html ※ Azure Cloud ShellからもAnsibleを実行できる Azure Cloud Shell の概要 https://docs.microsoft.com/ja-jp/azure/cloud-shell/overview $ pip install 'ansible[azure]'
事前準備 Agenda 16 • Azure用の認証情報 ◦ Service Principalを利用 https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal ◦
ADのユーザー名/パスワード ※2FAは利用不可
Service Principal Agenda 17 • 必要な認証情報 Client ID Tenant ID
Secret Key Subscription ID
Agenda 18
Agenda 19
Agenda 20
Agenda 21
Agenda 22
Agenda 23
Agenda 24
認証情報を定義する Agenda 25 • 下記のどれかに定義 ◦ 環境変数 ◦ Playbook内の各taskのパラメーター ◦
ファイルに定義
環境変数に定義する Agenda 26 • AZURE_CLIENT_ID • AZURE_SECRET • AZURE_SUBSCRIPTION_ID •
AZURE_TENANT
Task内のパラメーターに定義する Agenda 27 - name: Power Off azure_rm_virtualmachine: resource_group: myResourceGroup
name: testvm002 started: no client_id: xxxxxx secret: xxxx subscription_id: xxxx tenant: xxxx
ファイルに定義する(検証用) Agenda 28 • $HOME/.azure/credentials [default] subscription_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx secret=xxxxxxxxxxxxxxxxx tenant=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Managing Azure from Dynamic Inventory 29 VMインスタンスを つくってみよう
azure_rm_storageaccount Agenda 30 • ストレージアカウントを作成する azure_rm_storageaccount: resource_group: Testing name: hiyokotest
account_type: Standard_LRS
azure_rm_virtualnetwork Agenda 31 • Virtual Networkを作成する azure_rm_virtualnetwork: resource_group: Testing name:
testvn001 address_prefixes: "10.10.0.0/16"
azure_rm_subnet Agenda 32 • Virtual NetworkにSubnetを作成する azure_rm_subnet: resource_group: Testing name:
subnet001 address_prefix: "10.10.0.0/24" virtual_network: testvn001
azure_rm_publicipaddress Agenda 33 • Public IP addressを作成する azure_rm_publicipaddress: resource_group: Testing
allocation_method: Static name: publicip001
azure_rm_securitygroup Agenda 34 • セキュリティグループを作成する azure_rm_securitygroup: resource_group: Testing name: secgroup001
rules: - name: SSH protocol: Tcp destination_port_range: 22 access: Allow priority: 101 direction: Inbound
azure_rm_networkinterface Agenda 35 • NICを作成する azure_rm_networkinterface: resource_group: Testing name: testnic001
virtual_network: testvn001 subnet: subnet001 public_ip_name: publicip001 security_group: secgroup001
azure_rm_virtualmachine Agenda 36 • VMの作成・削除・起動・停止などができる azure_rm_virtualmachine: resource_group: Testing name: testvm
vm_size: Standard_D1_v2 admin_username: test ssh_password_enabled: false image: offer: CentOS publisher: OpenLogic sku: '7.6' version: latest
Inventoryファイルをつくる Agenda 37 • hosts localhost ansible_connection=local
Playbookをつくる Agenda 38 • createvm.yml --- - hosts: localhost vars:
tasks: - name: Create storage account azure_rm_storageaccount: resource_group: Testing name: hiyokotest account_type: Standard_LRS - name: Create virtual network azure_rm_virtualnetwork: ...
Managing Azure from Dynamic Inventory 39
Managing Azure from Dynamic Inventory 40 Dynamic Inventory を活用してみる
Dynamic Inventoryとは? What is Ansible 41 • インベントリ情報をAPIから動的に取得する • 実体はPythonスクリプト
• AWS/Azure/vCenter/OpenStackなど https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html
なにがうれしい? What is Ansible 42 • 都度かわるインスタンス情報をスマートに管理できる (いちいちインベントリを書き換えなくてよい) • 既存のインベントリ管理ソースを使える(vCenterとか)
azure_rm.py What is Ansible 43 • Azure VM向けDynamic Inventory https://github.com/ansible/ansible/blob/devel/contrib/inventory/azure_rm.py
• 設定ファイルは azure_rm.ini https://github.com/ansible/ansible/blob/devel/contrib/inventory/azure_rm.ini
Dynamic Inventoryを指定する What is Ansible 44 • 通常のインベントリと指定方法は同じ $ ansible-playbook
-i azure_rm.py createvm.yml
Managing Azure from Ansible Tower (AWX) 45 から を活用する
Ansible Towerとは? What is Ansible 46 • Red Hatが開発するAnsible用オーケストレーションツール •
Web UIによる管理 • 権限管理(RBAC) • Git等のVCSとの統合 • ワークフローの作成
AWXとは? What is Ansible 47 • Ansible Tower のアップストリームプロジェクト •
最新の機能が導入され、安定したものがAnsible Towerへ • コンテナ環境必須 • エンタープライズな環境にはAnsible Towerがオススメ
なにがうれしい? What is Ansible Tower? 48 • 認証情報やPlaybookを一元管理できる • 実行結果を一元管理できる
• 強力な権限管理 • LDAPやSSOによるユーザー管理 • Splunk等へのexternal logging • virtualenvを使って複数のAnsibleバージョンを 共存させられる
Managing Azure from Dynamic Inventory 49
What is Ansible Tower! 50 Towerのデモ (動くように祈りましょう)
Ansible Lightbulb What is Ansible Tower? 51 • 各種教材やデモ用のリソース https://github.com/ansible/lightbulb
Ansibleもくもく会でも同様の教材を使っています もくもく会にも遊びにきてください!
52 Ansibleで Happy Automation!
CONFIDENTIAL Designator linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the
world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 53
Managing Azure from Dynamic Inventory 54 おまけ
Ansible 2.8 x Windows 55 Ansible 2.8で追加された新機能 • Connection PluginにSSHを指定可能
(Experimental Support) • 新モジュール: ◦ win_user_profile ◦ win_partition ◦ win_psrepository
Ansible 2.8 x Windows 56 ようこそSSH! (ベータだけど)
Ansible 2.8 x Windows 57 従来: WinRMによる接続 • HTTPS/HTTPベースの独自プロトコル •
ansible_connection: winrm を指定する • Remote Management Serviceの有効化などの事前設定が必要 WinRM(WS-Management) HTTPS / HTTP Windows
Ansible 2.8 x Windows 58 SSHによる接続 • Linux/Unixなどで広く使われてきたプロトコル • WinRMと比較してオーバーヘッドが少ない
• ansible_connection: ssh を指定する • Windows側にOpenSSHのインストールが必要 Win32-OpenSSH SSH Windows
Ansible 2.8 x Windows 59 SSH接続手順 1. Win32-OpenSSHのインストール 参考: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH
2. sshd_configの設定変更 (必要に応じて) PATH: %programdata%\ssh\sshd_config 3. ansible_shell_type を指定 ( cmd | powershell ) Windows側のDefault Shell設定と一致している必要がある (デフォルトはcmd.exe) 注意事項: v7.9.0.0p1-Betaより以前のバージョンのOpenSSHは、 ansible_shell_type: powershell を指定できない。 (Windows Server 2019に同梱されているOpenSSHなど)
Ansible 2.8 x Windows 60 Win32-OpenSSHのインストール Win32-OpenSSHのインストールは、ChocolateyもしくはAnsible GalaxyのRoleからも実行可能 $ ansible-galaxy
install jborean93.win_openssh 参考: https://galaxy.ansible.com/jborean93/win_openssh
Ansible 2.8 x Windows 61 Playbook
Ansible 2.8 x Windows 62 実行結果
Ansible 2.8 x Windows 63 SSHで接続していることが読み取れる
Ansible 2.8 x Windows 64 参考資料 • Windows SSH Setup
- Ansible https://docs.ansible.com/ansible/2.8/user_guide/windows_setup.html#windows-ssh-setup • Win32-OpenSSH https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH • Galaxy Role https://galaxy.ansible.com/jborean93/win_openssh