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で入れてるだけ
今回、変更するとしたら、
postgresqlとapacheの部分を削除
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をローカルで入れるやり方を確認する必要がありそう
続きは次回