Terrariaのサーバの実装であるTShockが1.3系のサポートを始めたようなので、アップデート作業をしようと思った。
が、手順書コピペは今風じゃないので、ansibleか何かでやってみようと思った。
まだまだ書き途中だけど、monoのインストールまではうまくいったので、とりあえず。
tarの展開とビルド時間がかなりかかるので、2回目以降はskipするようにしてる。
yumも応答が遅すぎるのでどうにかできないか調べてる。インストール済みでskipしてほしいタスクに10秒はちょっとなー。
ファイルが存在したら何もしない動作にwhenとcreatesが使えるようなんだけど、どっちが良いのかわからない。
whenのほうはstatのタスクを1個書いてregisterで変数みたいなものを作る必要があるし、createsだと同じ記述を繰り返さないといけない可能性がある。
あと、そもそもmonoがアップデートされたら、このplaybookじゃmonoのアップデートできないじゃん、という問題もあるので、どうするかなぁ、というところ。引数とるようにしてmonoを置いてるディレクトリを削除すればよいのだけども。
そんなたくさんのサーバ管理しているわけでもないし手でやったほうがまだいいかなぁ、という感じ。
でもこういうところで始めないと覚えないしなぁ。
--- - hosts: terraria-server sudo: no vars: workspace_path: '~/src' mono_home: '~/local/mono' mono_tarball_name: 'mono-4.0.2' mono_tarball_url: "http://download.mono-project.com/sources/mono/{{ mono_tarball_name }}.5.tar.bz2" tasks: - name: 'install dependency packages' yum: name={{ item }} state=latest sudo: yes with_items: - gcc - gcc-c++ - gettext - make - name: 'create workspace' file: path="{{ workspace_path }}" state=directory - name: 'check exists local mono' stat: path="{{ mono_home }}/bin/mono" register: check_mono - name: 'download mono souce' get_url: url="{{ mono_tarball_url }}" dest="{{ workspace_path }}/{{mono_tarball_name}}.tar.bz2" when: not check_mono.stat.exists - name: 'extract mono source' command: tar xjvf "{{mono_tarball_name}}.tar.bz2" chdir="{{ workspace_path }}" creates="{{ workspace_path }}/{{ mono_tarball_name }}" when: not check_mono.stat.exists - name: 'configure mono' # "--prefix=~/..." was error. so, i was using "--prefix ~/..." command: ./configure --prefix "{{ mono_home }}" chdir="{{ workspace_path }}/{{ mono_tarball_name }}" when: not check_mono.stat.exists - name: 'build mono' command: make -j4 chdir="{{ workspace_path }}/{{ mono_tarball_name }}" when: not check_mono.stat.exists - name: 'install mono' command: make install chdir="{{ workspace_path }}/{{ mono_tarball_name }}" when: not check_mono.stat.exists