オフラインでの自動化検証環境構築(手動)

# 環境構築
よんどころない事情によって、オフライン環境(=インターネットに疎通性がないクローズドな環境)で自動化環境を構築した際のメモ。

Vagrant部分に相当するサーバ構築は、DockerでもVMware Playerでもベアメタルでもお好きなものでどうぞ。

Jenkins、Mattermostは便利そうなのでいずれ思いますが、「習熟が～、管理が～、学習コストが～」と言われそうなので、ひとまず保留…(´・ω・｀)

#資材のダウンロード
オフラインでの環境構築になるため、あらかじめ資材をダウンロードします。

資材をダウンロードする歳、必ず経由するCentOS(オンライン)上ではyumでパッケージを管理しているため、CentOS(オフライン)上ではお手軽に「rpm -ivh XXXXX」でインストールします。

また、Pythonのライブラリを手軽にダウンロードするために、CentOS(オンライン)上にPythonをインストールしています。

```Bash:CentOS(オンライン)
yum install -y epel-release git curl wget

# 各アプリ用ディレクトリ作成
cd /tmp
mkdir -p tools python pip gitlab ansible jenkins mattermost

# 各種ツール
yum install -y --downloadonly --downloaddir=tools epel-release jq createrepo wget

# python関連
yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum install -y --downloadonly --downloaddir=/tmp/python python34u python34u-libs python34u-devel python34u-pip

# pip関連
yum install -y python34u python34u-libs python34u-devel python34u-pip
pip install --upgrade pip
pip download -d /tmp/pip --no-binary :all simplejson requests pip python-dateutil lxml PyYAML py2exe pep8 tqdm Flask mysql-connector-python

# Ansible関連
yum install -y --downloadonly --downloaddir=/tmp/ansible ansible

# GitLab関連
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install -y --downloadonly --downloaddir=/tmp/gitlab curl policycoreutils-python openssh-server postfix gitlab-ce

# jenkins
#curl -LkvOf --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.rpm -o "./jenkins"
#curl -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
#rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
#yum install -y --downloadonly --downloaddir=jenkins jenkins

# Mattermost
#wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm -P ./mattermost
#wget https://releases.mattermost.com/5.5.0/mattermost-5.5.0-linux-amd64.tar.gz -P ./mattermost
```

## Vagrant
[Vagrant2.0.3を使ったCentOS7.4の環境構築](https://qiita.com/You_name_is_YU/items/1bdf36270e9f594d1c7e)

```Bash:Windows(Cygwin)
cd [任意の作業用ディレクトリ]
vagrant init centos/7
vi Vagrantfile
```

```Bash:Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.box_check_update = true
  config.vm.network "private_network", ip: "192.168.20.10"  config.vm.provider "virtualbox" do |vb|
   vb.memory = "4096"
  end
  config.vm.provision "shell", inline: <<-SHELL
   # yum -y update
   # yum -y upgrade
  SHELL
end
```

```Bash:Windowsコマンドプロンプト
vagrant up
vagrant ssh
```

```Bash:CentOS(オフライン)で実施
sudo -s

# root パスワード設定(★対話形式★)
passwd root

# ホスト名設定
hostnamectl set-hostname "workstation"

# hosts設定
echo "192.168.20.10 workstation" >> /etc/hosts

# タイムゾーン設定
timedatectl set-timezone Asia/Tokyo

# SELINUX無効化
sed -i.bak "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config

# yum最新化
yum -y update
yum -y upgrade
```

```Bash:Windows(Cygwin)
vagrant reload
```

## Python
[Python 3 を CentOS 7 に yum でインストールする手順](https://weblabo.oscasierra.net/python3-centos7-yum-install/)

```Bash:CentOS(オフライン)で実施
rpm -ivh /tmp/python/*
pip install --upgrade /tmp/pip-*
pip install /tmp/pip/*
```

## GitLab
[CentOS7にgitlabをインストール](https://qiita.com/yuki476/items/5915f488fb052198c5ad)

```Bash:CentOS(オフライン)で実施
# rpmインストール
rpm -ivh /tmp/gitlab/*

# ポート穴あけ(必要に応じて)
# firewall-cmd --permanent --add-service=http

# URL設定(★対話形式でexternal_urlを変更★)
vi /etc/gitlab/gitlab.rb

# 再構築
gitlab-ctl reconfigure

# 正常性確認 (htmlタグだ見えればたぶんOK)
curl http://workstation
```

## Ansible
```Bash:CentOS(オフライン)で実施
rpm -ivh /tmp/ansible/*
```

## Jenkins
「習熟が～、管理が～」と言われそうなので、ひとまず保留…(´・ω・｀)
[JenkinsをCentOS 7にyumインストールする手順](https://weblabo.oscasierra.net/jenkins-install-centos7/)
[JenkinsとGitLabを連携する方法](https://qiita.com/takamii228/items/3598f403518c296f93f3)

## Mattermost
「習熟が～、管理が～」と言われそうなので、ひとまず保留…(´・ω・｀)
[Installing Mattermost on RHEL 7.1](https://docs.mattermost.com/install/install-rhel-71.html)
[JenkinsとGitLabとMattermostを連携する方法](https://qiita.com/takamii228/items/a0f4b2ef8107d6d3cd34)

# 参考にしたサイト
[Qiita マークダウン記法 一覧表・チートシート](https://qiita.com/Qiita/items/c686397e4a0f4f11683d)