ma*GAZ*ine

gaziroh の雑記帳

Ubuntu 16.04 インストールしてからすること

VMware仮想マシンUbuntu 16.04 をインストールしたあとにすること。Ubuntu日本語 Remix を入れる。

基本的な設定をして、基本的なモノを入れる

$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt install vim-nox
$ sudo update-alternatives --config editor
$ sudo apt install open-vm-tools-desktop

アップグレード後に vim を入れて、Open VM Tools を入れておく。

ユーザをつくる。

$ sudo vi /etc/login.defs
$ sudo adduser -uid 501 hoge
$ sudo adduser hoge sudo

/etc/login.defs で最小の UID と GID を 500 にしてから、UID 501 でユーザの作成。

ログアウトして、新しいユーザでログイン。

$ sudo vi /etc/group
$ sudo vipw
$ sudo chown -R systemadministrator.systemadministrator /home/systemadministrator

/etc/group の systemadministrator の GID を 500 にして、/etc/passwd の systemadministrator の UID を 500 にする。 その後、systemadministrator のホームディレクトリの所有を変更。このアカウントは使わないと思うけど一応。

諸々の設定と必要なモノを入れる

日本語のフォルダをなんとかする

$ env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

「英語のフォルダ名にする?」と聞かれるので変える。次回ログイン時に「日本語にする?」と聞かれるので、「もう聞かないで」として拒否。

フォントのインストール

$ wget http://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator.sh
$ wget http://www.rs.tus.ac.jp/yyusa/ricty/regular2oblique_converter.pe
$ wget http://www.rs.tus.ac.jp/yyusa/ricty/os2version_reviser.sh
$ chmod 755 *.sh
$ sudo apt install fontforge
$ wget https://github.com/google/fonts/blob/master/ofl/inconsolata/Inconsolata-Bold.ttf?raw=true
$ wget https://github.com/google/fonts/blob/master/ofl/inconsolata/Inconsolata-Regular.ttf?raw=true
$ mv Inconsolata-Regular.ttf\?raw\=true Inconsolata-Regular.tt
$ mv Inconsolata-Bold.ttf\?raw\=true Inconsolata-Bold.ttf
$ wget https://ja.osdn.net/frs/redir.php?m=jaist&f=%2Fmix-mplus-ipa%2F63545%2Fmigu-1m-20150712.zip
$ ./ricty_generator.sh Inconsolata-{Regular,Bold}.ttf migu-1m-{regular,bold}.ttf
$ sudo mkdir /usr/local/share/fonts/ricty
$ sudo cp Ricty*.ttf /usr/local/share/fonts/ricty/
$ fc-cache -fv
$ gconftool-2 --set /apps/gnome-terminal/profiles/Default/font --type string "Ricty Regular 10.5"

フォント、Ricty は入れておく。 適当にディレクトリを切って、スクリプトのダウンロード。 元のフォントのダウンロード。 zip からは適当にファイルを取り出す。 スクリプトの実行。 フォントのディレクトリを作成してファイルをコピー。fc-cache -fv して端末のフォントに設定。

Google Chrome

$ sudo apt install libappindicator1
$ sudo dpkg -i ~/Downloads/google-chrome-stable_current_amd64.deb

Chrome が要る。Google からダウンロードしておいて、依存関係がある libappindicator1 を入れてから、deb をインストール

Java を入れる

Java“WebUpd8” team の ppa を登録してインストール

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt update
$ sudo apt install oracle-java7-installer
$ sudo apt install oracle-java7-set-default
$ sudo apt install oracle-java8-installer
$ sudo apt install oracle-java8-set-default

上のサイトに書いてあるとおり。

Visual Studio Code

そろそろ deb のインストールが面倒になってきたので gdebi で楽をする。 Visual Studio Codedeb をダウンロードしておいて、

$ sudo apt install gdebi
$ sudo gdebi ~/Downloads/code_1.11.1-1491486998_amd64.deb

楽だ。

atom

$ sudo add-apt-repository ppa:webupd8team/atom
$ sudo apt update
$ sudo apt install atom

楽だ。

ちょっと真面目に Ansible

ちょっと真面目に Ansible を使ってみることにした。Python で書かれているってところがちょっと不安(自分は Python を使わないので)だけど、対象ホストにエージェントを入れないというのが良いかと思って。

エージェントがいらないということは、エージェント入りのイメージ等が不要、対象の作成と設定(パッケージのインストール等)を分けて考えなくて良いのが利点かなと思っている。

で、調べたことをまとめる。Ansible のいろいろなモノについてきちんと理解するところから。

要素をまとめる

用語集をつくるような感じでまとめてみる。

インベントリ ~ Inventory

対象ホストへの接続情報を定義してあるもの。グループ分けが可能。変数の使用が可能。

モジュール ~ Module

OS のパッケージのインストール、サービスの設定、ユーザ管理とか、ファイル操作なんていったことを実行できるもの。

プレイブック ~ Playbook

モジュールを使って「ユーザをつくる」とかの操作が書かれているスクリプトYAML で書く。

このくらい理解しておけば良いような気がする。

Ansible のセットアップ

まず Python が動く環境が必要。Mac 上では pyenv と pyenv-virtualenv の組み合わせで Python の 2 と 3 の環境をつくっている。ということで Ansible の 1 と 2 の環境をつくった。

Windows では VMware Workstation 上の仮想マシンUbuntu 16.04 に VirtualBoxVagrant、Ansible 2 を入れた環境をつくった。

VagrantVM を動かす

Vagrant で bento/centos-7.2 の box をつくり、それに対して作業してみる。

$ mkdir workdir
$ cd workdir
$ vagrant init bento/centos-7.2
$ vagrant up
$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/hoge/workdir/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

vagrant init したあとで Vagrantfile でネットワークの設定を書いておく。

  # config.vm.network "private_network", ip: "192.168.33.10"

の行のコメントを外しておく。

いよいよ Ansible

まず、Ansible の設定ファイル ansible.cfg仮想マシンをつくったり潰したりするから、ssh の known_hosts の無効化の設定をしておく。

[default]
host_key_checking = False

ということで、次はインベントリファイル ./hosts というファイルを作成。どうも、このファイル名を使っているものが多い。このファイルには接続などの情報が書かれる。

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/hoge/workdir/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

てな感じで、ssh の設定を出力して確認する。

vagrant-machine ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

見るからに Vagrant仮想マシンで Ansible でどんな感じで接続するか記述してあるという感じ。長いけど 1 行で書くらしい。

次にプレイブック。site.yml というファイル。

---
- name: プレイブックの実験
  hosts: all
  tasks]

こんな感じのなにもしないものをつくる。name は出力時に表示される。hosts は対象ホスト。all でインベントリにある全てのホストに対してということ。tasks が実際に実行されるタスク。

で、実行する。

$ ansible-playbook -i hosts site.yml 

PLAY [プレイブックの実験] ********************************************************

TASK [setup] *******************************************************************
ok: [vagrant-machine]

PLAY RECAP *********************************************************************
vagrant-machine            : ok=1    changed=0    unreachable=0    failed=0   

なにもしない設定だけど、setup というタスクが走っている。これは対象ホストの情報を取得している。ansible all -i hosts -m setup とすると出て来る表示が集めた情報。 この情報をファクツ(Facts)と言う。

次は、実際にタスクをつくってみる。今日はここまで。

S3FS-FUSE の罠

S3 にファイルを突っ込むのに S3FS を使おうと思い、いろいろやってみた。

まず、普通に使うには遅い以外の問題はあまりなかった。遅いってのが大きな問題かもしれないけど。

で、S3 にファイルが入った時点で Lambda で処理するんだけど、AWS の Web コンソールからファイルをアップロードした時には、正常に使えた。EC2 上でファイルを S3FS でマウントしているディレクトリにコピーすると、イベントが 2 回発生する。FTP でアップすると 3 回のイベントが。ファイルサイズが 0 のイベントと適切なファイルサイズのイベント。0 のイベントは捨てれば良いだろうが、ファイルサイズが中途半端な状態でイベントが飛ばないという保証はないなぁ。

ちなみに context.done() で終了させるときに context.done('処理終了!') のようにすると、異常終了ってことになるのね。これでリトライが走って、最初は何がなんだかわからなかった。

初めていぢるものはコワイな。

ほしいもの

ASUS
PB278QR
IKEA
テーブルトップ LINNMON の長さ 120cm か 150cm
脚 GODVIN
ケーブルオーガナイザー SIGNUM
固まっていない
モニタアーム

椅子はすでにある。

文房具

リーガルパッドのメーカーを。

Ampad のサイトにつながらない。 Ampad は American Pad & Paper の略なのね。

大雪

大雪というほどではないかもしれないけど、大雪。

とりあえず、長靴を履いて仕事場へ。女性は長めのブーツの人が多かった。男性は普通の靴の人でモタモタ歩く人が多かった。

いつもとほとんど変わらないのが女子高生。寒くないのだろうか?

LaunchBar

MacLaunchBar というランチャを使っている。

www.obdev.at

気に入っているんだけど、~/Applications/ に入れたアプリケーションがインデクシングされなくて困っていた。どこかに設定があるはずとは思っていたがそのままに。

で、やっと見つけた。

  1. Preferences を開き、Index メニューの Show Index を選択
  2. 左側のペーンで System の Application を選択
  3. 右側のペーンで Option をクリック(タブ?)
  4. リストの下の + ボタンをクリックして、~/Applications/ を追加

で追加できました。