Create Amazon AMI
by Packer
w/z Ansible provisioner
2018/09/21 @raki
Who?
Twitter: raki
SIer: 10y (そのうち6年は某データ通信)
Freelance: 14y+ (うちCA8年目)
Now: 株式会社グリフォン(うち5年目)
サイバーエージェントのゲーム系子会社の1つ
好きなAnsibleモジュールは File かな。一番使うので。
汎用機からクラサバを経てWeb系に
サーバサイドから現在はインフラ系
公共,B2B,B2C,C2Cから現在はソシャゲ
Terraform, Ansible, Packer で AWS が主戦場
ただし現職ではGCPがメイン
Contents
5分じゃ無理でしたw
なので図にしてみました
Here
launch configurations
ALL
$ packer build -var-file=vars_base.json packer.json
$ packer build -var-file=vars_jenkins.json packer.json
$ packer build -var-file=vars_php.json packer.json
baseはAmazonLinux2
生成したAMIが次のビルドの元AMI
Create Amazon AMI by Packer w/z Ansible
コードちら見せ(共通packer.json)
# 最新AMI取得
"builders": [� {� "source_ami_filter": {� "filters": {� "name": "{{user `filter_name`}}",� "root-device-type": "ebs",� "virtualization-type": "hvm"� },� "owners": [� "self",� "amazon"� ],� "most_recent": true� },� ],�
# Ansible 呼び出し�� "provisioners": [� {� "type": "shell",� "inline": [� "sudo yum -y update",� "sudo amazon-linux-extras install ansible2",� "ansible --version"� ]� },� {� "type": "ansible",� "playbook_file": "{{user `playbook_file`}}",� "inventory_directory": "{{user `inventory_directory`}}",� "host_alias": "{{user `host_alias`}}-{{user `aws_ami_name`}}",� "extra_arguments": [� "-l {{user `host_alias`}}-{{user `aws_ami_name`}}",� "--vault-password-file={{user `vault-password-file`}}"� ]� }� ]�
後でスライドを共有します
Hierarchy of Project AMI
それぞれ AMI 化して、
jenkins から terraform を叩いて
AutoScaling::LaunchConfiguration にして
AWS::AutoScaling::AutoScalingGroup 更新
コードちら見せ(terraform)
# base AMI の最新を取得��data "aws_ami" "bastion" {� most_recent = true�� owners = [� "self",� ]�� filter {� name = "name"�� values = [� "base *",� ]� }�}�
# 差し込むとこ��module "bastion_asg" {� source = "terraform-aws-modules/autoscaling/aws"�� lc_name = "bastion-lc"�� image_id = "${data.aws_ami.bastion.id}"��
CI / CD
コードちら見せ(Playbook)
# base.yml��- name: build server for base(ssh) AMI� hosts: all� # connection: local� become: true� gather_facts: yes�� vars:� remove_package:� - ntp*� install_package:� - chrony� - nmap� - git�
Pros / Cons
Pros
Cons
Help me
この辺りについて情報交換したいです。AnsibleってよりはAWSだけど。
提供
ご清聴ありがとうございました
不良遊戯
スマホ向けソーシャルゲーム
ジャンルはGvG(リアルタイムギルドバトル)
100万ユーザを超えるヒット作
各プラットフォーム内でR18閲覧注意
(PFゾーニングなのでお察し)
GMOアプリクラウドからGCP移行済み
アイドルうぉーず
150万人突破
ブラウザ向けソーシャルゲーム
ジャンルは同じくGvG
ZタイトルはDMM内R18(Fanza)閲覧注意
(成人向けレーティングです)
CD(1、2)LINEスタンプ、コミケ出展など
GMOアプリクラウドからGCP移行済み
Next Our Products
2019
COMING SOON
やっとAWSの出番!