ansible 社内お勉強会資料

Preview:

DESCRIPTION

はじめてのAnsible、触りから少し飛ばしてGalaxy

Citation preview

いまどきCMツール入れてなかったので“Ansible”はじめました

makoto uehara

Whats Ansible ?

・構成管理 (CM: Configuration Management)ツール

・オーケストレーションツール

ライバル

ライバル

名前の由来

「ゲド戦記」の作家さんのSF作品の中で、”アンシブル”という超高速通信を行う機械が登場する

それが由来らしい

特徴

・冪等性:何回やっても同じ

・シンプル:プッシュ型でクライアントにエージェントは必要なし、python2.4以上が入っていてSSHできればOK。AnsibleはSSHのラッパー

・YAMLで書くプレイブック(構成ファイル。Cookbookみたいの)

特徴

・冪等性:何回やっても同じ

・シンプル:プッシュ型でクライアントにエージェントは必要なし、python2.4以上が入っていてSSHできればOK。AnsibleはSSHのラッパー

・YAMLで書くプレイブック(構成ファイル。Cookbookみたいの)

冪等性って

例えば

「ビール4本」を繰り返し注文する…

冪等性がないと

oh!

冪等性があると

何度やっても同じ構成に収束する

構成が同じサーバーを一定に簡単に増やす

特徴

・冪等性:何回やっても同じ

・シンプル:プッシュ型でクライアントにエージェントは必要なし、python2.4以上が入っていてSSHできればOK。AnsibleはSSHのラッパー

・YAMLで書くプレイブック(構成ファイル。Cookbookみたいの)

Ansibleはシンプル

・エージェントレス(プッシュ型)

・SSHできればOK

・インストールもyumで一撃

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel.repo

yum install --enablerepo=epel ansible

・Inventoryファイルという対象ホストを書けばすぐ使えるあとはplaybookを書くだけ

Ansibleはシンプル

5つの”S”

Simply Clear (分かりやすい)

Simply Fast (習得もインストールも早い)

Simply Complete (全部を揃えているからすぐに使える)

Simply Efficient (sshは効率的)

Simply Secure (sshは安全)

Chefをディする

役割いっぱい ミドルいっぱい

RabbitMQ

postgresql

Solr

Bookshelf

ChefServer

nginx

レシピはRubyで書くので学習コストいっぱい

特徴

・冪等性:何回やっても同じ

・シンプル:プッシュ型でクライアントにエージェントは必要なし、python2.4以上が入っていてSSHできればOK。AnsibleはSSHのラッパー

・YAMLで書くプレイブック(構成ファイル。Cookbookみたいの)

Playbook example[root@ansiblesvr001 playbook]# cat roles/hogecommon/tasks/hogehoge.yml

## Set /etc/sysctl.conf

- name: lineinfile sysctl.conf

sysctl: name="net.ipv4.ip_local_port_range" value=" 1024 65000" reload=yes state=present

### source install from Ansible Playbooks

- name: hogeuser user add

user: name=hogeuser shell=/bin/bash uid=999 group=hogewheel state=present

update_password=always password=hogehoge

## make directory

- name: directory make fox

file: path=/var/service/{{ item }} state=directory owner=hogeuser group=fox mode=0775

with_items:

- log

- data

## pkg download

- name: pkgs download

get_url: url={{ pkgurl }}/{{ servicename }}/{{ http_pkg }} dest=/usr/local/src/archive

誰でもなんとなく読める!

いいところ

・冪等性ある・ドライランある・モジュールたくさんある(モジュールの単位で冪等性があり一連の処理をまとめてる)

・一気に実行させずにステップ実行できる・分岐処理ある(httpd.confをサーバーによって分けれる)

・forkオプションで並列実行可能・serialでサーバー順次実行でローリングアップデート可能・情報沢山(ちょっとやってみたネタが多いけど・・)・開発活発

モジュール一例

Ansible Galaxy!

Aerospikeの構築ロール書いてAnsible-Galaxyに登録してみた

これ↓

Ansible Galaxy!

①ロールに対してansible-galaxy initを実行してメタデータを作る[root@ansiblesvr001 ~]# ansible-galaxy init aerospike/

The directory ./aerospike/ already exists.

You can use --force to re-initialize this directory,

however it will reset any main.yml files that may have

been modified there already.

怒られたので—force した↓そのあとgit push。[root@ansiblesvr001 ~]# ansible-galaxy init --force aerospike/

aerospike/ was created successfully

② README.mdとmetaが出来てる[root@ansiblesvr001 ~]# ll aerospike/

合計 32

-rw-r--r-- 1 root root 1328 11月 26 08:54 2014 README.md

drwxr-xr-x 2 root root 4096 11月 26 08:54 2014 defaults

drwxr-xr-x 3 root root 4096 11月 26 08:54 2014 files

drwxr-xr-x 2 root root 4096 11月 26 08:54 2014 handlers

drwxr-xr-x 2 root root 4096 11月 26 08:55 2014 meta

drwxr-xr-x 2 root root 4096 11月 26 08:54 2014 tasks

drwxr-xr-x 3 root root 4096 11月 26 08:54 2014 templates

drwxr-xr-x 2 root root 4096 11月 26 08:54 2014 vars

Ansible Galaxy!

あとはGalaxy上からAddする↓

Ansible Galaxy!③README.mdの中身はこんな感じで、Galaxyに上げたあとのトップ画面に出るっぽい。[root@ansiblesvr001 ~]# head aerospike/README.md

Role Name

=========

A brief description of the role goes here.

Requirements

------------

Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role

uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.

Ansible Galaxy!

④metaのmain.ymlの中身にcategoriesと書かれていて、デフォルトはコメントアウトされている。#を消して、今回Aerospikeなのでdatabase:nosqlをコメント解除した。その後Galaxyに上げるとdatabase:nosqlのカテゴリー内に無事アップされた

[root@ansiblesvr001 ~]# cat aerospike/meta/main.yml | more

# Below are all categories currently available. Just as with

# the platforms above, uncomment those that apply to your role.

#

categories:

#- cloud

#- cloud:ec2

#- cloud:gce

#- cloud:rax

#- clustering

#- database

- database:nosql

#- database:sql

#- development

#- monitoring

#- networking

#- packaging

#- system

Ansible Galaxy!

こうしてインフラチーム幸せになりました

「一番信頼できる作業が人力」を撲滅してゆくヾ( ̄∇ ̄=ノ

ご清聴ありがとうございました!