Upload
makoto-uehara
View
1.816
Download
0
Embed Size (px)
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!
こうしてインフラチーム幸せになりました
「一番信頼できる作業が人力」を撲滅してゆくヾ( ̄∇ ̄=ノ
ご清聴ありがとうございました!