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.8k
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
240
RHTN: Ansible 2.8 x Windows
hiyokotaisa
1
3.9k
Twitter転職でなってみたグローバルサポートエンジニア
hiyokotaisa
1
2.1k
インフラ勉強会にみるコミュニティへの「貢献」
hiyokotaisa
2
2.9k
Red Hat Tech Night 2018: Ansible x Network Ansibleで実践するネットワーク自動化
hiyokotaisa
1
1.3k
AnsibleではじめるWindows自動化
hiyokotaisa
7
6.4k
Other Decks in Technology
See All in Technology
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
110
kargoの魅力について伝える
magisystem0408
0
210
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
390
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
170
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
5分でわかるDuckDB
chanyou0311
10
3.2k
Qiita埋め込み用スライド
naoki_0531
0
5.1k
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Scaling GitHub
holman
458
140k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Optimizing for Happiness
mojombo
376
70k
Making the Leap to Tech Lead
cromwellryan
133
9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
GraphQLとの向き合い方2022年版
quramy
44
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
A designer walks into a library…
pauljervisheath
204
24k
Code Review Best Practice
trishagee
65
17k
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