Ansibleの構成について考えよう

@maaya8585  石田真彩

@maaya8585    石田真彩

  • PyLadies Tokyo staff

    • Python歴はPyLadies Tokyoと一緒

  • Java女子部 副部長

  • 日本Javaユーザー会 ( JJUG ) 幹事メンバー

今日伝えたいのは

AnsibleでもDevOps重要

ってこと。

  Ansible とは?

何がインストールされていて

どんなチューニングがされているのか

コード化したファイルを使用して

サーバのセットアップを

自動化するツール

何度も同じサーバが作れる!

人のぬくもり溢れない!!

ファイル1枚で

ペロッと管理している時は何も考えなくても

使い勝手の良いツール

B    U    T    !!!

共通処理ファイルの出現

  •  異なる役割を持つサーバの一元管理

  •  複数サービスのサーバの一元管理

ぬくもりを生まないために...

Ansibleリポジトリの

構成管理が重要課題に!!

実際に発生した例を1つ。

1ミドルウェアにつき

1バージョンしか設定できない事件

 ぬくもり

危険性!!

roles/common/

├── files

│   └── pub_key

│       └── test2.pub

├── handlers

│   └── main.yml

 |── tasks

│   ├── main.yml

│   ├── network.yml

│   └── openssl.yml

├── templates

│   ├── init

│   │   └── init_ec2-status.j2

│   ── profile

│        └── profile_bashhistory.j2

└── vars

    └── vars.json

get_url: url={{ base.get_url }}Python-{{ versions.Python34 }}.tgz dest={{ directories.src }}

1ミドルウェアにつき

1バージョンしか設定できない事件

【var.json】

"Python33": {
        "prefix": "/usr/local/python3.3/"
},
 "Python34": {
            "prefix": "/usr/local/python3.4/"
 },
 "Python27": {
            "prefix": "/usr/local/python2.7/"
 },
 "Ruby21": {
            "prefix": "/usr/local/ruby2.1/"
 },
15:18:44 ansible$ ls -la ./roles/package/tasks/pyt*
7 23 14:04 ./roles/package/tasks/python27.yml
7 23 14:04 ./roles/package/tasks/python33.yml
7 23 14:04 ./roles/package/tasks/python34.yml

バージョン以外の

変数が

全部一緒・・・!

1ミドルウェアにつき

1バージョンしか設定できない事件

└── roles
├── python
│   ├── defaults
│   ├── files
│   ├── meta
│   ├── tasks
│   ├── templates
└   └── vars 

           ├── python27.json

           ├── python34.json

以下続く・・・・

15:18:51 maaya_ishida@ansible$ cat ./ignition/logreco/lr-m.yml 

 

---

- hosts: lr-m

  sudo: yes

  user: ansible_user

  vars_files:

    - ../roles/python/vars/python34.json

少しの気遣いで

Ops優しい

Devになろうー!!

@maaya8585

 

Fin.

と。

ここまでが10月のmeet upで話した内容。

冪等性が守られない事件

(Ansibleにおける)冪等性:

Ansibleの売りの一つ。

さっきまかびーが話していた通り、

Ansible playbook の「変更部分だけ」

を実行してくれる

冪等性が守られない事件

「変更部分だけ」

ではこんなソースだった場合どうなるでしょう

冪等性が守られない事件

- name: Be sure all packages are upgraded.
  yum: name=* state=latest
  tags:
    - initial

- name: Be sure common packages are installed.
  yum: name={{ item }} state=installed
  with_items:
    - ntp
    - gcc
    - gcc-c++
    - ftp
.
.
.
.

task.yml

冪等性が守られない事件

何が困るか。

冪等性が守られない事件

yum update 

実行時に最新のバージョンがあれば最新の情報にupdateされる。

 

  • gcc が自動update
  • ここにもしバージョンごとに大きな差異のあるシステムが書かれていたら・・・?
  • 1回目と2回目の差異が発生する   オワタ\(^o^)/ 

冪等性が守られない事件

yumを使うのであれば

バージョン指定しておこうね。

@maaya8585

fin.

少しの気遣いで

Ops優しい

Devになろうー!!

20151223_pyladies_lt

By maaya ishida

20151223_pyladies_lt

  • 1,076

More from maaya ishida