Subscribed unsubscribe Subscribe Subscribe

SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

Ansibleで遊ぶ

サーバ周りもコードでごにょごにょしたいなぁという時によく聞くのが構成管理ツールchefだけど、rubyは触ったことないし、pythonがいいなぁということで、ansibleを触って遊んでみた。 家にあるubuntu端末ではなく、vagrantcentosサーバを立てた環境。

Vagrant仮想マシン構築

最初にhostとDBサーバとWEBサーバの3台のCentOSマシンをVagrantで作成する。

>vagrant init chef/centos-6.5

次にvagrantfileの編集

>vi Vagrantfile

以下のように編集

 #config.vm.box = "chef/centos-6.5"

  config.vm.define "host" do |node|
    node.vm.box = "chef/centos-6.5"
    node.vm.hostname = "host"
    node.vm.network :private_network, ip: "192.168.43.51"
  end

  config.vm.define "web" do |node|
    node.vm.box = "chef/centos-6.5"
    node.vm.hostname = "web"
    node.vm.network :private_network, ip: "192.168.43.52"
  end

  config.vm.define "db" do |node|
    node.vm.box = "chef/centos-6.5"
    node.vm.hostname = "db"
    node.vm.network :private_network, ip: "192.168.43.53"
  end

Vagrantfileを編集後、vagrantを起動

>vagrant up

時間がかかるけれど、これでvagrantが動き出す。

CentOSにAnsibleをインストール

まずはhostにsshでログインする。

>vagrant ssh host

ログイン後、hostにAnsibleをインストールする。 インストール方法としては、pipを使ってインストール可能だが、今回はEPELからyumを使ってインスト―ルする。

$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo rpm -Uvh epel-release-6-8.noarch.rpm
$ sudo yum -y install ansible

これでansibelが入ったはず。

SSH接続

IP直打ちはめんどくさいのでhost名を名前解決するように.ssh/configを作成する。

$ sudo vi .ssh/config
Host web
    Hostname 192.168.43.52
Host db
    Hostname 192.168.43.53

これで名前解決するはずなのだが、何故かこのあとのssh接続で名前解決しない。。(調べます。。)

アクセス権限を変えてあげる

sudo chmod 600 .ssh/config

hostの鍵を作成する

$ sudo ssh-keygen -t rsa

webとdbに公開鍵を渡してあげる

$ sudo ssh-copy-id web

sshでアクセス

$ sudo ssh web

Ansibleを使ってみる(ping)

これで準備が整ったのでAnsibleでpingを打つまでをやってみる。 ansibleではInventoryファイルが必要となるので作成する。

sudo vi hosts

設定内容

[web]
192.168.43.52
[db]
192.168.43.53

イベントリーファイルの場所を設定ファイルに登録

$ sudo vi ansible.cfg

設定内容

[defaults]
hostfile = ./hosts

Inventoryファイルに設定されている全てのhosoに対してpingを飛ばす。 モジュール管理となるため-mのあとに動かすモジュールを指定(今回はping

$ sudo ansible all -m ping

結果...

192.168.43.53 | success >> {
    "changed": false,
    "ping": "pong"
}

192.168.43.52 | success >> {
    "changed": false,
    "ping": "pong"
}

これでAnsibleを使ってモジュールを動かすことができた。

ほんの入り口の入り口なのでまだ構成管理感が伝わってこないけれど、やっぱりサーバの設定もスクリプトで書きたいのでchefと並んで勉強しておかねばなと思った今日この頃。これから快適なAnsinbleライフが始まる。。


※参考:http://dotinstall.com/lessons/basic_ansible/29101

    http://yteraoka.github.io/ansible-tutorial/

Remove all ads