TerraformとAnsibleをシンプルなパ
イプラインでクラウドインフラ構
築を迅速に
whoami
• Terence Kam (テリー)
• Cloud Solutions Engineer @ F5
• Social
• Twitter: @opihimanju
Image of
some sort
• IaCで解決したかったこと4つ
• 選定したツールの紹介
• 簡単なDemo
Agenda
• インフラとデバイスの設定時間を短時間にする
• 設定ミスを防ぐ (商用環境にデプロイする前にテストを行う)
• “Secure by default”にする
• テスト環境を壊しても怖くない (再構築は簡単、ゴミは残らない )
IaCで解決したかったこと4つ
UI CLI
Attacker/Bot
INFRASTRUCTURE AS CODE/CONFIGURATION AS CODE
• スピードと効率
• CI / CDパイプラインへの統合
• オートメーション
• チームコラボレーション
• 技術的な負債を減らす
• ⼈的ミスを防ぐ
• コンプライアンスを簡素化
IaCはDevOpsに⽋かせない
選定したツールの紹介:
2019/04にV1.0リリース
• Goで作られたオープンソースの継
続的インテグレーション・継続的
デリバリー(CI/CD)ツール
CI/CD: Dronehttps://drone.io/
IaCツール: Terraform
main.tf
plan
apply
destroy
Parse configuration
Cloud provider
Resource modules
API VPC K8s
Compute
Instance
…
Storage Bucket / Terraform Cloud
*.tfstate
IaCツール: Ansible
main.yaml
inventory
modules
ansible-playbook
ssh
API
roles
plugins
collections
K8s
Compute
Instance
Consul
SERVICE DISCOVERY
Application Nodes
Consul
client
1. Deploy or Auto Scale Workloads
2. Workloads register themsevles in
Consul
3. F5 polls Consul for endpoint Ips
4. Client is load balanced to
workloads
• サービスディスカバリ
• ヘルスチェック
• KVストア
• サービス間通信の
AuthN/Z,mTLS
• マルチDC
Vault
SECRETS MANAGEMENT
1. Write secret (e.g. GCP service
account credentials)
2. Workloads authenticate (e.g.
Google Cloud IAM)
3. Workloads read/get secret
4. Workload uses secret to do tasks
• シークレットのライフサイ
クルの集中管理
• データプロテクション : API-
Drivenな暗号化
• 20+ のシークレットに対応
Demo Workflow (CI/CD)
Create PR Drone Pipeline
1. terraform apply
2. ansible-playbook Deployed
Merge PR
DockerHub
tkam8/tfansible:lat
est
DevOps
Security
policies
Zone1 (asia-northeast1-a)
Demo Workflow (CI/CD) – Step 3, 4
public_subnetwork
private_subnetwork
Drone Pipeline
Ø VPC Networks
Ø Network Firewall
Ø NGINX VE (instance
group)
Ø F5 VE
Ø Consul VE
Ø Output Files
Ø Ansible Host /
Hostvars
Ø Onboard F5
Ø Configure NGINX
Ø Configure F5 (AS3)
Compute Engine
Instance Group
NGINX
CONSUL
Compute Engine
Instance Group
VAULT
CONSUL
VAULT
CONSUL
VAULT
CONSUL
CONSUL
F5
(WAF/Bot/LB/FW)
Attacker/Bot
client SecOps/DevOps/
AppDev
NGINX
CONSUL
NGINX
CONSUL
• Service Discovery
• Health Checks
• Cloud agnostic
• Auto Scaling
• Auto Healing
• WAF
• Bot Mitigation
• Load Balancing w/
Consul integration for
service discovery
DevOps
• Auto Scaling
• Auto Healing
• Secrets
Management
Demo
1. TerraformとAnsibleのコード変更をGitHubにコミット
• 変更点:
• WAFポリシーをEnable
• NGINX instance groupをスケールアウト
2. GitHubのPRをmergeして、Droneパイプラインをトリガー
3. 設定変更を確認
• インフラとデバイスの設定時間を短時間にする
• >Terraform & Ansible
• 設定ミスを防ぐ (商用環境にデプロイする前にテストを行う)
• >CI/CDパイプラインを活用(テスト用のパイプライン作成可能)
• “Secure by default”にする
• >WAFポリシーas Code
• テスト環境を壊しても怖くない (再構築は簡単、ゴミは残らない)
• >IaC
まとめ
NGINX Galaxy Roles
NGINX NGINX Controller NGINX App Protect
• nginx (Official Ansible role for
NGINX)
• nginx_controller_install (Official Ansible role to install
NGINX Controller)
• nginx_controller_agent
• nginx_controller_application
• nginx_controller_certificate
• nginx_controller_component
• nginx_controller_environment
• nginx_controller_gateway
• nginx_controller_generate_token
• nginx_controller_user_role
• nginx_controller_licence
• nginx_controller_location
• nginx_controller_user
• ansible_role_nginx_controller_api_definition_import
• ansible_role_nginx_controller_publish_api
• nginx_app_protect (Official Ansible
role for NGINX App Protect)
2020年8⽉時点
F5のAnsible モジュール開発状況
• Ansibleと⼀緒にインストールされる安定版モジュール
• 2020年8⽉時点のリスト(166モジュール)
https://docs.ansible.com/ansible/latest/modules/list_of_network_modules.html
BIG-IP/BIG-IQの
サポートされているバージョン
HTTPS://GITHUB.COM/F5NETWORKS/TERRAFORM-PROVIDER-BIGIP
F5 Terraform Provider Resources (現在v1.3)
• bigip_as3
• bigip_bigiq_as3.html
• bigip_sys_iapp
• bigip_ltm_virtual_address
• bigip_ltm_virtual_server
• bigip_ltm_node
• bigip_ltm_pool
• bigip_ltm_datagroup
• bigip_ltm_snat
• bigip_ltm_snat_list
• bigip_ltm_snatpool
• bigip_ltm_irule
• bigip_ltm_monitor
• bigip_ltm_policy
• bigip_ltm_pool_attachment
• bigip_ssl_certificate
• bigip_ssl_key
• bigip_do
• bigip_cm_device
• bigip_cm_devicegroup
• bigip_command
• bigip_common_license_manage_bigiq
• bigip_net_route
• bigip_net_selfip
• bigip_net_vlan
• bigip_sys_dns
• bigip_sys_ntp
• bigip_sys_provison
• bigip_sys_snmp
• bigip_sys_snmp_traps
• bigip_ltm_persistence_profile_cookie
• bigip_ltm_persistence_profile_dstaddr
• bigip_ltm_persistence_profile_srcaddr
• bigip_ltm_persistence_profile_ssl
• bigip_ltm_profile_fasthttp
• bigip_ltm_profile_fastl4
• bigip_ltm_profile_http
• bigip_ltm_profile_http2
• bigip_ltm_profile_httpcompress
• bigip_ltm_profile_oneconnect
• bigip_ltm_profile_tcp
• bigip_ltm_profile_client_ssl
• bigip_ltm_profile_server_ssl
F5 Developed & Open Source
Onboarding & HA Virtual Server, App Profiles
今後やりたいこと
• パイプラインを分けて個別に管理
• 周辺ツールの整備
Thank you for listening!
Secrets
CLI
UI

Terraformを活用した自動化デモ_F5-NGINX_Community-20200805