OpenFOAMの環境構築2018

# OpenFOAMの環境構築
新しいバージョンがリリースされるたびにインストールは少し面倒くさい。
特にOpenFOAMはextend版(OpenFOAM+)などもあり、年に数回はインストール作業を~~せざる得ない~~したくなる。

それ以外に、毎年新年には新しい環境を作りたくなる人向けにAnsibleを用いたOpenFOAMの環境構築を紹介する

---
# ansibleFoamInstallation
* OpenFOAM-extendのサブプロジェクト
* サポートするOpenFOAMのディストリビューション
 + OpenFOAM 4.1
 + OpenFOAM 5.0
 + Foam-Extend 4.0
 + OpenFOAM v1612+
 + OpenFOAM v1706+
 + OpenFOAM v1712+

* サポートするOSのディストリビューション
 + CentOS7
 + ArchLinux
 + MacOS X (必要なパッケージのインストールは手動らしい)
 + Ubuntu 16.04 LTS
 + Fedora Linux
 + AlpineLinux
 + CentOS6 (OpenFOAM v4.0, v1612+, Foam-Extend 4.0はサポートせず)

* sudo権限は必要
* localhostで実行されることを想定（sshでもインベントリファイルや変数theHostなどを正しく設定すればできる)
 
詳しくはhttps://sourceforge.net/p/openfoam-extend/ansibleFoamInstallation/ci/default/tree/README.md を参照

---
# 下準備
以降、Ubuntu 16.04 LTSをベースに説明する

## Ansibleのインストール
Ubuntu 1604 LTS のパッケージマネージャーにあるAnsibleはバージョンが低いので
pipでインストールする。
rootユーザがAnsibleを実行できるようにsudoでインストール

```bash
sudo pip install ansible
```

## ansibleFoamInstallationのリポジトリ取得
Mercurialをインストール後、任意のディレクトリでリポジトリを取得する

```bash
sudo apt install -y mercurial
mkdir ~/src
cd ~/src
hg clone http://hg.code.sf.net/p/openfoam-extend/ansibleFoamInstallation
cd ansibleFoamInstallation
```

---
# OpenFOAMのインストールの設定
exampleConfigs/allFoams.ymlを下記のように書き換える

```yaml:exampleConfigs/allFoams.yml

---
- hosts: localhost
  roles:
#    - { role: pyfoam }
    - { role: swak4foam ,     distro: p1712 }
    - { role: swak4foam ,     distro: of50 }
#    - { role: swak4foam ,     distro: p1706 }
#    - { role: swak4foam ,     distro: p1612 }
#    - { role: swak4foam ,     distro: fe40 }
#    - { role: cfmesh ,        distro: of50 }
#    - { role: cfmesh ,        distro: p1706 , cfmeshversion: development}
#    - { role: cfmesh ,        distro: fe40 }
#    - { role: cfmesh ,        distro: p1612 }
#    - { role: openfoambuild , distro: of50 , buildopts: "WM_COMPILE_OPTION=Debug" }
```
これでOpenFOAM 5.0とv1712+がswak4foamと一緒にコンパイルできる

cfmeshはOpenFOAM 5.0には対応していないはずなのでコメントアウトしている
またコメントアウトにはしていますがv1706にはdevelopmentブランチのみ対応しているので変数cfmeshversionにdevelopmentを指定している

---
# Ansibleの実行
前述した通り、localhostで実行されることが想定されている

```bash
sudo ansible-playbook exampleConfigs/allFoams.yml --extra-vars="{'foamuser':'ubuntu'}"
 ```

foamuserをubuntuとしている。これにより/home/ubuntu以下にOpenFOAMがインストールされる。
python3をデフォルトにしている場合は下記のようにpython3のpathを指定する

```bash
sudo ansible-playbook exampleConfigs/allFoams.yml --extra-vars="{'foamuser':'ubuntu'}" -e "ansible_python_interpreter=/usr/bin/python3"
```

---
インストール結果

```bash
ls -lh /home/ubuntu/OpenFOAM

total 267M
drwxr-xr-x  3 ubuntu root   4.0K Jan 19 12:40 Additional-OpenFOAM-5.0
drwxr-xr-x  3 ubuntu root   4.0K Jan 19 09:43 Additional-OpenFOAM-v1712
drwxr-xr-x 11 ubuntu ubuntu 4.0K Jan 19 12:40 OpenFOAM-5.0
drwxr-xr-x 12 ubuntu   1001 4.0K Jan 19 09:43 OpenFOAM-v1712
-rw-r--r--  1 root   root    71M Jan 19 06:28 OpenFOAM-v1712.tgz
drwxr-xr-x  5 ubuntu ubuntu 4.0K Jan 19 13:05 site
drwxr-xr-x  6 ubuntu ubuntu 4.0K Jan 19 10:15 ThirdParty-5.0
drwxr-xr-x 12 ubuntu   1001 4.0K Jan 19 06:31 ThirdParty-v1712
-rw-r--r--  1 root   root   196M Jan 19 06:29 ThirdParty-v1712.tgz
drwxr-xr-x  3 ubuntu ubuntu 4.0K Jan 19 12:45 ubuntu-5.0
drwxr-xr-x  3 ubuntu ubuntu 4.0K Jan 19 08:39 ubuntu-v1712
```

無事インストールできている。

---
## 動作確認情報募集
動作確認情報、お待ちしております。
随時更新予定！


| versions |CentOS7 | ArchLinux | MacOS X | Ubuntu 1604 LTS | Fedora Linux | AlpineLinux | CentOS6 |
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| OpenFOAM 4.1    |  |  |  |  |  |  |  |
| OpenFOAM 5.0    |  |  |  |〇|  |  |  |
| Foam-Extend 4.0 |  |  |  |  |  |  |  |
| OpenFOAM v1612+ |  |  |  |  |  |  |  |
| OpenFOAM v1706+ |  |  |  |〇|  |  |  |
| OpenFOAM v1712+ |  |  |  |〇|  |  |  |