LoginSignup
8
8

More than 5 years have passed since last update.

Ansibleを使って複数ホストに同時にインストールしてみる

Last updated at Posted at 2014-11-30

構成管理ツール Ansible を使って複数ホストに何かをインストールしてみた。

動機、注意など

  • 環境が変わる度、 過去のメモを見ながら yum や apt を叩いたりするのに飽き飽きしている → うまい管理方法はないか
    • ゆるく Infrastructure as Code をやってみよう
  • まだよくわかっておらず、Ansible をシェルスクリプトっぽく便利に使ってみた感じなので、色々間違っていると思う。

やったこと

  • Docker を 複数ホストにインストールする
    • 別に Docker でなくても良かったが、今後使ってみようと思ったので

前提など

  • ローカル環境:
    • MacOSX (Mavericks) + Homebrew
  • 管理対象:
    1. 職場にある RHEL 6.6 (既に色々入っている)
    2. ローカルの仮想サーバー CentOS 6.6 (Vagrant で構築したばかり; 方法は後述)
  • EPEL版 Docker を インストールする
    • (RHEL 7 には docker が同梱されているため、そもそもこの方法ではうまくいかない)

Docker をインストールする Ansible playbook

  • Docker のCentOSへのインストールマニュアルを見ながら、同じような動きをする Playbook を作った
    • 単に上から順に書いただけなので、 Ansible の使い方や流儀には合っていなさそう
  • EPEL については、 Ansible Galaxy から見つけてきた、 EPEL を登録する Ansible Role を使う
    • CentOS 側は全く何も触っていないので、 EPEL を入れる必要があった
    • RHEL 側は EPEL が入っているので、 EPEL を入れるところは 何も起こらないはず(無害) (idempotency!)
docker-yum.yaml
- hosts: all
  sudo: yes
  tasks:
    - name: Install libselinux-python
      yum: name=libselinux-python state=present

- hosts: all
  sudo: yes
  roles:
    - goozbach.EPEL

- hosts: all
  sudo: yes
  tasks:
    - name: Install docker-io from yum
      yum: enablerepo=epel name=docker-io state=present
    - name: Start docker service
      service: name=docker state=started

手順

Ansible のインストール

keigoi@zorba$ brew update
keigoi@zorba$ brew install ansible

EPEL repo を有効にしてくれる Role を Ansible Galaxy からゲット

keigoi@zorba$ ansible-galaxy install goozbach.EPEL

インストール対象のホストを記述したファイルを準備.
ssh コマンドに渡すホスト名が使える模様.

hosts
[vagrant-centos]
vagrant-centos

[kirin]
123.45.67.89

実行 (以下はインストール完了後の実行ログ. 実際には Playbook に書き足しながら何度も実行したので、所々で changed と出る)

keigoi@zorba$ ansible-playbook -i hosts --ask-sudo-pass docker-centos.yml
sudo password:

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [vagrant-centos]
ok: [kirin]

TASK: [Install libselinux-python] *********************************************
ok: [vagrant-centos]
ok: [kirin]

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [vagrant-centos]
ok: [kirin]

TASK: [goozbach.EPEL | ensure directory /etc/pki/rpm-gpg/] ********************
ok: [vagrant-centos]
ok: [kirin]

TASK: [goozbach.EPEL | copy GPG key] ******************************************
ok: [vagrant-centos]
ok: [kirin]

...

TASK: [Start docker service] **************************************************
ok: [vagrant-centos]
ok: [kirin]

PLAY RECAP ********************************************************************
kirin                      : ok=16   changed=0    unreachable=0    failed=0
vagrant-centos             : ok=16   changed=0    unreachable=0    failed=0

付録:Vagrant を使った CentOS 環境構築

keigoi@zorba$ mkdir vagrant-centos && cd vagrant-centos
keigoi@zorba$ vagrant init chef/centos-6.6
keigoi@zorba$ vagrant up
keigoi@zorba$ vagrant ssh-config --host vagrant-centos >>~/.ssh/config # ssh vagrant-centos でログインできるように

余談

  • Vagrant を VirtualBox で動かすと遅いという話をどこかで見たので、 わざわざ Vagrant VMWare Integration を買ってしまった ($79)
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8