SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
Ansibleで始める
     インフラ構築自動化
2017/02/06 D-Cube
株式会社ビズリーチ
長原 佑紀
Profile
- 名前: 長原 佑紀 (Yuuki Nagahara)
- 所属: 株式会社ビズリーチ
- 部署: ビズリーチ事業 インフラ
- 経歴:
- 2007- SIer
- 2015- ビズリーチ
- 好き:
- AWS
- Android
1. Infrastructure as Code
2. Ansible (概要)
3. Ansible (基礎編)
4. Ansibleデモ
5. Ansible (実践編)
Agenda
Ansibleを使われたことがある方は?
1. 使ったことない。これから学ぶ。
2. 多少触ったことがある。
3. 業務でがっつり利用している。
Question
回答
1. 5割
2. 3割
3. 2割
1. Infrastructure as Code
manual
Operator
Infrastructure as Code とは
Infrastructure
constraction
manual
Operator
Infrastructure as Code とは
source code
Infrastructure
Infrastructure as Code とは
?
Infrastructure as Code とは
インフラの構成管理を
宣言的なコードで記述し、
ソフトウェア開発の
プラクティスを適用すること
Infrastructure as Codeのプラクティス
ソフトウェア開発と同様にソースコードをGit管理
- バージョン管理(Git)
- Pull Request(レビュー)
- TDI(TDD)(テスト駆動インフラストラクチャ)
- CI(継続的インテグレーション)
- CD(継続的デプロイ)
Infrastructure as Codeのプラクティス
Infrastructure as Codeの領域
システムコンフィグレーション
デプロイ、サーバ間連携
クラウド、VM、コンテナ、
OSインストール
オーケストレーション
(Orchestration)
コンフィグレーション
(Configuration)
ブートストラッピング
(Bootstrapping)
Fabric, Capistrano, Serf, Consol
Puppet, Chef, Ansible, Itamae
AWS, OpenStack, Docker,
KickStart, Cobbler, Terraform
Infrastructure as Codeの領域
OS / ミドルウェア設
定
デプロイ、サーバ間連携
仮想
マシン
作成
オーケストレーション
コンフィグレーション
ブートストラッピング
OS
インス
トール
Server#1 Server#2 Server#3
▷ ブートストラッピング
○ プラットフォームそのもの。または、サーバとしてOSが利用可能な状態
を作るツール。
○ 仮想マシンやコンテナ、クラウドにおいてAPIを利用してリソースの定
義を行う。
▷ コンフィグレーション
○ サーバへミドルウェアのインストールや各種設定を行うツール。
○ サーバ構成管理の自動化に当たる部分を担う領域。
▷ オーケストレーション
○ リソースの集合体に連携したサービスを提供するツール。
○ 構築済みの環境に対して振る舞いを行う。
Infrastructure as Codeの領域
▷ ブートストラッピング
○ AWSのAPIを利用したEC2インスタンス管理
○ Dockerを利用したコンテナ管理
○ Vagrantでの仮想マシン立ち上げ
▷ コンフィグレーション
○ 各種ミドルウェアでのサーバの構築
○ パッチ適用
▷ オーケストレーション
○ アプリケーションの分散デプロイ(ローリングアップデート)
○ Hadoopクラスタの構築
○ メトリクス/監視ツールへのノード追加
ユースケース
▷ オペレーション品質の向上
   人的ミス発生確率低減、再現性の向上
▷ システム運用の標準化
   変更履歴で属人化の防止
▷ 再利用性の向上
   部品化により再利用が容易
▷ 作業工数削減
   手動オペレーションのタイムロス削減
▷ セキュリティの向上
   直接多数のサーバを操作する機会を最小化
コード化によるメリット
2. Ansible
概要
Python製の構成管理ツール。
2015年にRed Hat社が買収。
クラウド操作やデプロイ等も
利用可能で、ブートストラッピング
やオーケストレーションのレイヤ
の機能も一部提供する。
『Infrastructure as Code』を
実現するためのフレームワーク
Ansible 概要
Configration
Orchstration
Bootstrapping
“Ansible is Simple IT Automation.”
※名前の由来は、SF小説に登場する”超光速通信技術”
▷ Simple
- Yaml形式の設定ファイル
- 可読性高、コーディング不要
- 低い学習コスト
▷ Powerful
- "Batteries Included" (電池同梱)
- パッケージ1つで導入可能
▷ Agentless
- 構築対象にエージェントは不要
- sshが接続可能であれば良い
Ansibleの特徴
サーバの状態を一定に保つための特性
 対象リソースに対して「何を実行するのか」ではなく、
 「どういう状態があるべき姿なのか」を定義する。
 ある操作を1回行っても複数回行っても結果が同じとなる性質。
冪等性(べきとうせい)
➔ × 冪等性がない
➔ ◯ 冪等性がある
$ echo “parameter=1” >> /etc/configfile
Ansibleで記述したコードは基本的に冪等性を担保する仕組み
$ echo “parameter=1” >> /opt/app/config
$ sudo yum install -y nginx-1.10.2
Package nginx-1.10.2-1.el6.x86_64 already installed and latest version
Nothing to do
Ansibleをインストールしたホストより、サーバのあるべき状態を定義したファ
イルを実行してリモートホストに対して変更を加える
Ansibleを利用した構築イメージ
サーバ構成定義
Ansibleホスト
リモートホスト
(構築対象サーバ)
software software
configuration
application
ホスト情報
リモートホストが複数台の場合は、サーバ構成定義ファイル(=サーバ種別
単位)で並列実行可能
Ansibleを利用した構築イメージ
サーバ構成定義
Ansibleホスト
リモートホスト1
“
ホスト情報
リモートホスト2
“
リモートホスト3
“
parallel
Ansibleは構成定義からAnsibleに組み込まれたモジュールを元に
PythonCodeを生成し、リモートホストに転送して、ssh経由で実行
Ansibleの実行の内部処理
Python Code
③ ssh
① 自動生成
Python Code
Ansibleホスト
リモートホスト
(構築対象サーバ)
④コード実行② sftpサーバ構成定義
ホスト情報
⑤コード削除
構成管理ツール比較
Puppet Chef Ansible
開発言語 Ruby Ruby Python
開発開始 2005年 2009年 2012年
書式 独自DSL Ruby DSL yaml
冪等制 ◯ ◯ ◯
構成管理方法 Pull型 Pull型 Push型
エージェント 必要 必要 不要 ※1
※1: AnsibleもリモートホストにPython 2.4以降のインストールが予め必要。
構成管理ツール比較
3. Ansible
基礎編
Ansibleインストール
ansibleはyum、apt、pipで提供されているため環境に合わせてインストー
ル。
### Latest Release Via Yum (CentOS, RHEL)
$ yum install -y epel-release
$ sudo yum install ansible --enablerepo=epel
### Latest Releases Via Apt (Ubuntu)
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
### Latest Releases Via Pip (Linux, MacOS)
$ sudo easy_install pip
$ sudo pip install ansible
Ansibleの最小構成
Ansibleで環境構築を行う最低限の2ファイル
1. Inventory
- リモートホストのホストやグループを管理するファイル
- ファイル名に規定なし ex.) hosts, inventory
2. Playbook
- リモートホストの状態 (構成) を定義するyamlファイル
- Inventoryで管理されたグループやホスト単位で作成
- ファイルの拡張子は”.yml”
最小構成
├── hosts  # Inventory
└── site.yml # Playbook
Inventory(インベントリ)
192.168.33.101
foo
[webservers]
web01
web02
[dbservers]
db[01:03]
[xxxservice:children]
webservers
dbservers
[bastion]
bastion ansible_port=30022
[all:vars]
ansible_user=vagrant
グループ名
複数のホストをグルーピングした名称
グループ単位でPlaybookを実行可能
ホスト省略形式指定
(db01,db02,db03)
SSHのポート番号を指定するパラメータ
(デフォルトは22番を利用)
全ホストに対して指定するパラメータ
“all”グループは予約されており、インベントリ
の全ホストがターゲットとなる
ホスト
SSHで接続可能なホスト
IPアドレスや名前解決可能なホスト名
“:children”を指定して、グループを束ねたグ
ループを作成
Playbook
リモートホストの構成をタスク又はロールで定義
タスクはAnsibleのモジュールを利用して定義し、上から順番に実行
---
- hosts: 192.168.33.101
become: yes
tasks:
- name: install nginx
yum: name=nginx state=present
- name: nginx running and enabled
service: name=nginx state=started enabled=yes
リモートホスト(インベントリのホスト or グループ)
sudoで実行
モジュール モジュールの引数
nginxのインストール
nginxサービスの起動 /
自動起動有効化
ansible-playbook コマンド
$ ansible-playbook -i hosts site.yml
PLAY [192.168.33.101] *************************************************
TASK [setup] *******************************************************************
ok: [192.168.33.101]
TASK [install nginx] ***********************************************************
changed: [192.168.33.101]
TASK [nginx running and enabled] ***********************************************
changed: [192.168.33.101]
PLAY RECAP *********************************************************************
192.168.33.101 : ok=3 changed=2 unreachable=0 failed=0
インベントリ
Playbook 初回実行時
ansible-playbook コマンド
$ ansible-playbook -i hosts site.yml
PLAY [192.168.33.101] *************************************************
TASK [setup] *******************************************************************
ok: [192.168.33.101]
TASK [install nginx] ***********************************************************
ok: [192.168.33.101]
TASK [nginx running and enabled] ***********************************************
ok: [192.168.33.101]
PLAY RECAP *********************************************************************
192.168.33.101 : ok=3 changed=0 unreachable=0 failed=0
再実行時
変更点なし
ansible-playbook コマンド
$ ansible-playbook -i hosts site.yml
… (snip) …
PLAY RECAP *********************************************************************
192.168.33.101 : ok=3 changed=2 unreachable=0 failed=0
結果 説明
ok 定義された状態となっている
changed 定義された状態に変更が行われた
unreachable リモートホストへの接続に失敗した
failed タスクの実行に失敗(エラー)
実行結果にて、各リモートホストの実行結果の要約(RECAP)を出力
PlaybookのDry Run
手動でPlaybookを流す前には必ず事前に意図した変更となるか確認する
ansible-playbook コマンド
$ ansible-playbook -i hosts site.yml --check
その他のオプション
 -D, --diffオプション
  ファイル等の変更差分内容を出力。
 --syntax-check
  playbookのシンタックスを検査。
 --list-tasks
  実行されるタスクの一覧を表示。
 --start-at-taskオプション(=”task名”)
  playbookを途中から実行する場合に有効。
 --step
  playbookを(N)o/(y)es/(c)ontinue入力でステップ実行。
Tips
 Inventoryfileなしでplaybook実行
 $ ansible-playbook -i "192.168.1.2," site.yml
 ※1台の場合は末尾にカンマが必要
ansibleコマンドを利用してAd-Hocにモジュールを実行可能
▷ yumモジュール(パッケージ管理)
playbookで実行したnginxインストールタスクの実行例
ansible コマンド(Ad-Hoc)
$ ansible -i hosts 192.168.33.101 -m yum -a "name=nginx state=present" -b
192.168.33.101 | SUCCESS => {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"nginx-1.10.2-1.el6.x86_64 providing nginx is already installed"
]
}
ターゲットインベントリ モジュール モジュールのOptions become(sudo)
タスクはモジュールを指定して構成を定義
モジュールは基本的に冪等性を担保した実装が行われている。
モジュールの分類
▷ Core Modules https://github.com/ansible/ansible-modules-core
利用頻度の高いモジュール群
▷ Extra Modules https://github.com/ansible/ansible-modules-extras
利用頻度の中以下のモジュール群、Core Modulesの登竜門
Ansible module index (core + extra)
 モジュール数:900超
Ansibleモジュール
利用可能なモジュール一覧の確認
モジュールに関するドキュメントは`ansible-doc`コマンドで参照
Ansibleモジュール
$ ansible-doc -l
$ ansible-doc file
Sets attributes of files, symlinks, and directories, or removes
files/symlinks/directories. Many other modules support the same
options as the [file] module - including [copy], [template], and [assemble].
Options (= is mandatory):
- follow
This flag indicates that filesystem links, if they exist, should
be followed.
(Choices: yes, no)[Default: no]
- force
force the creation of the symlinks in two cases: the source file
does not exist (but will appear later); the destination exists
and is a file (so, we need to unlink the "path" file and create
モジュール名
▷ pingモジュール(リモートホストの疎通確認)
サーバ新設後の接続確認や障害発生時の疎通確認に利用可能。
Ansibleモジュール
$ ansible web -i hosts -m ping
web01 | SUCCESS => {
"changed": false,
"ping": "pong"
}
web02 | SUCCESS => {
"changed": false,
"ping": "pong"
}
※※インベントリ※※
[web]
web01
web02
▷ setupモジュール(リモートホストの情報取得)
playbookの実行時は、デフォルトで始めに setupモジュールが実行されてファクト変数を取得
ファクト変数はplaybook内で変数として利用可( Distributionによる条件式等)
Ansibleモジュール
$ ansible 192.168.33.101 -i hosts -m setup --one-line
192.168.33.101 | SUCCESS => {"ansible_facts": {"ansible_all_ipv4_addresses": ["10.0.2.15",
"192.168.33.101"], "ansible_all_ipv6_addresses": ["fe80::a00:27ff:fe4f:b806",
"fe80::a00:27ff:fe03:c0a5"], "ansible_architecture": "x86_64", "ansible_bios_date": "12/01/2006",
"ansible_bios_version": "VirtualBox", "ansible_cmdline": {"KEYBOARDTYPE": "pc", "KEYTABLE":
"us", "LANG": "en_US.UTF-8", "SYSFONT": "latarcyrheb-sun16", "clocksource_failover":
"acpi_pm", "rd_NO_DM": true, "rd_NO_LUKS": true, "rd_NO_LVM": true, "rd_NO_MD": true, "ro":
true, "root": "UUID=1d798f26-8ace-413f-9530-2d1d1d4fdbb5"}, "ansible_date_time": {"date":
"2017-02-05", "day": "05", "epoch": "1486270715", "hour": "04", "iso8601":
"2017-02-05T04:58:35Z", "iso8601_basic": "20170205T045835431149",
"iso8601_basic_short": "20170205T045835", "iso8601_micro":
"2017-02-05T04:58:35.431233Z", "minute": "58", "month": "02", "second": "35", "time":
"04:58:35", "tz": "UTC", "tz_offset": "+0000", "weekday": "Sunday", "weekday_number": "0",
"weeknumber": "05", "year": "2017"}, "ansible_default_ipv4": {"address": "10.0.2.15", "alias":
"eth0", "broadcast": "10.0.2.255", "gateway": "10.0.2.2", …(snip)…
Ansibleモジュール
その他の代表的なモジュール
● file - ファイル/ディレクトリ作成や所有者/権限変更
● copy - リモートホストにファイルを転送
● template - テンプレートファイル(jinja2)を展開した
     ファイルをリモートホストへ転送
● get_url - 指定URLからファイルをダウンロード
● lineinfile - リモートホストのファイルで正規表現にマッチ
     する行の書き換え
● shell - シェルの実行
● yum / apt - パッケージ操作
● service - サービス操作
Role
Playbookを疎結合なコンポーネントの処理で分割したもの
tasks / defaults / files / templates / handlers / varsのディレクトリ構成
Roleを作成することで再利用可能となり、Playbookの可読性も高まる
site.yml     # playbook
roles/nginx/    # roles/[Role名]ディレクトリ
├─ defaults/   # 変数のデフォルト値
|  └ main.yml # Roleで利用する変数default
├─ files/     # copyモジュールのファイル
├─ handlers/   # 特定イベント発火タスク
|  └ main.yml #
├─ meta/    # Roleのメタ情報(依存Role)
├─ tasks/    # Roleで実行されるタスク
|  └ main.yml # 実行タスクファイル ※必須
├─ templates/  # templateモジュール
|  └ xxx.xxx.j2 # Jinja2形式ファイル
└─ vars/     #
   └ main.yml #
---
- hosts: web
roles:
- nginx nginxロール呼び出し
---
- name: install nginx
yum: name=nginx-{{ nginx_version }} state=present
- name: nginx running and enabled
service: name=nginx state=started enabled=yes
nginx_version: 1.10.2
vars / templates
varsはホスト/グループ/環境毎の設定値を定義、templates等にて変数代入
group_varsはグループ単位の設定値を変えることが可能
site.yml   # playbook
hosts    #インベントリ
group_vars
├─ web.yml # group: webのvars
├─ db.yml  # group: dbのvars
roles
└─nginx/  # nginx rolesディレクトリ
  ├─ tasks/
  |  └ main.yml # roleの実行タスク
  └─ templates/
    └ index.html.j2 # index.htmlのテンプレート
- hosts: web
roles:
- nginx
- name: replace index.html
template:
src: index.html.j2
dest: /usr/share/nginx/html/index.html
name: “webserver”
group_vars name: {{ name }}
name: “dbserver”
$ ansible-playbook -i develop site.yml
$ ssh web01 “cat
/usr/share/nginx/html/index.html”
group_vars name: webserver
vars / templates
varsの値定義箇所は複数存在し、各優先度が複雑な為に注意が必要
● role defaults
● inventory vars
● inventory group_vars
● inventory host_vars
● playbook group_vars
● playbook host_vars
● host facts
● play vars
● play vars_prompt
● play vars_files
● registered vars
● set_facts
● role and include vars
● block vars (only for tasks in block)
● task vars (only for the task)
● extra vars (always win precedence)
low
priority
high
Ansible Vault
$ cat group_vars/webserver.vault
nginx_htpasswd: '9s36?;fyNp'
$ ansible-vault encrypt group_vars/webserver.vault
Encryption successful
$ cat group_vars/webserver.vault
$ANSIBLE_VAULT;1.1;AES256
61386434353264313436616339353933666163333931323262383
064343738643639373239643462
6665363764373265366464626666613535326531666363630a6
56332646462616231613438383233
... snip ...
### view encrypt vars file
$ ansible-vault view group_vars/webserver.vault
nginx_htpasswd: '9s36?;fyNp'
### edit encrypt vars file
$ ansible-vault edit group_vars/webserver.vault
### decrypt encrypted vars file
$ ansible-vault decrypt group_vars/webserver.vault
機密情報のvarsを暗号化してリポジ
トリ管理可能とするツール
playbook実行時にはパスワードに
より復号化して変数利用
パスワードファイル設置
 
ansible.cfgに以下の設定を追加
vault_password_file = ~/.vault_password
$ echo “passwd” > ~/.vault_password
Ansible Galaxy
AnsibleのRoleが公開されるサービス
世界中のユーザが作成したOSSのRoleの検索が可能
- サポートプラットフォーム
- タグ
- Github Watch/Start数
- ダウンロード数
利用方法
 → rolesディレクトリ配下へDL
新規ロール作成時には、目的のRoleがないか検索
抽象度が高いRoleはメンテコストが掛かるため独自Roleの選択肢も検討
$ ansible-galaxy install user.repo
Best Practice
production # inventory file for production servers
staging # inventory file for staging environment
group_vars/
group1 # here we assign variables to particular groups
group2 # ""
host_vars/
hostname1 # if systems need specific variables, put them here
hostname2 # ""
library/ # if any custom modules, put them here (optional)
filter_plugins/ # if any custom filter plugins, put them here (optional)
site.yml # master playbook
webservers.yml # playbook for webserver tier
dbservers.yml # playbook for dbserver tier
roles/
common/ # this hierarchy represents a "role"
tasks/ #
main.yml # <-- tasks file can include smaller files if warranted
handlers/ #
main.yml # <-- handlers file
templates/ # <-- files for use with the template resource
ntp.conf.j2 # <------- templates end in .j2
files/ #
bar.txt # <-- files for use with the copy resource
vars/ #
main.yml # <-- variables associated with this role
defaults/ #
main.yml # <-- default lower priority variables for this role
meta/ #
main.yml # <-- role dependencies
library/ # roles can also include custom modules
lookup_plugins/ # or other types of plugins, like lookup in this case
webtier/ # same kind of structure as "common" was above, done for the webtier
role
monitoring/ # ""
fooapp/ # ""
公式のAnsibleディレクトリ構成の
ベストプラクティス
マルチステージに対応
 production / staging
4. Ansible
Demonstration
Demo
(3) オーケストレーション
 ローリングアップデートによるデプロイ
(2) コンフィグレーション
 EC2のサーバ構築 x2台
  common / ngnix
(1) ブートストラッピング
 Ansibleを用いたAWSの環境構築
  VPC / KeyPair / InternetGateway
  Subnet / RouteTable / SecurityGroup /
  EC2 x2台 / ELB
Availability Zone 1a Availability Zone 1c
web web
EC2 EC2
Elastic Load
Balancing
Demo
(3) オーケストレーション
 ローリングアップデートによるデプロイ
(2) コンフィグレーション
 EC2のサーバ構築 x2台
  common / ngnix
(1) ブートストラッピング
 Ansibleを用いたAWSの環境構築
  VPC / KeyPair / InternetGateway
  Subnet / RouteTable / SecurityGroup /
  EC2 x2台 / ELB
Availability Zone 1a Availability Zone 1c
web web
EC2 EC2
Elastic Load
Balancing
AWS via Ansible
● Rate exceededでAPI発行がこけることがある
 (terraformは自動でリトライ)
● リソースを削除する場合には state: absentのPlaybookが別途必要
 (terraformはdestroyで一括削除)
● AWSサービスのモジュールサポートは事前に要チェック
 (デモ範囲は全てモジュールで実現)
5. Ansible
実践編
- バージョン管理(Git)
- Pull Request(レビュー)
- TDI(TDD)(テスト駆動インフラストラクチャ)
- CI(継続的インテグレーション)
- CD(継続的デプロイ)
(再) Infrastructure as Codeのプラクティス
- バージョン管理(Git)
- Pull Request(レビュー)
- TDI(TDD)(テスト駆動インフラストラクチャ)
- CI(継続的インテグレーション)
- CD(継続的デプロイ)
(再) Infrastructure as Codeのプラクティス
バージョン管理
AnsibleのGitブランチ戦略
本番 / 検証環境をそれぞれmaster / developブランチで運用。
各環境とソースコードが適合する状態を維持し続ける。
master
develop
Feature
Feature
Pull Request(レビュー)
GithubのPull Requestでレビュー実施。
- 概要(変更内容)
- レビュー観点
- 適用時ansible-playbookコマンド
(その他必要作業漏れないか)
- CIテスト実行設定
- 適用時のサービス影響
Pull Request(レビュー)
## 概要
xxx
## レビュー観点
- xxx
## 環境適用手順
### ローカル環境
```
ansible-playbook -i inventories/local/hosts
playbooks/xxx.yml --diff --check
```
### 検証環境
```
ansible-playbook -i inventories/develop/hosts
playbooks/xxx.yml --diff --check
```
### 本番環境
```
ansible-playbook -i inventories/production/hosts
playbooks/xxx.yml --diff --check
```
## CIテスト実行設定
- テスト実行可否 [true/false]
test-enable: true
- テスト対象Playbook [csv形式]
test-playbooks: webservers.yml, dbservers.yml
## サービスへの影響
xxxx
## レビュー期日
xx/xx
.github/PULL_REQUEST_TEMPLATE.mdを作成することでPR作成簡略化
TDI(テスト駆動インフラストラクチャ)
インフラテストの自動化ツール
  RSpecを拡張したサーバテストのRuby製のフレームワーク。
  テスト対象サーバにsshでログインしてサーバの状態を確認。
Ansibleは、fail-fastの思想に基づいており、Ansibleの実行が成功すれば定
義したリソースの状態は正しい。
但し、定義誤りによりリソースや設定に不備がある場合Ansibleでは検知不
能。
Serverspecで各種設定を定義する場合、Ansibleと冗長管理となるため注
意。
CI(継続的インテグレーション)
Ansibleで冪等性の考慮漏れは良く発生する。
CIで予め初期構築及び、冪等性をテストする。
(1) Apply [1st] - 初回構築の正常性確認
(2) Dry-Run - 初回構築後のdry-runで冪等性を検証 (changed=0)
(3) Apply [2nd] - 2回目以降の適用で冪等性を検証 (changed=0)
※(2)(3)を実施する理由は`check_mode: no`のtaskを考慮。
(1)
未構築 構築済
(2)(3)
CI(継続的インテグレーション)
(4) launch instances
  and exec playbook
  (run, dry-run, run)
(1) pull request
  push
(2) webhook
Jenkins
test script
test script
(3) exec
playbooks x procs
(6) post results
(7) result
(5) notify
EC2
EC2
callback_plugin
Playbook実行結果のok, changed,
unreachable, failure数の取得に
callback_pluginが利用可能。
playbookの実行開始や終了などの
イベントにフックして、処理を行うプ
ラグイン。
実行後にログやメール、チャットで
通知する用途など。
ここでplaybook_on_stats()の実行
結果を集計してjsonで出力させて、
CIでの結果判定に利用している。
## etc/callback_plugins/output_json.py
import os
import json
class CallbackModule(object):
def __init__(self):
self.hosts_name = None
self.results_dir = 'results'
## call on start playbook
def playbook_on_play_start(self, name):
self.hosts_name = self.play.hosts
## call at end playbook
def playbook_on_stats(self, stats):
hosts = sorted(stats.processed.keys())
result_hosts = []
for host in hosts:
s = stats.summarize(host)
dict = {
"host": host,
"result": {
"ok": s['ok'],
"changed": s['changed'],
"unreachable": s['unreachable'],
"failures": s['failures']
}
}
result_hosts.append(dict)
…..
その他(Ansibleと環境の乖離対策)
サーバの予期せぬ状態変化や、緊急時の手動設定変更、及びPlaybookの実
行漏れなどが発生した場合、Ansibleのコードと環境に差異が起こる。
コードと環境が正しい状態(changed=0)で運用が行われていなければ、緊急
でPlaybookを流したい場合などに混乱を招く可能性がある。
そこで、日次でPlaybookをdry-runで実行し、環境との差異がないことを確認し
ている。
コードと環境状態を合わせることがAnsible運用において肝心。
dry-run実行結果のjsonファイルをAWS S3へ置いて静的Webホスティングの
ページから参照して一覧化している。
その他(Ansibleと環境の乖離対策)
機能
▷ ビジュアルダッシュボード
▷ ロールベースのアクセス制御
▷ ジョブスケジューリング
▷ グラフィカルな在庫管理
▷ リアルタイムでの
ジョブステータス更新
https://www.redhat.com/ja/technologies/management/ansible
Ansible Tower
Ansibleの管理・操作用のWeb GUI インタフェース。
10ホストまでは無料、それ以上は有償。
ホストの状態はAnsible Towerでも管理可能。
Thanks!
Any questions?

Contenu connexe

Tendances

[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Shingo Kitayama
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたKeijiUehata1
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 

Tendances (20)

[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 

En vedette

簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点についてdcubeio
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜Yui Ito
 
データセンターのお話Lxスタイル
データセンターのお話Lxスタイルデータセンターのお話Lxスタイル
データセンターのお話LxスタイルTadashi Sugita
 
ベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみた
ベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみたベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみた
ベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみたSatoshi Yazawa
 
闇と向き合う
闇と向き合う闇と向き合う
闇と向き合うNagi Teramo
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
様々なデータセンター Sugipooh
様々なデータセンター Sugipooh 様々なデータセンター Sugipooh
様々なデータセンター Sugipooh Tadashi Sugita
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所Hidetoshi Hirokawa
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NETterurou
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanAkihiko Horiuchi
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007Nozomi Kurihara
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~Takeshi Kuramochi
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jumpei Miyata
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門hoxo_m
 

En vedette (17)

簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
データセンターのお話Lxスタイル
データセンターのお話Lxスタイルデータセンターのお話Lxスタイル
データセンターのお話Lxスタイル
 
ベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみた
ベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみたベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみた
ベアメタルクラウドの運用をJupyter NotebookとAnsibleで機械化してみた
 
闇と向き合う
闇と向き合う闇と向き合う
闇と向き合う
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
様々なデータセンター Sugipooh
様々なデータセンター Sugipooh 様々なデータセンター Sugipooh
様々なデータセンター Sugipooh
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
 
とにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたいとにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたい
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 

Similaire à Ansibleで始めるインフラ構築自動化

OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化Hideki Saito
 
Okinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleOkinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleHideki Saito
 
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Hiroshi Okano
 
Ansible AWXで一歩進んだプロビジョニング
Ansible AWXで一歩進んだプロビジョニングAnsible AWXで一歩進んだプロビジョニング
Ansible AWXで一歩進んだプロビジョニングsugoto
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstartHideki Saito
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからTakeshi Kuramochi
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi昌桓 李
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jAkira Yoshiyama
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたatk1234
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料Hidetoshi Hirokawa
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!Wataru NOGUCHI
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
About OpenStack DBaas (trove)
About OpenStack DBaas (trove)About OpenStack DBaas (trove)
About OpenStack DBaas (trove)Ikuo Kumagai
 
OpenNebula on Ubuntu
OpenNebula on UbuntuOpenNebula on Ubuntu
OpenNebula on Ubuntuautumnalsky
 

Similaire à Ansibleで始めるインフラ構築自動化 (20)

OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
 
Okinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleOkinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - Ansible
 
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方
 
Ansible AWXで一歩進んだプロビジョニング
Ansible AWXで一歩進んだプロビジョニングAnsible AWXで一歩進んだプロビジョニング
Ansible AWXで一歩進んだプロビジョニング
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Ansible handson
Ansible handsonAnsible handson
Ansible handson
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
実録!AnsiblevsChef-solo
実録!AnsiblevsChef-solo実録!AnsiblevsChef-solo
実録!AnsiblevsChef-solo
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
About OpenStack DBaas (trove)
About OpenStack DBaas (trove)About OpenStack DBaas (trove)
About OpenStack DBaas (trove)
 
OpenNebula on Ubuntu
OpenNebula on UbuntuOpenNebula on Ubuntu
OpenNebula on Ubuntu
 

Plus de dcubeio

AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」dcubeio
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料dcubeio
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)dcubeio
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料dcubeio
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話dcubeio
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)dcubeio
 
BizReach x Marketo連携
BizReach x Marketo連携BizReach x Marketo連携
BizReach x Marketo連携dcubeio
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたdcubeio
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】dcubeio
 
春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13dcubeio
 
DynamoDBを導入した話
DynamoDBを導入した話DynamoDBを導入した話
DynamoDBを導入した話dcubeio
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことdcubeio
 
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー! すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー! dcubeio
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料dcubeio
 
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜dcubeio
 
【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力dcubeio
 
【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力dcubeio
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botdcubeio
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介dcubeio
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 dcubeio
 

Plus de dcubeio (20)

AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
BizReach x Marketo連携
BizReach x Marketo連携BizReach x Marketo連携
BizReach x Marketo連携
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみた
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】
 
春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13
 
DynamoDBを導入した話
DynamoDBを導入した話DynamoDBを導入した話
DynamoDBを導入した話
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
 
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー! すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
 
【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力
 
【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217
 

Dernier

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Dernier (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

Ansibleで始めるインフラ構築自動化