ansible 2.0 のサマライズとこれから

Post on 13-Feb-2017

3.255 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ansible 2.0AUTOMATION FOR EVERYONE

2016/2/18

TIS OSS Promotion Office

Takeshi Kuramochi

自己紹介

倉持健史(くらもち たけし)

現職 2015/4/1 TIS 入社 OSS推進室 「OSSの推進活用」 を担当

職歴 2011- NetApp.KK 2005- SIOS Technology, Inc. 2001- Panasonic Solution Technologies Co., Ltd.

目次

Ansible とは

Ansible v2.0 の特徴

Ansible v2.1 以降

Ansible とは

一言で、

システム構築・運用で、

人が楽をできる

簡単な自動化エンジン

プロビジョニング アクティビティ

アプリケーションサービスデプロイメント

システムコンフィグレーション

クラウド、VM、コンテナ起動

OSインストレーション

Orchestration

Configuration

Bootstrapping

AWS Cobbler

OpenStack

KickstartVMware

Capistrano

Fabric

Puppet

Chef

Azure

引用元:Provisioning Toolchain (Velocity2010) by Lee Thompson

Docker

Ansible

Ansible の特徴

複雑ではない

共通“言語”

学習コスト低

広範囲に適用

冪等である

エージェント不要

本番環境に適用し易い

UNIX/Linux の場合

構成される側にエージェント不要

SSH 接続

Python 必要

Ansible

SSH

構成される側UNIX/Linux

Windows の場合

構成される側にエージェント不要

HTTP/HTTPS 接続

PowerShell 3.0以上必要

Ansible

Web Service Managementプロトコル(SOAP)

構成される側Windows

使い方

必要なマシン Ansible がインストールされているマシン

必要なファイル Inventory(インベントリ) Playbook(プレイブック)

Inventory : my_hosts

Playbook : playbook.yml

Ansible v2.0 の特徴

Topics

Blocks エラーメッセージ改良 Strategy プラグイン追加 Include の改良 変数管理の改良 モジュールとプラグイン Windows 対応のアップデート 他の改良点 注意点

ANSIBLE2.0

Blocks

関連するタスクをグルーピング

become, when, tags 他のようなアトリビュートはblock上にセットでき、含まれる全てのタスクにより継承される

タスク実行の間(ロールバックのように)エラーをキャッチし処理するための方法を提供

http://docs.ansible.com/ansible/playbooks_blocks.html

Blocks – グルーピングtasks:

- block:

- yum: name={{ item }} state=installedwith_items:- httpd- memcached

- template: src=templates/src.j2 dest=/etc/foo.conf

- service: name=bar state=started enabled=True

when: ansible_distribution == ‘CentOS’become: truebecome_user: root

Blocks – ネストtasks:

- block:- block:

- name: Install (Debian)apt: name=apache2 state=present

when: ansible_os_family == “Debian”- block:

- name: Install (Red Hat)apt: name=httpd state=present

when: ansible_os_family == “RedHat”

tags: package

Blocks – 変数のスコープ- hosts: localhost

vars:

example1: lelo

tasks:

- block:

- debug: var=example1

- debug: var=example2

vars:

example2: lola

- debug: var=example2

TASK [debug] ***************************

ok: [localhost] => {

"example1": "lelo"

}

TASK [debug] ***************************

ok: [localhost] => {

"example2": "lola"

}

TASK [debug] ***************************

ok: [localhost] => {

"example2": "VARIABLE IS NOT DEFINED!"

}

Blocks – 変数のスコープ- hosts: localhost

vars:

example1: lelo

tasks:

- block:

- debug: var=example1

- debug: var=example2

vars:

example2: lola

- debug: var=example2

TASK [debug] ***************************

ok: [localhost] => {

"example1": "lelo"

}

TASK [debug] ***************************

ok: [localhost] => {

"example2": "lola"

}

TASK [debug] ***************************

ok: [localhost] => {

"example2": "VARIABLE IS NOT DEFINED!"

}

Blocks – 変数のスコープ- hosts: localhost

vars:

example1: lelo

tasks:

- block:

- debug: var=example1

- debug: var=example2

vars:

example2: lola

- debug: var=example2

TASK [debug] ***************************

ok: [localhost] => {

"example1": "lelo"

}

TASK [debug] ***************************

ok: [localhost] => {

"example2": "lola"

}

TASK [debug] ***************************

ok: [localhost] => {

"example2": "VARIABLE IS NOT DEFINED!"

}

Blocks – エラーハンドリング #1- hosts: web

tasks:

- block:

- debug: msg="Hello World"

- command: /bin/false

rescue:

- debug: msg="I caught an error"

- command: /bin/false

when: ansible_os_family == "Debian"

- debug: msg="I handled an error"

always:

- debug: msg="This always executes"

Blocks – エラーハンドリング #2

• 例# any_errors_fatal on blocks works with

# 2.0.1+ (to be released)

---

- hosts: web

tasks:

- block:

- deploy task 1 ...

- deploy task 2 ...

rescue:

- undo task ...

- undo task ...

any_errors_fatal: true

Block内処理 に失敗したら

リカバリ をして

Playbook を抜ける(アボート)する

エラーメッセージ改良# 1.9.4

ERROR: us is not a legal parameter in an Ansible task or handler

# 2.0.1

ERROR! no action detected in task

The error appears to have been in'/home/centos/linux/crm/playbook.yml': line 11, column 7, but maybe elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

tasks:- name: Changing root password^ here

構文に関連しない場合のエラーも詳しい場所のサジェスチョン

Strategy プラグイン追加

新しく追加されたプラグイン

linear , free が用意されている

linear(デフォルト、~1.9.xと同じ) 全ホストの実行終了を待つ

serial ディレクティブ(並列数)と併用可

free 全ホストの実行終了を待たずに実行する

http://docs.ansible.com/ansible/playbooks_strategies.html

Include の改良(Loop)

tasks:

- include: users.yml

vars:

user: “{{ item }}”

with_items:

- user1

- user2

- user3with によるループ処理が可能

以前は、エラーになった使い方

http://docs.ansible.com/ansible/playbooks_loops.html#loops-and-includes

Include の改良(Facts)

# Before v2- include: RedHat.yml

when: ansible_os_family == "RedHat"

- include: Debian.yml

when: ansible_os_family == "Debian"

# With v2

- include: "{{ ansible_os_family }}".yml

例:ディストリビューション毎にタスクを実行

変数の優先順位 v1.*

1. extra vars

2. vars, vars_files, etc.

3. inventory vars – host vars 、group vars

4. facts

5. role defaults

変数の優先順位 v2.0

1. extra vars(command line –e)2. task vars (only for the task)3. block vars (only for tasks in block)4. role and include vars5. play vars_files6. play vars_prompt7. play vars8. set_facts9. registered vars10. host facts11. playbook host_vars12. playbook group_vars13. inventory host_vars14. inventory group_vars15. inventory vars16. role defaults

低http://docs.ansible.com/ansible/playbooks_variables.html

ansible_ssh_* について

“ssh”が取れて短くなっている

~ v1.9.4 v.2.0

ansible_ssh_user ansible_useransible_ssh_host ansible_hostansible_ssh_port ansible_port

http://docs.ansible.com/ansible/playbooks_variables.html

モジュール と プラグイン

新しいモジュール数 >200 EC2 , VMware , CloudStack , OpenStack , Windows 関連 Docker 関連モジュールの改良多し

inventory スクリプト、callbacks、lookups プラグインなども数十追加された

Windows 対応のアップデート

WinRM 接続における以下の設定が行えるようになった

win_copy で大きなファイルコピー可能~v1.9では3MB以上のファイルはエラーとなっていた

パラメータ 解説

ansible_winrm_schem httpかhttpsを指定

ansible_winrm_path WinRMエンドポイントのパスを指定

ansible_winrm_realm Kerberos認証のためのRealmを指定

ansible_winrm_transport 1つまたは複数(カンマ区切り)のトランスポートを指定

ansible_winrm_server_cert_validation ignoreかvalidateを指定

ansible_winrm_* WinRMプロトコルが提供する追加の引数をサポート

http://docs.ansible.com/ansible/intro_windows.html

Windows Module 2.0 Update

Corewin_lineinfile

Extraswin_acl win_iis_virtualdirectory win_regedit

win_dotnet_ngen win_iis_webapplication win_scheduled_task

win_environment win_iis_webapppool win_unzip

win_firewall_rule win_iis_webbinding win_update

win_nssm win_iis_website win_webpicmd

モジュール改良・修正

win_get_urlプロキシ対応

azure現在有効でないオプションを無効化

http://docs.ansible.com/ansible/win_get_url_module.html より

他の改良点

meta: refresh_inventory 強制インベントリファイルの再読み込み

delegate_facts ディレクティブの追加 委任したホストにfactを適用するか否か デフォルト:no(v1.9と以前と同様)

lookup , jinja2 filters

注意点 Playbook , Role & Module 100%下位互換をめざしたが、実際は約98.5%達成

Include の動的実行の注意 include されるタスクは実行時に評価される tags をつけるときは include にたいして設定する include 内の handler からは notify が機能しない

内部 API の変更 callback , connection , cache , lookup プラグイン

APIが変わったため、自作のプラグインに修正が必要 AnsibleのAPI(プラグインでない)と直接統合することで重大な変更が発生する

Ansible v2.1 以降

ハイライト

Windowsインフラの整備継続

ネットワークオートメーションのサポート

モジュールの拡張と機能強化継続

Core モジュールリポジトリはメインリポジトリにマージ

Extra モジュールはインストールのために別パッケージに

v2.1 ロードマップ

暫定ターゲット

2016年4月末

Modules Windows:ドメイン管理 , NTLM サポート

Network:ベンダー系(Cisco , Juniper , etc)

Docker:リファクタされる(一定の機能のまとまりで分離, docker_****)

VMware , Azure (要注意)

https://github.com/ansible/ansible/blob/devel/ROADMAP.md

Ansible Contributor Summit

2016/2/17

Topics CoreやExtrasのコントリビューションについて PRs、ISSUEのワークフロー ロードマップの在り方 アーキテクチャ ドキュメント テスト Galaxy

https://github.com/ansible/ansible/blob/devel/ROADMAP.md

参考 Ansible 2.0 Launch

http://www.ansible.com/blog/ansible-2.0-launch

CHANGELOG.md https://github.com/ansible/ansible/blob/devel/CHANGELOG.md

What’s New in Ansible 2.0 (Webinar) https://www.ansible.com/webinars-training

Ansible 2.0 and Beyond (James Cammarata)

Roadmap https://github.com/ansible/ansible/blob/devel/ROADMAP.md

参考 Ansible 2.0 @r_rudi 若山史郎さん (in Ansible Meetup Tokyo)

https://speakerdeck.com/shirou/ansible-2-dot-0-at-ansible-meetup-in-tokyo-2015-dot-09

Ansible 2.0 変更点まとめ http://qiita.com/yuta_h3/items/30dcfd939cb13b7e24fa

Ansible で Windows Server 2012を構成する http://qiita.com/tksarah/items/5f5916ec9236f24ff2a8

top related