シリーズと化してしまいましたね。
今回はRubyインストールです、2.3.1をインストールしました。
Rubyインストール
以下のようにする。
roles/web/tasks/ruby.yml
--- - name: get ruby 2.3.1 get_url: > url=https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz dest=/usr/local/src/ruby-2.3.1.tar.gz - name: uncompress ruby-archive command: > tar xvzf ruby-2.3.1.tar.gz chdir=/usr/local/src/ creates=/usr/local/src/ruby-2.3.1/Makefile - name: configure command: > ./configure --prefix=/usr/local/ chdir=/usr/local/src/ruby-2.3.1/ creates=/usr/local/src/ruby-2.3.1/Makefile - name: make command: > make chdir=/usr/local/src/ruby-2.3.1/ creates=/usr/local/bin/ruby - name: make install command: > make install chdir=/usr/local/src/ruby-2.3.1/ creates=/usr/local/bin/ruby
めっちゃハマったこと
./configureとmakeのタスクに「creates=/usr/local/bin/ruby-2.3.1」と指定して、ディレクトリが存在したら作業しないようにさせたかったんだけど、記述するとタスクがエラー吐いて爆発してしまう……。 結局解決方法がわからなくて、記述を削除して、make installの時だけ、rubyのバイナリが見つかったら作業しない、というようにしました。
追記
Makefileで判断すりゃいいと気付いたので追加してます。 shellのcreatesを見ると「a filename」と書いてあるので動かないのは当然であった。
WARNING出てないのでcommand:を利用していますが本来はshell使うほうが良いでしょうね。