読者です 読者をやめる 読者になる 読者になる

ログってなんぼ

日々のメモです

ansibleを試してみたメモ

f:id:Okisanjp:20160712181743p:plain

CentOS6のサーバーに対して、ローカルのmacからansibleを使って見たメモ

macにansibleをインストールする

Homebrew はてなブックマーク - Homebrew — OS X 用パッケージマネージャー なら簡単にインストール可能

$ brew install ansible

インベントリを作る

デフォルトでは hosts というファイルを探す。ansible.cfgで上書き変更可能

[test]
192.168.xxx.xxx

ローカルマシンからグローバルIPで操作したい場合にはグローバルIPを入れることもできる

FQDNも登録可能

コマンドを実行してみる

管理対象サーバーで任意のコマンドを実行

$ ansible test -i hosts -a 'date'

192.168.xxx.xxx | SUCCESS | rc=0 >>
2016年  4月  8日 金曜日 14:27:27 JST

-mで実行するモジュールを指定、-aで引数を指定という流儀だと思うがサーバー上でのコマンド実行モジュールが -mのデフォルトのため、-aつまり実行したいワンライナーのみを指定すれば良いというふうに理解した(今のところ)モジュールについてはもっと理解を深める必要があるなと思っているところ

ちなみに -i hostsはインベントリ(サーバー一覧)のファイル名を指定している部分なので、デフォルトのhostsで作成しているか、ansible.cfgで任意のファイルを指定してそのファイルが実在する場合、省略可能

$ ansible test -i hosts -a 'cat /etc/redhat-release'
192.168.xxx.xxx | SUCCESS | rc=0 >>
CentOS release 6.7 (Final)

Playbookを作る

対象サーバーのコマンドラインにて

$ htop
-bash: htop: コマンドが見つかりません

と、いうわけでhtopが入っていないサーバーにhtopをインストールするPlaybookを書いてみる

yum-repos.yml

まずhtopのインストール元のyumリポジトリ(EPEL)を登録

- name: add repos 'EPEL'
  yum: name=http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm state=present

monitor-tools.yml

---
- hosts: test
  become: True
  tasks:
    - name: Install htop
      yum: name=htop state=installed

文法チェック

$ ansible-playbook -i hosts yum-repos.yml --syntax-check

playbook: yum-repos.yml

task内容チェック

$ ansible-playbook -i hosts yum-repos.yml --list-tasks

playbook: yum-repos.yml

  play #1 (test):   TAGS: []
    tasks:
      add repos 'EPEL'  TAGS: []

dry-run

$ ansible-playbook -i hosts yum-repos.yml --check

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [192.168.xxx.xxx]

TASK [add repos 'EPEL'] ********************************************************
changed: [192.168.xxx.xxx]

PLAY RECAP *********************************************************************
192.168.xxx.xxx            : ok=2    changed=1    unreachable=0    failed=0

今回の場合、Playbookが複数あるので、各Playbookについてチェックしておく。ファイル名は、ワイルドカードで複数同時にチェックすることもできる

Playbookを実行

まずリポジトリ

$ ansible-playbook -i hosts yum-repos.yml

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [192.168.xxx.xxx]

TASK [add repos 'EPEL'] ********************************************************
changed: [192.168.xxx.xxx]

PLAY RECAP *********************************************************************
192.168.xxx.xxx            : ok=2    changed=1    unreachable=0    failed=0

次にmonitor-tools

$ ansible-playbook -i hosts monitor-tools.yml

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [192.168.xxx.xxx]

TASK [Install htop] ***********************************************
changed: [192.168.xxx.xxx]

PLAY RECAP *********************************************************************
192.168.xxx.xxx            : ok=2    changed=1    unreachable=0    failed=0

確認

実際に管理対象のサーバーにログインしてみてhtopが有るか確認する

$ htop

ちゃんとインストールされていれば大成功。

ansible本の日本語訳

オライリー・ジャパンから4/16発売です

https://twitter.com/okisanjp/status/718321511493459968

ansible、シンプルに使えそうでなかなか良さそうです

参考リンク

Ansible is Simple IT Automation はてなブックマーク - Ansible is Simple IT Automation

Ansible チュートリアル | Ansible Tutorial in Japanese はてなブックマーク - Ansible チュートリアル | Ansible Tutorial in Japanese

エージェントレスでシンプルな構成管理ツール「Ansible」入門 - さくらのナレッジ はてなブックマーク - エージェントレスでシンプルな構成管理ツール「Ansible」入門 - さくらのナレッジ