ansible入門 20151226

17
Ansible入門 1

Upload: kunihiro-morita

Post on 09-Feb-2017

318 views

Category:

Technology


0 download

TRANSCRIPT

Ansible入門

1

森田邦裕@morita92hiro kunihiro.morita.52

- 経歴- 組み込みエンジニア- ぼっちインフラエンジニア 2013~

2

Ansibleとは• Pythonで動く• コードでインフラを構成管理するツール

類似ツール• chef• puppet

3

なぜ必要?

4

構成管理ツールなし• 手順書を元に手動で設定• 手動なのでミスもおきる• 手順書は最新の状態?• 設定後、以前の状態に戻すにも別の手順書が必要• 秘伝のタレ• 試される記憶力

5

構成管理ツールあり• 手順をコードで記述• コードを実行して自動で設定• コードが最新の状態• バージョン管理して、以前の状態に戻すのも簡単• 何度実行しても同じ状態(冪等性)

6

Ansibleインストールお好みで• pip install ansible

• yum install ansible

• brew install ansible

7

Ansibleの要素• hosts

• module

• playbook

8

hosts作業対象となるホストを記述するファイル[web]192.168.0.10[db]192.168.0.20

9

moduleソフトウェアインストールや、サービス起動などの動きの部分• yum• service$ ansible -i hosts web -m ping192.168.0.10 | success >> { "changed": false, "ping": "pong"}

10

playbookホストとモジュール、オプションをまとめたファイル(yaml)- hosts: web sudo: yes tasks: - name: be sure httpd is installed yum: name=httpd state=installed - name: be sure httpd is running and enabled service: name=httpd state=running enabled=yes

11

playbook実行$ ansible-playbook -i hosts simple.ymlPLAY [web] ************************************************************

GATHERING FACTS ***************************************************************ok: [192.168.0.10]

TASK: [be sure httpd is installed] ********************************************changed: [192.168.0.10]

TASK: [be sure httpd is running and enabled] **********************************changed: [192.168.0.10]

PLAY RECAP ********************************************************************192.168.0.10 : ok=3 changed=2 unreachable=0 failed=0

12

Macでやってみる

13

hostslocalhost

14

playbook- hosts: localhost connection: local gather_facts: no tasks: - name: tap homebrew cask homebrew_tap: tap=caskroom/cask state=present

- name: install homebrew-cask homebrew: name=brew-cask state=latest

- name: install dockertoolbox homebrew_cask: name=dockertoolbox state=present

15

playbook実行$ ansible-playbook -i hosts localhost.yml -vv

PLAY [localhost] **************************************************************

TASK: [tap homebrew cask] *****************************************************<localhost> REMOTE_MODULE homebrew_tap tap=caskroom/cask state=present CHECKMODE=Trueok: [localhost] => {"changed": false, "msg": "added: 0, unchanged: 1"}

TASK: [install homebrew-cask] *************************************************<localhost> REMOTE_MODULE homebrew name=brew-cask state=latest CHECKMODE=Trueok: [localhost] => {"changed": false, "msg": "Package is already upgraded: brew-cask"}

TASK: [install dockertoolbox] ************************************************<localhost> REMOTE_MODULE homebrew_cask name=dockertoolbox state=present CHECKMODE=Truechanged: [localhost] => {"changed": true, "msg": "Cask would be installed: dockertoolbox"}

PLAY RECAP ********************************************************************localhost : ok=3 changed=1 unreachable=0 failed=0

16

Let'sInfrastructure as Code

17