Ubuntu16.04 LTS 初期設定

# 概要

Ansible Galaxyの対象がほとんどUbuntuだったり、Docker hubで提供されているイメージもほとんどDebianかUbuntu、TensorFlowのインストール説明がMacとUbuntuだったりと、世界標準のUbuntuをおさえておかなければと思いUnuntuはじめました。常時更新です。

# 事前作業

* VirtualBoxを使うとき
    * [VirtualBox CentOS6.7 64bitでNAT、ホストオンリーアダプターを使用](http://www.kakiro-web.com/memo/virtualbox-create-virtual-machine-centos6-2.html)
        * タイトルはCentOSですがVirtualBoxのNATとホストオンリーアダプタの設定はこれでいけます

# イメージからインストール

* [Ubuntu16.04 LTSのインストールと初期設定](http://eco.senritu.net/ubuntu16-04-lts-server_install_and_settings/)

# ログイン後の設定

## ネットワーク設定

``` shell
### ソフトを最新にアップデート
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo shutdown -r now

### 必要なソフトをインストール
$ sudo apt-get install openssh-server

### sshd起動
$ sudo systemctl enable ssh.service
$ sudo systemctl start ssh.service

### ネットワーク設定
$ sudo vi /etc/network/interfaces
============================================================
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

# The primary network interface
auto enp0s8
iface enp0s8 inet static
address 192.168.56.180
netmask 255.255.255.0
dns-nameservers 192.168.10.1
============================================================

### ネットワーク再起動
＄ sudo systemctl restart networking.service
```
(この後はsshでログインしての作業)

## ipv6設定

以下無効にする場合の設定

```
### 追加
# vi /etc/modprobe.d/disable-ipv6.conf
============================================================
options ipv6 disable=1
============================================================

### 一番下に追加
# vi /etc/sysctl.conf
============================================================
...
# ipv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
============================================================
# sysctl -p
```

## localeとTimezoneの設定

``` shell
### localeの設定
$ sudo dpkg-reconfigure locales
(ja_JP.UTF-8を選ぶ)

### Timezoneの設定
$ sudo dpkg-reconfigure tzdata
（Asia/Tokyoを選ぶ)

### 確認
$ localectl
============================================================
   System Locale: LANG=C
       VC Keymap: n/a
      X11 Layout: jp
       X11 Model: a4techKB21
============================================================

$ locale
============================================================
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
============================================================

$ date
============================================================
2016年  7月  2日 土曜日 07:43:06 JST
============================================================
```

# 各種ソフトウェアのインストール

## Ansible

``` shell
### 必要なパッケージのインストール
$ sudo apt-get install python build-essential libssl-dev libffi-dev python-dev
$ sudo sh -c "curl -kL https://bootstrap.pypa.io/get-pip.py | python"

### setuptoolsのアップグレード
$ sudo pip install --upgrade setuptools

### ansibleのインストール
$ sudo pip install ansible
```

## Docker

``` shell
### リポジトリを認証する鍵情報取得
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

### 以下作成(既存のファイルがある場合は他の記述は消す)
$ sudo vi /etc/apt/sources.list.d/docker.list
============================================================
deb https://apt.dockerproject.org/repo ubuntu-xenial main
============================================================

### apt package indexをupdateする
$ sudo apt-get update

### dockerのインストール
$ sudo apt-get install docker-engine

### dockerの起動
$ sudo systemctl enable docker.service
$ sudo systemctl start docker.service

### sudoをつけずdockerを実行する設定
$ sudo groupadd docker
$ sudo usermod -aG docker ${USER}

### ログインしなおす
$ exit
$ ssh (server ip)

### 動作確認
$ docker ps
============================================================
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
============================================================

```