何かを書く場所

迷走中・・・

rbenvをansibleつかってインストール

ansibleの勉強も兼ねて。

環境

今回はvagrantのprovisoningは使わずに、サーバを2台用意。 共にvagrant上に立てたcentos6.2

  • nodeA : ansibleを実行するサーバ
  • nodeB : rbenvをインストールするサーバ

VagrantFileは、それぞれIPのとssh用のポートを設定。

まずansibleが使える環境づくり

ここはvagrantのprovisioningで。
鍵は事前に作っておきます。
鍵の置き場所は適当に変えてください。

Ansible チュートリアル | Ansible Tutorial in Japaneseを参考に、vagrantの鍵を流用しようとしたのですが、何故かうまく鍵が使えず…

<nodeAのprovisioningスクリプト>

sudo yum update
sudo yum install -y ansible
sudo yum groupinstall -y "Development Tools"
sudo yum install openssl-devel
chmod 400 /vagrant/keys/id_rsa

nodeB側でも、鍵の登録をしておきます。

cat /vagrant/keys/id_rsa.pub >> ~/.authorized_keys

以上設定終わり。

まず疎通の確認から

これで、nodeAからつながるはず。
まず疎通の確認を、なのですがansibleでは接続先はファイルに書いておかないといけないので ファイルを作成します。

echo "{nodeBのIP} ansible_ssh_private_key_file=/vagrant/keys/id_rsa" >> hosts

これで、疎通確認ができるはず。

ansible -i hosts {nodeBのIP} -m ping

successってでれば、疎通成功!

rbenvのインストール

ようやく本題。

playbookはこんな感じ。 書き方が拙いのはご勘弁。

    - yum:
        name: git
        state: latest
      sudo: yes
    - yum:
        name: "@Development Tools"
        state: present
      sudo: yes
    - yum:
        name: "openssl-devel"
        state: present
      sudo: yes
    - git:
        repo: git://github.com/sstephenson/rbenv.git
        dest: "{{ rbenv_dir }}"
        accept_hostkey: yes
    - git:
        repo: git://github.com/sstephenson/ruby-build.git
        dest: "{{ rbenv_dir }}/plugins/ruby-build"
        accept_hostkey: yes
    - lineinfile:
        dest: ~/.bash_profile
        regexp: 'PATH=.*{{ rbenv_dir }}/bin'
        line: 'export PATH="{{ rbenv_dir }}/bin/:$PATH"'
    - lineinfile:
        dest: ~/.bash_profile
        regexp: 'rbenv init'
        line: 'eval "$(rbenv init -)"'

rubyのインストール

node2でrbenvコマンドが叩けるようになったので、あとはrubyをインストールするだけ

rbenv install --list
rbenv install 2.2.2
rbenv global 2.2.2
rbenv rehash

問題が1つ。

rubyの部分をansibleにするかどうか。
…冪等性とか考えると、playbook書くの面倒だし
…バージョン変更とか考えると、ファイル自体は別にするべきだろうし。

うーん、やめておくか。