尝试使用Ansible在多个主机上同时进行安装

我使用配置管理工具Ansible在多个主机上安装了一些东西。

动机、注意等

    • 環境が変わる度、 過去のメモを見ながら yum や apt を叩いたりするのに飽き飽きしている → うまい管理方法はないか

ゆるく Infrastructure as Code をやってみよう

まだよくわかっておらず、Ansible をシェルスクリプトっぽく便利に使ってみた感じなので、色々間違っていると思う。

做过的事情 de

    • Docker を 複数ホストにインストールする

別に Docker でなくても良かったが、今後使ってみようと思ったので

前提等

    • ローカル環境:

MacOSX (Mavericks) + Homebrew

管理対象:

職場にある RHEL 6.6 (既に色々入っている)
ローカルの仮想サーバー 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!)

- 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

从Ansible Galaxy获取一个可以启用EPEL仓库的Role。

keigoi@zorba$ ansible-galaxy install goozbach.EPEL

准备一个包含所需主机名称的文件,该文件将被用于安装目标主机。
似乎可以在ssh命令中使用该文件中的主机名。

[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环境。

    • Vagrant Cloud に 色々と OSイメージ(?) が置いてあるようなのでそれを使う

 

    • 今回使ったのは https://vagrantcloud.com/chef/boxes/centos-6.6

どこの誰が作ったのか分からない… 6.5 の記述を見るに、 https://github.com/opscode/bento が 元か。

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)
广告
将在 10 秒后关闭
bannerAds