Redmine構築のAnsibleを読み解く1

業務でRedmineが必要になりました。
で、Ansible使う必要があるので、、、
とりあえず、公式のplaybookを元に内容を読みといていろいろ置換していきたい
というかモノにしたい…

参考にしたサイトは以下
https://github.com/farend/redmine-centos-ansible/blob/master/site.yml

まずはyamlの中身

- hosts: redmine-servers

  roles:
    - system
    - pg
    - ruby
    - redmine
    - apache

このうちやりたいことからすると、
pgとapacheはそれぞれ
mysqlとnginxになるかな?

先にgroup_varsを見る
group_varsは、

# ----------------------------------------------------------------------
# データベースの redmine ユーザーのパスワード (変更推奨)
db_passwd_redmine: Must_be_changed!
# ----------------------------------------------------------------------

# Redmineのチェックアウト元URL
redmine_svn_url: http://svn.redmine.org/redmine/branches/3.4-stable

# Redmineのデプロイ先ディレクトリ
redmine_dir: /var/lib/redmine

# Redmineのデプロイ先ディレクトリのオーナー:グループ
redmine_dir_owner: apache
redmine_dir_group: apache

# Redmineで使用する日本語フォントファイル
redmine_font_path: /usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf

# pg_hba.confのパス
pg_hba_conf_path: /var/lib/pgsql/data/pg_hba.conf

# ダウンロードするRubyのソースコード
ruby_url_dir: https://cache.ruby-lang.org/pub/ruby/2.4
ruby_archive_version: ruby-2.4.1
ruby_archive_ext: tar.bz2
ruby_archive_name: "{{ ruby_archive_version }}.{{ ruby_archive_ext }}"

ruby_file_name: /usr/local/bin/ruby
work_dir: /tmp/redmine-setup

それぞれの中身を見てみる
まずはsystem

role/system/tasks/main.yml

- name: SELinuxの状態確認
  command:
    /usr/sbin/selinuxenabled
  register:
    result
  changed_when: false
  failed_when: result.rc not in [0, 1]

- name: 起動時にSELinux無効化 (/etc/sysconfig/selinux)
  become: yes
  selinux: state=disabled
  when: result.rc == 0

- name: SELinux無効化 (setenforce)
  become: yes
  command: setenforce 0
  when: result.rc == 0

- name: firewalldが起動しているか確認
  become: yes
  shell: firewall-cmd --state
  register: firewall_state
  ignore_errors: yes
  changed_when: false
  check_mode: no

- name: firewalldでHTTPを許可
  become: yes
  firewalld:
    zone=public
    service=http
    permanent=yes
    state=enabled
    immediate=yes
  when: firewall_state.rc == 0

- name: 開発ツールのインストール
  become: yes
  yum: name='@Development Tools'

- name: RubyとPassengerのビルドに必要な開発ツールやヘッダファイルのインストール
  become: yes
  yum:
    name='openssl-devel,readline-devel,zlib-devel,curl-devel,libyaml-devel,libffi-devel'

- name:  PostgreSQLとヘッダファイルのインストール
  become: yes
  yum:
    name='postgresql-server,postgresql-devel,python-psycopg2'

- name: Apacheとヘッダファイルのインストール
  become: yes
  yum:
    name='httpd,httpd-devel'

- name: ImageMagickとヘッダファイル・日本語フォントのインストール
  become: yes
  yum:
    name='ImageMagick,ImageMagick-devel,ipa-pgothic-fonts'

- name: そのほかのツールのインストール
  become: yes
  yum:
    name='subversion,git,which'

- name: 作業ディレクトリ作成
  file: path={{ work_dir }}
    state=directory
    mode=0755

色々インストールしてるけど、ほぼyumで入れてるだけ
今回、変更するとしたら、
postgresqlapacheの部分を削除
yumする前にリポジトリの指定、かなぁ
あとSELinuxとFirewalldは既に無効になってるはず、、、でもあってもいいか


作業ディレクトリはgroup_varsで
/tmp/redmine-setup
になるらしい

つぎはruby

roles/ruby/tasks/main.yml

- name: Rubyがインストールされているか確認
  command:
    test -f {{ ruby_file_name }}
  register:
    ruby_test_vars
  failed_when: ruby_test_vars.rc not in [0, 1]
  changed_when: false

- name: Rubyがダウンロード済みか確認
  command:
    test -f {{ work_dir }}/{{ ruby_archive_version }}
  register:
    ruby_src_test_vars
  failed_when: ruby_test_vars.rc not in [0, 1]
  changed_when: false

- name: Rubyのソースコードのダウンロード
  get_url:
    url={{ ruby_url_dir }}/{{ ruby_archive_name }}
    dest={{ work_dir }}
  when: ruby_test_vars.rc == 1 and ruby_src_test_vars.rc == 1

- name: Rubyのソースコードを展開
  unarchive:
    src={{ work_dir }}/{{ ruby_archive_name }}
    dest={{ work_dir }}
    copy=no
  when: ruby_test_vars.rc == 1 and ruby_src_test_vars.rc == 1

- name: Rubyのビルド1 (configure)
  command:
    ./configure --disable-install-doc
    chdir={{ work_dir }}/{{ ruby_archive_version }}
  when: ruby_test_vars.rc == 1

- name: Rubyのビルド2 (make)
  command:
    make
    chdir={{ work_dir }}/{{ ruby_archive_version }}
  when: ruby_test_vars.rc == 1

- name: Rubyのインストール
  become: yes
  command:
    make install
    chdir={{ work_dir }}/{{ ruby_archive_version }}
  when: ruby_test_vars.rc == 1

- name: bundlerのインストール
  become: yes
  gem:
    name=bundler
    version=1.17.3
    user_install=no
  environment:
    PATH: "/usr/local/bin:{{ ansible_env.PATH }}"

testコマンドを実行して、rubyのダウンロードとインストールを確認している
testコマンドは、ファイル等があるかどうかを判定できるコマンドらしい、知らなかった

その後、rubyのダウンロードを行うが、
ここはファイルコピーで代用できそう

bundlerのインストールまでを行なっているが、
gemをローカルで入れるやり方を確認する必要がありそう


続きは次回