2015年12月14日月曜日

Proxmox VE 4.1 リリース

2015/12/11にリリースされていました。

以下URLまんまですが変更点は以下の通り
http://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_4.1

Linux kernel 4.2 → Linux kernel 4.2.6へ
systemdによるサービスの起動/停止
NTPがデフォルトで有効
インストール時のZFSディスクを8つまでサポート
LVMのシンプロビジョニングサポート
LXCコンテナのサイズ改善
LXCのFedora22とUbuntu15.10のサポート
ガルシア語(スペイン語?)のサポート
WOLのサポート?(KVM: update network boot ROMs)
Turnkey Linux LXC アプライアンスのサポート
pvereportコマンドの追加(ProxmoxVEのシステム情報を出力)
コンテナのHAサポート
その他もろもろのバグ改善

Turnkey Linux、初めて知りました。
勉強不足ですね。

2015年12月10日木曜日

Proxmox veで各コンテナの使用量を比較する

コンテナは基本、ライブマイグレーションできない(できそう)ので
じゃあCoreOSをVMとして作成してコンテナ動かせばライブマイグレーション
できることになるのでは、と思い(VMwareが既に思いついてましたが)
以下、比較してみました。

比較用コンテナ:CentOS7

LXCコンテナ
 メモリ 47MB
 →そりゃそうですね


VM:CoreOS配下でdokcerコンテナ起動
 メモリ 149MB
 →+100MBですが低い値で稼働できますね


VM:CentOS7S配下でdokcerコンテナ起動
 メモリ 629MB
 →まんま仮想マシンCentOSのリソースが使ってますね・・・

VM:VMware PhotosOS配下でdokcerコンテナ起動
 メモリ 112MB
 →おおっCoreOSよりもメモリ節約できていますね

ライブマイグレーションの恩恵を考えるとVMとしてコンテナ用ホストを作成してその配下で
コンテナを動かすという運用もコンテナによってはありではないでしょうか。
vMotionとか簡単にできますしね。


2015年12月9日水曜日

手っ取り早くfluentdを試す。

CentOSにてログ収集ツールfluentdを手っ取り早く試す手順です。(手っ取り早いか?)

 参考URL
 http://docs.fluentd.org/articles/install-by-rpm


【インストール】
 ログ受信側、送信側で以下を実行します。



curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
service td-agent start



【ログ設定】
①ログ受信側


mkdir /var/log/fluentd/
chmod 744 /var/log/fluentd/
vi /etc/td-agent/td-agent.conf


td-agent.confを以下に編集


<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>
<match log.*>
  type file
  path /var/log/fluentd/messages.log
  time_format %Y%m%dT%H%M%S%z
</match>


サービス再起動


service td-agent restart


②ログ送信側


mkdir /var/log/fluentd/
chmod 744 /var/log/fluentd/
vi /etc/td-agent/td-agent.conf
chmod 644 /var/log/messages

td-agent.confを以下に編集


<source>
  type tail
  path /var/log/messages
  format syslog
  pos_file /var/log/fluentd/messages.pos
  tag log.messages
</source>
<match log.*>
  type forward
  <server>
    host [ログ送信側のIPアドレス]
    port 24224
  </server>
</match>

サービス再起動


service td-agent restart


【動作確認】
①ログ送信側/受信側
 
 /var/log/td-agent/td-agent.log にエラーログないことを確認

②ログ送信側


 logger test

③ログ受信側

 /var/log/fluentd/ 以下にログが生成されたことを確認



2015年12月3日木曜日

CoreOSでDockerプライベートリポジトリを構築する

DockerRegistryを使用してローカル環境にコンテナイメージを格納するプライベートリポジトリサーバを作成します。
プライベートリポジトリを構築することでetcd2 + fleetのクラスタ環境をローカル内で完結することができます。

【参考URL】
https://coreos.com/os/docs/latest/registry-authentication.html
https://docs.docker.com/registry/deploying/

【事前準備】
docker pullは基本的にSSL通信です。
ローカルのリポジトリサーバ構築時でも同様にSSL通信を行うのですがその場合証明書作成等が必要となるため
cloud-config.ymlに下記を追記することで非SSL通信でdocker pullするようにします。
(インターネットからdocker pullする場合も非SSL通信になるのでご注意を)

```bash
write_files:
  - path: /etc/systemd/system/docker.service.d/50-insecure-registry.conf
    content: |
        [Service]
        Environment='DOCKER_OPTS=--insecure-registry="192.168.159.0/24"'
```

リポジトリサーバをダウンロードします。
リポジトリデータはホストの/home/registryにマウントすることでデータを永続化します。

docker run -d -p 5000:5000 --restart=always --name registry -v /home/registry:/var/lib/registry registry:2

ローカルリポジトリに登録するコンテナをダウンロードします

docker pull centos:6

ダウンロードしたコンテナイメージをタグ付けします。

docker tag centos:6 localhost:5000/centos

タグ付けしたコンテナイメージをアップロードします。

docker push localhost:5000/centos

CoreOSホストの/home/registryを参照するとdockerレジストリイメージが格納されていることがわかります。

ls /home/registry
docker


他のCoreOSホストからローカルリポジトリのイメージをダウンロードします
192.168.159.160はローカルレジストリを起動しているCoreOSホストのIPです。

docker pull 192.168.159.160:5000/centos

他のCoreOSホストからイメージをpushすることもできます。

docker push 192.168.159.160:5000/centos


許可されていないホストからも簡単にpushできるのでポート制限等必要ですね。




CoreOS flannelでホスト間通信を行う

etcd2でクラスタ構成後、複数CoreOSのコンテナ間で通信できるようにflannelを使用します。
設定は簡単で以下のURLに従ってcloud-config.ymlに追記するだけです。

参考URL
https://coreos.com/flannel/docs/latest/flannel-config.html

そのままconfigコピーで行けました。


coreos:
  units:
    - name: flanneld.service
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Service]
            ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
      command: start

    - name: redis.service
      content: |
        [Unit]
        Requires=flanneld.service
        After=flanneld.service

        [Service]
        ExecStart=/usr/bin/docker run redis
        Restart=always
      command: start



dockerサービスが起動する前に起動する必要があるとの記載があったため
   - name: docker.service
より上にconfigをコピーします。


#cloud-config

hostname: core[1-3]
coreos:
  units:
    - name: vmtoolsd.service
      command: start
      content: |
        [Unit]
        Description=VMware Tools Agent
        Documentation=http://open-vm-tools.sourceforge.net/
        ConditionVirtualization=vmware

        [Service]
        ExecStartPre=/usr/bin/ln -sfT /usr/share/oem/vmware-tools /etc/vmware-tools
        ExecStart=/usr/share/oem/bin/vmtoolsd
        TimeoutStopSec=5

    - name: 10-static.network
      runtime: no
      content: |
        [Match]
        Name=eno16777984

        [Network]
        Address=192.168.1.[1-3]/24
        Gateway=192.168.1.254
        DNS=192.168.1.1
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start

    - name: flanneld.service
      drop-ins:
        - name: 50-network-config.conf
          content: |
            [Service]
            ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
      command: start

    - name: redis.service
      content: |
        [Unit]
        Requires=flanneld.service
        After=flanneld.service
        [Service]
        ExecStart=/usr/bin/docker run redis
        Restart=always
      command: start

    - name: docker.service
      command: start
  oem:
    bug-report-url: "https://github.com/coreos/bugs/issues"
    id: vmware
    name: VMWare
    version-id: "9.10.0-r1"
  etcd2:
    discovery: "[curl -w "\n" 'https://discovery.etcd.io/new?size=3']"
    advertise-client-urls: "http://192.168.1.[1-3]:2379"
    initial-advertise-peer-urls: "http://192.168.1.[1-3]:2380"
    listen-client-urls: "http://0.0.0.0:2379,http://0.0.0.0:4001"
    listen-peer-urls: "http://192.168.1.[1-3]:2380,http://192.168.1.[1-3]:7001"



すでにCoreOSでDockerが起動しているのでホストを再起動します。
再起動するとredisというコンテナが作成されていました。
flannelはコンテナとして動作するのですね。

コンテナを新規作成後ipアドレスを確認すると[10.0.0.0/16]セグメントでIPアドレスが割り当てられていました。
コンテナはもちろんCoreOSからでもpingが通ります。


CoreOS etcd2でDNS Discoveryでクラスタ構成を組む

DNS Discoveryを利用したCoreOSのetcd2クラスタ環境を構築しました。
DNSサーバにSRVレコード追加するだけですので本番環境ではDNS Discovery方式が簡単かつメンテナンスしやすいのではないでしょうか。

参考URL
https://coreos.com/etcd/docs/2.0.12/clustering.html#dns-discovery

上記にて
listen-client-urls http://infra0.example.com:2379
とあるのですが
listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001
としないとクラスタ組めませんでした。

【準備】
 ディスカバリ用のDNSサーバを構築します。
  etcdクラスタのAレコード及びSRVレコードを作成します。
 めんどくさいのでWindowsサーバにDNSの役割追加して以下のレコード構成にしました。


[DNSサーバ]
 -[前方参照ゾーン]
  -[test.com]
      (親フォルダと同じ) CNAME [DNSサーバ].test.com
      (親フォルダと同じ) NS [DNSサーバ]
      (親フォルダと同じ) SOA  [DNSサーバ]
      [DNSサーバ] A  192.168.159.160
      etcd001 A 192.168.159.161
      etcd001 A 192.168.159.162
      etcd001 A 192.168.159.163
      -[_tcp]
        _etcd-server SRV [0][0][2380]etcd001.test.com
        _etcd-server SRV [0][0][2380]etcd002.test.com
        _etcd-server SRV [0][0][2380]etcd003.test.com


 SRVレコードはサービスに[_etcd-server] ポート番号に[2380]を指定してクラスタ参加ホストを登録します。

後は以下の要領でcloud-config.ymlを登録します。


#cloud-config

hostname: etcd00[1-3]
coreos:
  units:
    - name: vmtoolsd.service
      command: start
      content: |
        [Unit]
        Description=VMware Tools Agent
        Documentation=http://open-vm-tools.sourceforge.net/
        ConditionVirtualization=vmware

        [Service]
        ExecStartPre=/usr/bin/ln -sfT /usr/share/oem/vmware-tools /etc/vmware-tools
        ExecStart=/usr/share/oem/bin/vmtoolsd
        TimeoutStopSec=5
    - name: 10-static.network
      runtime: no
      content: |
        [Match]
        Name=eno16777984

        [Network]
        Address=192.168.159.16[1-3]/24
        Gateway=192.168.159.2
        DNS=192.168.159.160  
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: docker.service
      command: start
  oem:
    bug-report-url: "https://github.com/coreos/bugs/issues"
    id: vmwarea
    name: VMWare
    version-id: "9.10.0-r1"

  etcd2:
    name: etcd00[1-3]
    discovery-srv: test.com
    initial-advertise-peer-urls: http://etcd00[1-3].test.com:2380
    initial-cluster-token: etcd-cluster-1
    initial-cluster-state: new
    advertise-client-urls: http://etcd00[1-3].test.com:2379
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://etcd00[1-3].test.com:2380



クラスタ追加する場合はSRVレコードにホストを登録するだけですので非常に管理もしやすいですね。

2015年11月27日金曜日

CoreOSでクラスタ構成を組む(etcd2 + fleet)

以下、参考URL

https://coreos.com/fleet/docs/latest/launching-containers-fleet.html

「コンテナはフォアグラウンドで何か動いていないとすぐに落ちる」という前提を理解していなかったので

ExecStart=/usr/bin/docker run --name -it test centos:6 と実行してすぐに落ちる!と首をかしげていました・・・。

参考URLそのままで簡単に構成できます。

①クラスタ対象のコンテナをサービス化するファイルを作成
②fleetctl start コマンドでコンテナ登録

CoreOSクラスタの任意のホストで下記ディレクトリに移動します。


cd /etc/systemd/system


コンテナを起動するためのserviceファイルを作成します。


vi test.service



[Unit]
Description=test
After=docker.service
Requires=docker.service 

#↑実行後にDockerサービスを要求、起動する

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill test #実行前にtestコンテナがある場合は停止
ExecStartPre=-/usr/bin/docker rm test #実行前にtestコンテナがある場合は削除
ExecStartPre=/usr/bin/docker pull centos:6 #実行前にcentos:6イメージをダウンロード
ExecStart=/usr/bin/docker run --name test centos:6 top -b #コンテナ[test]を[centos:6]イメージで実行しtop コマンドを実行
ExecStop=/usr/bin/docker stop test #fleetctl stopコマンドでtestを停止する

以下コマンドでfleetでtestコンテナを起動します。


fleetctl start test.service


以下コマンドでfleetでtestが起動していることを確認します。


fleetctl list-units
UNIT            MACHINE                         ACTIVE          SUB
test.service    1e0536bd.../192.168.159.140     active          running


discovery.ioサービスを使用したetcd2クラスタ3台構成では残り1台になるとfleetに登録しているクラスタが停止しました。
どこかでクラスタは4台推奨と書いてあった気がします。

さらに高可用性クラスタ(同じコンテナイメージを複数立てる)を構成する場合は[X-Fleet]オプションを追加します。


[Unit]
Description=test2
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill test2
ExecStartPre=-/usr/bin/docker rm test2
ExecStartPre=/usr/bin/docker pull centos:6
ExecStart=/usr/bin/docker run --name test2 centos:6 top -b
ExecStop=/usr/bin/docker stop test2

[X-Fleet]
Conflicts=test2@*.service


以下コマンドでfleetでtest2コンテナを3台起動します。


fleetctl start test2@1.service
fleetctl start test2@2.service
fleetctl start test2@3.service


以下コマンドでfleetでtest2が起動していることを確認します。


fleetctl list-units
UNIT            MACHINE                         ACTIVE          SUB
test2@1.service 708896cf.../192.168.159.139     active          running
test2@2.service c8fce403.../192.168.159.141     activating      start-pre #起動中でした
test2@3.service 1e0536bd.../192.168.159.140     active          running

docker pullでイメージを引っ張るので本番環境ではdockerイメージを格納した共有サーバ的なものが必要になるんですね。
まだまだ勉強が必要です。

2015年11月26日木曜日

CoreOSでクラスタ構成を組む準備をする(etcd2 + fleet)



以下、参考URL

https://coreos.com/os/docs/latest/cloud-config.html
https://coreos.com/os/docs/latest/cluster-discovery.html

「共有ディスクもなしにクラスタなんてどうやるの?」と典型的なインフラエンジニアの思考をしていたため
理解に時間がかかりました・・・。

①コンテナをサービス化することでCoreOSホスト障害時に他のCoreOSでサービス化したコンテナを動かす。
②サービス化したコンテナはDocker pullでコンテナをダウンロードしてから起動する
という理解でしょうか。
いうまでもなくデータセンター向きですねDocker

etcd2とfleetの役割ですがetcd2が複数のCoreOSを束ねてfleetが束ねたCoreOS群を管理、コンテナを起動するイメージ
でしょうか。
https://coreos.com/using-coreos/clustering/


【事前準備】
クラスタ管理するためのディスカバリの仕組みを構成します。
ディスカバリサーバによって動的にクラスタが構成されるため容易にクラスタ管理が可能となります。
従来はクラスタ追加、削除に一苦労でしたがこれは便利ですね。
ディスカバリサーバは自前構築も可能ですがCoreOSでサービス提供されているのでこちらを使います。
以下コマンドを実行するのみ


curl -w "\n" 'https://discovery.etcd.io/new?size=3'


上記コマンド実行結果を後述するcloud-configに記載します。

今回はVMwarePlayerでCoreOS3台を構築してクラスタ構成を組みます。
VMwarePlayerでのCoreOSの作り方は以下を参照ください。
http://qiita.com/umchifre/items/3ed0d1e5fea53f3fcc61

cloud-configは以下のようになります。
 [1-3]はCoreOS3台でそれぞれ置き換えてください。(IPアドレス、ホスト名)
 discovery: にて下記コマンド結果のURLを貼り付けてください
  curl -w "\n" 'https://discovery.etcd.io/new?size=3'
 listen-client-urls: は0.0.0.0でOKです。


#cloud-config

hostname: core[1-3]
coreos:
  units:
    - name: vmtoolsd.service
      command: start
      content: |
        [Unit]
        Description=VMware Tools Agent
        Documentation=http://open-vm-tools.sourceforge.net/
        ConditionVirtualization=vmware

        [Service]
        ExecStartPre=/usr/bin/ln -sfT /usr/share/oem/vmware-tools /etc/vmware-tools
        ExecStart=/usr/share/oem/bin/vmtoolsd
        TimeoutStopSec=5

    - name: 10-static.network
      runtime: no
      content: |
        [Match]
        Name=eno16777984

        [Network]
        Address=192.168.1.[1-3]/24
        Gateway=192.168.1.254
        DNS=192.168.1.1
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: docker.service
      command: start
  oem:
    bug-report-url: "https://github.com/coreos/bugs/issues"
    id: vmware
    name: VMWare
    version-id: "9.10.0-r1"
  etcd2:
    discovery: "[curl -w "\n" 'https://discovery.etcd.io/new?size=3']"
    advertise-client-urls: "http://192.168.1.[1-3]:2379"
    initial-advertise-peer-urls: "http://192.168.1.[1-3]:2380"
    listen-client-urls: "http://0.0.0.0:2379,http://0.0.0.0:4001"
    listen-peer-urls: "http://192.168.1.[1-3]:2380,http://192.168.1.[1-3]:7001"

  users:
   - name: core
     passwd: [生成された乱数]
     groups:
     - sudo
     - docker
     ssh-authorized-keys:

上記にて3台のCoreOSインストール後以下コマンドで正常にクラスタ構成されていることを確認します。


core@core01 ~ $ etcdctl cluster-health

member 71d3cca95eb7fd22 is healthy: got healthy result from http://192.168.1.1:2379
member a44a8c7958024a51 is healthy: got healthy result from http://192.168.1.2:2379
member c8b976e5dd43adfd is healthy: got healthy result from http://192.168.1.3:2379
cluster is healthy

core@core01 ~ $ fleetctl list-machines

MACHINE         IP              METADATA
1e0536bd...     192.168.1.2 -
708896cf...     192.168.1.2 -
c8fce403...     192.168.1.3 -


NGの場合はcloud-configが正常に稼働しているか確認するために構成ファイルを再読み込みしてみてください。
errorが記録される場合はNGです。


coreos-cloudinit --from-file=./usr/share/oem/cloud-config.yml


あとはコンテナをサービス化してfleetで登録するのみです。
それはまた後程・・・。

2015年11月24日火曜日

CoreOSをVMwarePlayerにインストールする(iso)

「とりあえずVMwarePlayerでCoreOS動かしたい」だけの目的の場合での構築メモisoインストール、パラメータ変えてみた版です。

isoイメージから導入してみました。
以下URLからisoイメージをダウンロードします。

【Running CoreOS on VMWare】
https://coreos.com/os/docs/latest/booting-with-iso.html

以下要件で仮想マシン作成しisoブートします。

メモリ:1GB
プロセッサ:2
ハードディスク:8GB
ネットワークアダプタ:NAT
ゲストOS:その他

仮想マシンを起動します。
ユーザcoreでログインシェルに自動ログインしました。

ユーザcoreの一時パスワードを設定します

```bash
 sudo passwd core
```

ifconfig コマンドでIPアドレスを確認してTeraTermでユーザcoreでパスワードログインします。
sudo suします。

以下コマンドでユーザcoreの本パスワードと鍵を生成します。

ssh-keygen -t rsa
※Enter passphraseでパスワード入力

デフォルトでは/root/.ssh/以下に秘密鍵と公開鍵が生成されます。

公開鍵キーを確認します

```bash
 cat /root/.ssh/id_rsa.pub
```

cloud-config.ymlファイルを以下の要領で作成します。

vi cloud-config.yml

以下パラメータを追加して保存します。


```bash
#cloud-config

 hostname:core01

 coreos:
   units:
    - name: 10-static.network
      runtime: no
      content: |
        [Match]
        Name=eth0

        [Network]
        Address=192.168.99.101/24
        Gateway=192.168.99.2
        DNS=192.168.99.2

users:
 - name: core
   groups:
   - sudo
   - docker
   ssh-authorized-keys:
    - [cat /root/.ssh/id_rsa]※ssh-rsaを含めた乱数

```
上記は固定IP付与+鍵認証の設定です。
上記の場合、SSHログインはできますがローカルコンソールでのログインはできません。
ローカルコンソールでログインする場合は passwd: パラメータを追加するか
インストール後にpasswdコマンドでパスワードを設定します。

秘密鍵を確認してデスクトップに任意のファイルに保存します。

```bash
 cat /root/.ssh/id_rsa
```
以下コマンドを実行してインストールします。
※構文にエラーがある場合はインストールエラーになります。

```bash
coreos-install -d /dev/sda -c cloud-config.yml
```

インターネット経由でイメージファイルをダウンロードします。
Succsess!が表示されたらインストール完了です。
rebootで再起動します。

再起動後、TeraTermからcoreユーザでログインできることを確認します。
※ssh-keygen -t rsa で設定したパスワードと秘密鍵ファイルが必要です。


適当にコンテナ動かしてみます


 docker run --name centos -it centos /bin/bash


動きました
OVAと違ってVMware Tools Agentが入っていないですね。
OVAのcloud-config.ymlあたりの設定を見ればいいのかな・・・?
でもOVAと違ってcloud-config.ymlファイルがない・・・。

CoreOSをVMwarePlayerにインストールする(OVA)



「とりあえずVMwarePlayerでCoreOS動かしたい」だけの目的の場合での構築メモです。

CoreOSのイメージは最新のVMwarePlayer(VMware Workstation 12 Player)であればOVAが提供されています。

【Running CoreOS on VMWare】
https://coreos.com/os/docs/latest/booting-on-vmware.html

以下OVAファイルをダウンロードします。
http://stable.release.core-os.net/amd64-usr/current/coreos_production_vmware_ova.ova

VMwarePlayerで「仮想マシンを開く」で上記OVAファイルを選択します。

「インポート」をクリックします。
途中、失敗のダイアログが表示されるので「再試行」をクリックします。

インポート完了後、仮想マシン一覧に登録されるので「設定の編集」からネットワークの種類を「NAT」に変更します。(DHCPでIP勝手にとってくれるので・・・)

以降の作業は以下URLを参考にしました。

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2105725

仮想マシンを起動します。
ブートローダ画面表示されるので「e」キーを押します。
カーネル起動パラメータが表示されるので
「$usr_uuid」パラメータの次に「coreos.autlogin」と入力します。
F10キーを押して起動します。
ユーザcoreでログインシェルに自動ログインしました。

以降はTerTermで接続して作業します。
ユーザcoreの一時パスワードを設定します


 sudo passwd core


ifconfig コマンドでIPアドレスを確認してTeraTermでユーザcoreでパスワードログインします。
以下コマンドでユーザcoreの本パスワードを生成します。

 openssl passwd -1 [パスワード]

※本当は公開鍵/秘密鍵を生成したほうがよいのですがテストということで。詳細は参考URLを見てください。

上記コマンドを実行すると乱数が生成されるのでコピーします。
以下コマンドを実行します。


 vi /usr/share/oem/cloud-config.yml


以下パラメータを追加して保存します。


users:
 - name: core
   passwd:[生成された乱数]
   groups:
   - sudo
   - docker

再起動します。

再起動後、コンソール画面からcoreユーザでログインできること、TeraTermからcoreユーザでログインできることを確認します。

適当にコンテナ動かしてみます


 docker run --name ubuntu -it ubuntu /bin/


動きました
isoと違ってVMware Tools Agentが入っているので管理しやすいですね。

2015年11月20日金曜日

AmazonPrimeMusicをMVNOで使えるか → 使える

AmazonプライムユーザのためPrimeMusicがタダで使える(年会費3900円払ってるんですけどね)ということでやってみました。
外出先はOCNモバイルONEの一番安いコース使っています。(110MB/日)

制限なしと制限ありでの違いを検証するため残り10MBから制限された時の差分を確認、と思ったのですが音楽ファイルよりもパッケージ画像にデータを取られてしまい、「どの音楽聞こうかなー」とスワイプしていたらあっという間に制限に・・・。

ということで制限状態で利用してみました。
やはりパッケージ画像のダウンロードに時間を取られてしまい10秒程度くるくる回りますが、その後、音楽が流れてきたら特に途切れることなく聞くことができました。

これであれば制限されていてもなんとか聞けますね。
次の音楽の時にはやはりパッケージ画像のダウンロードに時間がかかりますが、画像読み込み完了すると聞くことができます。

流石に地下鉄乗っているときは途切れることがありますが。。。

ということでPrimeMusicはMVNOでもまあ、使えるのではないでしょうかという結果でした。

2015年11月13日金曜日

Windows10 10586 のNested Hyper-V で Hyper-V in ESXiはできるか→できない

11/13にWindows10のメジャーアップデート10586がリリースされました。
細かい修正点はさておきNested Hyper-Vが提供されたのが個人的に興味深い点です。
Nested Hyper-Vは「Hyper-Vの仮想マシンでHyper-Vが使える機能」とのことですが
じゃあHyper-VでESXiも起動できたらうれしいなーということでやってみました。

まずWindows10をWindowsUpdateで10586にアップデートします。(約1時間)
続きまして「Windowsの機能の有効かまたは無効化」でHyper-Vを有効にします。
Hyper-V管理マネージャから仮想マシンを作成してESXi6のisoをマウントして起動します。
「Relocating modules and starting up the kernel」で止まります・・・。
一旦仮想マシンを停止して以下を参照にNested Hyper-Vを有効にします。

http://blogs.technet.com/b/virtualization/archive/2015/10/13/windows-insider-preview-nested-virtualization.aspx

 1.管理者権限で「PowerShell」を実行
 2.下記コマンドを実行します。
 
 Invoke-WebRequest https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 -OutFile ~/Enable-NestedVm.ps1
 
 Enable-NestedVm.ps1  -VmName [仮想マシン名]
 
 3.Would you like to enable? の表示がされるので Y と入力します。
 
もう一度ESXi6仮想マシンを起動します。
「Relocating modules and starting up the kernel」で止まります・・・。

ということでダメでした

2015年11月2日月曜日

Zabbix3.0(アルファ版)をインストールする

Zabbix3.0アルファ版がリリースされていましたので試しにインストールしてみました。

ダウンロードページ(ソースのみ)
http://www.zabbix.com/jp/download.php

マニュアル
https://www.zabbix.com/documentation/3.0/


仮想環境にCentOS 6.7 minimalでインストールしてzabbix3.0を導入します。

Selinuxを無効化


vi /etc/selinux/config


  SELINUX=disabled に

ファイアウォール無効化
 

  service iptables stop
 chkconfig iptables off
 chkconfig ip6tables off


サーバ再起動


 reboot


CentOS6がサポートしているのでCentOS6で最新化


/etc/yum.conf


 exclude=kernel* centos* #追記


yum update


gccインストール


yum --disableexcludes=main install gcc


apacheとmysqlその他もろもろインストール
(ソースから導入するので必要なパッケージが多くて面倒です・・・)

yum install php php-mysql httpd mysql-server mysql-devel libxml2-devel net-snmp net-snmp-devel curl-devel gettext


phpは5.4以上なので以下の要領でインストール


rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install php --enablerepo=remi
yum install php-bcmath php-mbstring php-gd php-xmlwriter php-xmlreader --enablerepo=remi


Zabbixのインストール要件満たしているかバージョン確認

httpd -v #1.3.12以上
mysql -v #5.03以上
php -v #5.4.0以上

サービス有効化


chkconfig httpd on
chkconfig mysqld on


サービス起動


service httpd start
service mysqld start


ダウンロードしたソースを展開


tar -zxvf zabbix-3.0.0alpha.tar.gz


zabbixユーザ作成


groupadd zabbix
useradd -g zabbix zabbix


configure実行(とりあえず全機能)


./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2


インストール実施


make install


設定ファイル編集


vi /usr/local/etc/zabbix_server.conf


DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

zabbix起動


zabbix_server
zabbix_agentd


vi /etc/php.ini の編集


post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Tokyo


webコンソールのインストール


cd /var/www/html/
mkdir zabbix
cd /home/zabbix-3.0.0alpha3/frontends/php
cp -a . /var/www/html/zabbix/
cd /var/www/html/zabbix
cd locale
./make_mo.sh


データベース作成


mysql -uroot
> create database zabbix character set utf8;
> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';


スキーマインポート


cd [解凍先]/zabbix-3.0.0alpha3/database/mysql/
mysql -uroot zabbix < schema.sql
mysql -uroot zabbix < images.sql
mysql -uroot zabbix < data.sql


Webブラウザで以下の要領でzabbixWebコンソールにログインします。


http://[zabbixサーバのIPアドレス]/zabbix


welcome to Zabbix 3.0 で「Next step」をクリック
Check of pre-requisites ですべてOKであることを確認して「Next step」をクリック
Configure DB connectionでpasswordにzabbix(vi /usr/local/etc/zabbix_server.confのDBPasswordの値)と入力して「Next step」をクリック
Zabbix server detailsでzabbixサーバの詳細(省略可)を入力して「Next step」をクリック
Pre-installation summaryで「Next step」をクリック
Cannot create the configuration file.となり失敗したっぽいですが画面にある通りの手順を実行します。
「Download the configuration file」のリンクでphpファイルをダウンロード
下記ディレクトリに「zabbix.conf.php」をアップロード


 /var/www/html/zabbix/conf/


そのまま「Next step」とすると権限で怒られたので以下コマンドを実行。


 chmod 755 /var/www/html/zabbix/conf/zabbix.conf.php


ログイン画面が表示されました「admin/zabbix」でログイン

コンソール画面が表示された。

[Administration]-[User groups]-[Admin]から言語を日本語に変更する。

再ログインすると日本語表示に。

青い画面になりました。かっこいいですね

再起動後はzabbix_serverを実行しないとzabbixが起動しませんでした。
この辺は作りこみですかね。。。



2015年10月28日水曜日

ProxmoxVE4.0をクラスタ構成にする

下記URLを参考にProxmox VE4.0でクラスタを構成しました。

https://pve.proxmox.com/wiki/Proxmox_VE_4.x_Cluster

クラスタ構成については旧バージョンに比べて非常に簡単になりました。
コマンド4発でOKです。

【Proxmox1台目】
以下コマンドでクラスタグループを作成します。

 pvecm create [クラスタ名]

【Proxmox2台目】
以下コマンドでクラスタグループに参加します。

 pvecm add [Proxmox1台目のIPアドレス]

【Proxmox3台目】
以下コマンドでクラスタグループに参加します。

 pvecm add [Proxmox1台目のIPアドレス]

以下コマンドでクラスタの参加状況を確認します。

 pvecm status

続いてHAの設定を行います。

https://pve.proxmox.com/wiki/High_Availability_Cluster_4.x

こちらはコマンド3発でHA対象の仮想マシンorコンテナのIDにて以下コマンドを実行します。

 ha-manager add vm:100
 ha-manager enable vm:100

HAの検証についてはProxmoxのWebコンソールやコマンドで仮想ホストを再起動、停止してもHAとみなされないです。
今回はESXi上でProxmoxを稼働させてたので「パワーオフ」を実行しました。
実行後、3-5分程度で仮想マシンがフェールオーバーしました。

クラスタ2台構成でもやってみましたがフェールオーバーがうまくいきませんでした・・・。



2015年10月27日火曜日

Proxmox VE 4.0 正式リリース

Proxmox VE 4.0が2015/10/5に正式にリリースされています。
OpenVZからLXCへの移行方法についても下記に記載がありました。
個人的にはLXCのライブマイグレーションサポートが気になるところですがどうなんですかね。
リリースノート読む限り無理っぽい。。。

2015年10月22日木曜日

ESXi Embedded Host Clientを試す

2か月前の情報で恐縮ですがESXi Embedded Host ClientというvSphereCleint不要で
ESXiにコンソール接続できるツールが公開されております。
(Flingということでサポートはないですね)

ESXi Embedded Host Client
https://labs.vmware.com/flings/esxi-embedded-host-client

ESXi6.0環境で試してみました。

上記URLにアクセスして「DOWNLOAD」からvibをダウンロードします。
ダウンロードしたvibをESXi上にアップロードします。
下記コマンドでvibを適用します。(適用に数分かかります。メンテナンスモード、再起動不要)

 esxcli software vib update -v /[アップロード先ディレクトリ]/esxui-3015331.vib

下記URLにてログインします

 https://[ESXiIPアドレス]/ui/

vSphereWebClientチックな画面が表示されました。
JavaではなくHTML5なのもうれしいですね
※raspberry piからの接続では厳しそうです
日本語には対応してませんかね

今のところできること/できないことは以下のような感じです。

【できること】
仮想ホスト
 構成、リソース確認
 停止、再起動、メンテナンスモード切替
 SSH有効、無効
 ロックダウンモード有効、無効
 ライセンスの編集
 NTPの設定
 サービスの有効、無効
 詳細パラメータ値の編集
 パフォーマンス、ハードウェア、各種ログイベントの確認

仮想マシン
 新規作成、OVFテンプレートのデプロイ
 起動、停止、サスペンド、リセット、リネーム
 コンソール表示
 設定の編集
 スナップショットの作成
 設定の編集(停止時のみ)
 VMwareToolsのインストール
 CD/DVDマウント
 仮想マシンの削除
 VMRC経由でのコンソールの表示
 
ストレージ
 ストレージの追加、削除、リネーム
 ストレージのブラウザ(内部参照)
 ファイルアップロード、ダウンロード
 データストアの拡張
 デバイスの確認
スイッチ
 仮想スイッチの追加、編集、削除
 VLANの割り当て
 ファイアウォールの編集

【できないこと】
仮想ハードウェアのアップグレード
起動中の仮想マシンの設定の編集
iSCSIの追加、設定の編集
ユーザの割り当て、権限追加
DNSの設定
vSwitchの詳細(ポート数やチーミング)

できないことについてはコマンドラインでも実現可能なのでvSphereClientなしでも
十分運用可能と思います。

2015年10月6日火曜日

Nexus5 通話 不具合

自分のNexus5で通話できない不具合が発生しました。
(スピーカーフォンでは可能)
こちらについていろいろサイトをめぐってみたのですが
私の場合、端末の上部の丸いマイク部分に埃がたまっていたので
つまようじで埃を除去(私の場合、強めにこすってしまい破ってしまいました・・・)したところ
普通に通話できるようになりました。

せっかくNexus5xにしようと思ったのに・・・。

同じ事象に見舞われている方はお試しあれ。(めん棒でやってください)

追記

しばらくたって電話してみるとノイズがひどい。。。
どうしようもないですかね。

2015年9月18日金曜日

dockerの公式リポジトリ

もはや既知ですが・・・。
dockerを本番運用するに当たり、きちんとisoから素のOSをインストールしたいなと
なんとなく考えていたら、本家(official)が公開するリポジトリがありました。

https://hub.docker.com/explore/

一般の方が公開しているリポジトリについてはユーザ登録後のログインが必要です。
(ユーザ名、パスワード、メールアドレスのみ)

docker pull centos ってしたらきちんと公式のイメージをダウンロードしてくれるんですね・・・。

VMwareが出始めた当初は「仮想マシン上でミドルウェアサポートするの?」という件で
悩まされました。(「VMware上での動作は保証しません」の一文がちらほら・・・)

VMwareはDockerの稼働をサポートしますが、Docker内で動くミドルウェアについては
どうなんですかね。

もうそろそろ「Docker環境での動作は保証しません」がミドルウェアのシステム要件にでて
きそうです。

2015年9月16日水曜日

ESX6iでProxmox ve 4.0 を起動する

クラスタ構成検証のためESX6iにてProxmox veを2台構築しました。
なお、普通にOSインストールする分には通常の仮想マシンの作成方法のみで問題なしです。
コンテナ(CT)も普通に動きます。
仮想マシン(VM)に関しては起動しようとすると以下エラーで起動できませんでした。

no accelerator found

上記に関してはNestedVM(ESXiでESXiを動かす)と同じ方法で対処できました。
有名ですね
以下、設定メモ

Proxmoxve仮想マシンを停止します。
「仮想マシンの編集」-「オプション」タブのCPU/MMU仮想化の設定で
「IntelVT-x/AMD-Vを命令セット仮想化に使用しソフトウェアをMMU仮想化に使用」にチェックを入れる
※EPTのCPU使う場合はEPT記載のほうにチェック
「仮想マシンの編集」-「オプション」タブの「全般」-「構成パラメータ」で
以下設定値を追加

 名前:vhv.enable
 値:TRUE

Proxmoxve仮想マシンを起動します

2015年9月14日月曜日

Proxmox ve (proxmox)4.0のコンテナコマンド

Proxmox ve 4.0ではopenvzからlxcにコンテナが変更しました。
ですのでvz~のコマンドが使えなくなりlxc-~となりました。

以下、コマンド忘備録

lxc-ls ・・・コンテナ一覧の表示
lxc-info --name [コンテナID] ・・・コンテナ状態の表示
lxc-start --name [コンテナID] ・・・コンテナの起動
lxc-stop --name [コンテナID] ・・・コンテナの停止
lxc-console --name [コンテナID] ・・・コンテナにログイン(Ctrl+a と Ctrl+qで抜ける)
lxc-top コンテナ一覧のプロセスモニター表示

他詳しくは以下、、、
https://linuxcontainers.org/ja/lxc/documentation/

Proxmox ve (proxmox)4.0コンソール経由でコンテナに接続する

Proxmox VE 4.0 ではWebコンソールからコンテナのコンソールを設定不要で
表示できるようになりました。

旧バージョンは以下の設定が必要でした。
Proxmox ve (proxmox)コンソール経由でコンテナに接続する
http://umchifre.blogspot.jp/2014/01/proxmox-ve-proxmox_14.html

コマンドでいちいちつなぐのはめんどいのでらくちんですね

2015年9月11日金曜日

Proxmox VE 4.0 beta2がリリース

2015/9/10にProxmox VE 4.0 beta2がリリースされました。

http://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_4.0_beta2

beta1との変更点は以下の通り。

Debian Jessie 8.1 → 8.2
Kernel 3.19.8 → 4.2
QEMU 2.3 → 2.4
IPv6サポート
LXCの改善(オフラインマイグレーション、複数のファイルシステムでのコンテナ作成)←できなかったの?
beta1からのバグフィックスとアップデート
Ceph Server packages追加

beta1からは以下のコマンドでアップデート可能

apt-get update && apt-get dist-upgrade

日本で有名にならないかな・・・。

2015年9月4日金曜日

Vaio Pro13 タッチパネル不具合 → 復旧

結局原因不明ですが・・・。

自宅のノートPC[Vaio Pro13]のタッチパネル液晶が使えなくなりました。
購入時期は2013年7月のため保証期間過ぎています。
が、ソニーストアで購入したため3年の延長保証がついていたためインターネット修理に
だしました。
で、データをバックアップしようと外付けUSBHDDに挿してコピーしていたところ
急にタッチパネルが使えるようになりました。

なんだろなーと思いOS再起動したら使えなくなった・・・。

外付けUSBHDDをさしても反応なし。

で、デバイスマネージャから「ヒューマンインターフェースデバイス」-「HID 準拠 タッチパネル」を有効化
無効かしたり外付けUSBHDDを抜き差ししているとタッチパネルが反応しました。
もう一度OS再起動後、10秒ほど待っていたら普通にタッチパネルが使えるように・・・。

IRQの競合でも起こっているんですかね。

OS初期化までしたのに・・・。

2015年6月10日水曜日

PrandoraFMSでLinux監視(エージェント)

Linux(CentOS)にPandoraAgentを導入してリソースを監視します。

無償版ではエージェント経由の監視はエージェント側のconfファイルでのみ制御できます。
サーバ側から監視設定を行う場合はEnterpriseエディションの購入が必要です。

以下のURLに丁寧に記載されています。

http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Operations

【サーバ側の準備】
下記サービスを開始します。


service tentacle_serverd start


【エージェントインストール】


/etc/yum.repos.d/CentOS-Base.repo に以下を追加します。


[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[EPEL]
Name = EPEL
baseurl = http://dl.fedoraproject.org/pub/epel/6/$basearch/
enabled = 1
gpgcheck = 0


yum makecache コマンドを実行します。

/etc/yum.repos.d/pandorafms.repo を作成し、下記を追加します。


[artica_pandorafms]
name=CentOS6 - PandoraFMS official repo
baseurl=http://artica.es/centos6
gpgcheck=0
enabled=1


yum makecache コマンドを実行します。

下記コマンドでインストールします。


yum install pandorafms_agent_unix


構成ファイルを修正します。


vi /etc/pandora/pandora_agent.conf


server_ip  をPandoraFMSサーバのIPアドレスに変更します。

サービスを起動します。


service pandora_agent_daemon start


Pandoraコンソールの「モニタリング管理」からLinuxサーバが登録されたことを確認します。

各監視項目はpandora_agent.confファイルに記載することで反映されます。
詳細は以下を参照ください。

http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Operations

PrandoraFMSでWindows監視(エージェント)

WindowsにPandoraAgentを導入してリソースを監視します。

無償版ではエージェント経由の監視はエージェント側のconfファイルでのみ制御できます。
サーバ側から監視設定を行う場合はEnterpriseエディションの購入が必要です。

以下のURLに丁寧に記載されています。

http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Operations

【サーバ側の準備】
下記サービスを開始します。

service tentacle_serverd start


【エージェントインストール】

下記URLからWindowsエージェントをダウンロードします。

http://sourceforge.net/projects/pandora/files/Pandora%20FMS%205.1/SP2Final/Windows/

ダウンロードした実行ファイルをダブルクリックしてインストールします。
64bitOSに導入する場合、インストールパスを変更しないとうまく動作できません。
C:\Program Files(x86)フォルダにインストールしないよう注意しましょう

【変更前】 C:\Program Files(x86)\pandora_agent
【変更後】 C:\Program Files\pandora_agent


インストールウィザード中に[Pandora FMS Server]フォームが表示されるのでPandora監視サーバの
IPアドレスを入力します。

remote_config 1の値はEnterprise版でのみ有効なので無視します。

agentサービスが起動します。

Pandoraコンソールの「モニタリング管理」からWindowsサーバが登録されたことを確認します。

各監視項目はpandora_agent.confファイルに記載することで反映されます。
詳細は以下を参照ください。

http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Operations

2015年6月9日火曜日

PandoraFMSでLinuxリソース監視

PandoraFMSでLinuxリソースを監視します。


PandoraFMSではSNMP経由でリソースを監視できます。

そのためエージェントレスでもある程度の監視が可能です。

事前に監視対象のLinuxにSNMPをインストールします。

yum -y install net-snmp net-snmp-utils

下記ファイルを変更します。

vi /etc/snmp/snmpd.conf


#       sec.name  source          community
#com2sec notConfigUser  default       public
com2sec mynetwork 192.168.1.0/24 public

#group   notConfigGroup v1           notConfigUser
#group   notConfigGroup v2c           notConfigUser
group mynetwork_gr v1 mynetwork
group mynetwork_gr v2c mynetwork

#view    systemview    included   .1.3.6.1.2.1.1
#view    systemview    included   .1.3.6.1.2.1.25.1.1
view    all    included   .1   80

#access  notConfigGroup ""      any       noauth    exact  systemview none none
access mynetwork_gr "" any noauth exact all none none

SNMPを有効化します。

service snmpd start
chkconfig snmpd on

Pandoraコンソールにログインします。
左ペインの「エージェント管理」をクリックします。
右ペインの「エージェント作成」をクリックします。
エージェントマネージャが表示されるので最低限以下のフィールドを入力します。
 エージェント名:任意の名前
 IPアドレス:監視対象のアドレス
 グループ:Servers
 OS:Linux

「作成」をクリックします。

「エージェント管理」にエージェントが追加されます。
エージェントにカーソルを合わせると「編集|モジュール|アラート|表示」と表示されるので「モジュール」を選択します。
右上のハンマーみたいなアイコンから「SNMPウィザード」を選択します。
「snmpwalk」をクリックします。





SNMP経由で対象LINUXサーバのリソースが確認できるようになりました。
監視対象のリソースを選択して右画面に追加します。
「モジュール作成」をクリックします。
「エージェント管理」に戻り「モジュール」に上記リソースが追加されたことを確認します。
「表示」でリソース値が取得できることを確認します。





PrandoraFMSでWindows監視(リソース)

PandoraFMSでWindowsリソースを監視します。

PandoraFMSではWMI経由でリソースを監視できます。
そのためエージェントレスでもある程度の監視が可能です。

Pandoraコンソールにログインします。
左ペインの「エージェント管理」をクリックします。
右ペインの「エージェント作成」をクリックします。
エージェントマネージャが表示されるので最低限以下のフィールドを入力します。
 エージェント名:任意の名前
 IPアドレス:監視対象のアドレス
 グループ:Servers
 OS:Windows

「作成」をクリックします。

「エージェント管理」にエージェントが追加されます。
エージェントにカーソルを合わせると「編集|モジュール|アラート|表示」と表示されるので「モジュール」を選択します。
右上のハンマーみたいなアイコンから「WMIウィザード」を選択します。









Administratorパスワードを入力してWMIエクスプローラを選択します。
WMI経由で対象Windowsサーバのリソースが確認できるようになりました。
監視対象のリソースを選択して右画面に追加します。
「モジュール作成」をクリックします。
「エージェント管理」に戻り「モジュール」に上記リソースが追加されたことを確認します。
「表示」でリソース値が取得できることを確認します。


PrandoraFMSでWindows監視(ICMP)

PandoraFMSでWindowsを監視します。

PandoraFMSでは以下の監視方法があります。

リモートモニタリング・・・ネットワーク経由で監視、ICMPやポート監視など
エージェントモニタリング・・・エージェントを導入してのCPUやイベント監視

とりあえずリモートモニタリングから
以下のURLに丁寧に記載されています。

http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Remote_Monitoring

【ICMP監視】
左ペインの「エージェント管理」をクリックします。
右ペインの「エージェント作成」をクリックします。
エージェントマネージャが表示されるので最低限以下のフィールドを入力します。
 エージェント名:任意の名前
 IPアドレス:監視対象のアドレス
 グループ:Servers
 OS:Windows

「作成」をクリックします。

「エージェント管理」にエージェントが追加されます。
エージェントにカーソルを合わせると「編集|モジュール|アラート|表示」と表示されるので「モジュール」を選択します。
「ネットワークサーバモジュールの新規作成」を選択して「作成」をクリックします。
名前に「ICMP監視」と入力して「作成」をクリックします。

これでICMP監視の準備ができました。5分待って監視できていることを確認します。


監視ソフトウェアPandoraFMSをCentOS6に導入する

PandoraFMSという監視ソフトウェアをひょんなことから知ることができたので構築メモします。

zabbixよりも使いやすい、ですが無償版はいろいろと制限があるとのことで今後、確認できればと思います。

無償と有償の比較
http://pandorafms.com/Soporte/pricing/jp

日本語ドキュメントも充実しています。

CentOS6.6にインストールします。
selinuxとiptablesを無効化します。

下記URLの手順でオープンソース版をインストールします。
http://wiki.pandorafms.com/index.php?title=Pandora_FMS_installation_on_CentOS_JA

以下、URLの手順そのままですが・・・

/etc/yum.repos.d/CentOS-Base.repo に以下を追加します。


[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[EPEL]
Name = EPEL
baseurl = http://dl.fedoraproject.org/pub/epel/6/$basearch/
enabled = 1
gpgcheck = 0


yum makecache コマンドを実行します。

/etc/yum.repos.d/pandorafms.repo を作成し、下記を追加します。


[artica_pandorafms]
name=CentOS6 - PandoraFMS official repo
baseurl=http://artica.es/centos6
gpgcheck=0
enabled=1


yum makecache コマンドを実行します。

下記コマンドでインストールします。


yum install pandorafms_console pandorafms_server mysql-server



mysqlとhttpdを起動します。


service mysqld start
service httpd start
chkconfig mysqld on
chkconfig httpd on

mysqlにrootパスワードを設定します。
mysqladmin password password -u root -p


Webブラウザにログインします。

http://[IPアドレス]/pandora_console/



ウィザードが実行されるのでNextで進みます。
Step5でDBパスワードがランダム生成されるので控えます。

INSTALLATION COMPLETE画面が表示されます。




初期ユーザはadminパスワードはpandoraです。
Step5で生成されたパスワードを下記のdbpass に反映させます。

/etc/pandora/pandora_server.conf


コンソールに戻って下記ファイルを削除します。


cd /var/www/html/pandora_console
rm install.php


Click here to access to your Pandora FMS console.をクリックします。

ログインします

左ペインのManage usersからadminをクリックしてLanguageを日本語に変更してUpdateをクリックします。



左ペインから「設定」をクリックします。
以下の項目を修正します。
 Pandoraの言語
 タイムゾーン

これで日本語環境が整いました。


これで日本語環境が整いました。










2015年6月4日木曜日

dockerfileでDockerイメージを作成する

dockerfileを使用してオリジナルのDockerイメージを作成します。

docker pullでCentOS6イメージをダウンロードします。


docker pull centos:centos6


dockerfileを格納するディレクトリを作成してディレクトリ配下に移動します。


mkdir sample
cd sample


dockerfileを作成します。


vi Dockerfile


=============
FROM centos:centos6 ←Dockerイメージ元
MAINTAINER test ←作成者
RUN yum-y update ←ビルド中にコマンド実行
CMD echo test > /tmp/test ←コンテナ起動後にコマンド実行
ADD test.html /usr/share/ ←ファイルの追加
=============

ADDパラメータはDockerfileと同じフォルダに配置します。


echo test > test.html
ls
Dockerfile test.html


Dockerイメージを作成します。
指定元のイメージは上書きされるようです。


docker build -t docker.io/centos:centos6 .


Dockerイメージが作成されたことを確認します。


docker images


作成したイメージIDを指定してコンテナを起動します。


docker run --name test -it 22a2bd1e5268 /bin/bash


Dockerfileに記述したtest.htmlがあることを確認します。

2015年5月25日月曜日

DockerでWebUI管理する

DockerをWebUIで管理するDockerイメージをまとめました。
今のところログイン管理できるのはshipyardのみですね。

・DockerUI
下記コマンドを実行して[http://[Dockerホスト]:9000]にアクセス


docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui


・Seagull
下記コマンドを実行して[http://[Dockerホスト]:10086]にアクセス

 docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull


・Shipyard

/etc/sysconfig/docker に以下を追記後、dockerサービスを再起動
other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

下記コマンドを実行して[http://[Dockerホスト]:8080]にアクセス
ユーザ名:admin
パスワード:shipyard


docker run --rm -v /var/run/docker.sock:/var/run/docker.sock shipyard/deploy start

ログオン後、Enginesタブの[+ADD]をクリックしてDockerホストを登録
Neme:任意
Recoruces:任意
Address:http://[DockerHostのIP]:4243

細かい操作はコンテナのCLIが提供されています。
exitすると自動削除されます。

docker run --rm -it shipyard/shipyard-cli

Shipyardのみ3つのコンテナが起動します。
起動時は以下の順に起動します。

①shipyard-rethinkdb-data
②shipyard-rethinkdb
③shipyard

DockerUIの方がコンテナ操作が多いです。(killとPaunse)
Shipyardはコンテナ削除、ログ、スケーリングが可能です。
SeagullはDockerHubの検索が可能です。(クリックしても外部リンク飛ぶだけですが・・・)また、複数のDockerホストを管理できます。

※私の環境ではCentOS7のDockerではDockerUIとShipyardが使えませんでした。(画面が表示されない)

2015年5月22日金曜日

ソフォスの無料版 Linux アンチウイルス製品を試す(コマンド・設定)

コマンド・設定をまとめました。
マニュアルがわかりやすい・・・。
https://www.sophos.com/ja-jp/medialibrary/PDFs/documentation/savl_9_cgeng.pdf?la=ja-JP


駆除・・・ファイルは残ったままでファイル内に警告メッセージを表示。読み取り専用にする
削除・・・ファイルそのものを削除する

・オンアクセス検索を有効にする
/opt/sophos-av/bin/savdctl enable

・オンアクセス検索を開始する
/etc/init.d/sav-protect start

・手動検索を実行する(実行ファイルのみ)
savscan [検索対象ファイル]

・手動検索を実行する(すべてのファイル)
savscan [検索対象ファイル] -all

・手動検索を実行する(アーカイブファイル)
savscan [検索対象ファイル] -archive
savscan [検索対象ファイル] -tar
savscan [検索対象ファイル] -zip

・手動検索を実行する(ファイル指定)
savscan [検索対象ファイル] -ext=[ファイル名]

・手動検索を実行する(指定除外)
savscan [検索対象ファイル] -next=[ファイル名]

・ブートセクタを検索する
savscan -bs

・MBRを検索する
savscan -mbr

・ウイルス検知時にファイルを駆除する
savscan [検索対象ファイル] -di

・ウイルス検知時にファイルを削除する
savscan [検索対象ファイル] -remove

・ログ出力(24時間以内)
/opt/sophos-av/bin/savlog --today --utc

・定義ファイル手動アップデート
/opt/sophos-av/bin/savupdate

・ウイルス感染時の警告設定(SMTPサーバ)
/opt/sophos-av/bin/savconfig set EmailServer 171.17.31.184

・ウイルス感染時の警告設定(メール受信者)
/opt/sophos-av/bin/savconfig add Email admin@localhost

・ウイルス感染時の警告設定(メール送信元)
/opt/sophos-av/bin/savconfig set EmailSender admin@localhost

・ウイルス感染時の警告設定(メール返信先)
/opt/sophos-av/bin/savconfig set EmailReplyTo admin@localhost

・オンアクセス検索時にウイルス自動駆除(デフォルトは警告)
/opt/sophos-av/bin/savconfig add AutomaticAction disinfect

・オンアクセス検索時にウイルス自動削除
/opt/sophos-av/bin/savconfig add AutomaticAction delete

・スケジュールスキャン
 ・スケジュールファイル(下記ファイルをコピーして使用)
  /opt/sophos-av/doc/namedscan.example.en
 ・スケジュール有効化
  /opt/sophos-av/bin/savconfig add NamedScans [スケジュール名] [スケジュールファイル]
  

2015年5月20日水曜日

ソフォスの無料版 Linux アンチウイルス製品を試す

ソフォスから無料のLinuxアンチウイルスソフト「Sophos Anti-Virus for Linux(Free Edition」が提供されました。

https://www.sophos.com/ja-jp/products/free-tools/sophos-antivirus-for-linux.aspx

集中管理やサポートが提供されない以外は機能的に差異はないそうです。

CentOS7にインストールしてみました。

【マニュアル】
https://www.sophos.com/ja-jp/support/documentation/sophos-anti-virus-for-linux.aspx

上記URLにアクセスして「Get Started」をクリックします。
姓名とメールアドレスを入力する欄に入力後「送信」をクリックします。
「ダウンロード」リンクをクリックしてダウンロードします。

ダウンロードしたファイルをCentOS7にアップロードします。

オンアクセススキャンを有効にするために以下のパッケージを事前にインストールします。

yum install gcc
yum install kernel-devel-`uname -r`

ソフォスをインストールします。

tar -zxvf sav-linux-free-9.9.tgz
./sophos-av/install.sh

インストーラが実行されます。(約5分)
===============

Enterキーとスペースキーで使用許諾契約を確認します。

以下、コンソールに従ってウィザードを実行します。

ライセンス内容に同意しますか? はい(Y)/いいえ(N) [N]
> Y
Sophos Anti-Virus のインストール先を指定してください。 [/opt/sophos-av]
>
オンアクセス検索を有効にしますか? はい(Y)/いいえ(N) [Y]
> Y
オートアップデートの種類を選択してください: ソフォス(s)/自社サーバー(o)/なし(n) [s]
> s


SAV for Linux の無償バージョン (f) と サポート対応付きバージョン (s) のどちらを インストールしますか? [s]
> f

ソフォスからアップデートを行うためにプロキシが必要ですか? はい(Y)/いいえ(N) [N]
> y

プロキシサーバーのアドレスを入力してください。 [http://webcache:8080/]
>

Sophos Anti-Virus をインストールしています....

============

オンアクセススキャンの状態を確認します。

/opt/sophos-av/bin/savdstatusSophos

Anti-Virus はアクティブで、オンアクセス検索を実行中です

eicarテストウイルスを試しにコピーします。
以下のような警告が出力されます。

********************** Sophos Anti-Virus 警告 **********************
脅威 "EICAR-AV-Test" が次のファイルで検出されました
"/home/eicar".

ファイルはまだ感染しています

**********************************************************************

アンインストールは以下を実行します。

/opt/sophos-av/uninstall.sh



2015年4月30日木曜日

VyOS構築メモ



簡単に仮想ルータを作成できるVyOSです。(元Vyattaの無料版)

以下、構築メモです。

isoイメージ格納URL
http://vyos.nervex.net/iso/release/1.1.5/

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

install image

編集モード

configure

設定の保存

commit
save

固定IPの付与

set interfaces ethernet eth0 address 192.168.0.1/24

SSHの通信の許可

set service ssh

設定確認

show

NAT変換(eth0から192.168.64.150にアクセスしてきたら172.16.0.10に送る)

set nat destination rule 1 destination address 192.168.64.150
set nat destination rule 1 translation address 172.16.0.10
set nat destination rule 1 inbound-interface eth0

上記ルール削除

delete nat destination rule 1

NAT変換(192.168.64.0/24でアクセスしてきたら172.16.0.254に変換してeth1に送る)

set nat source rule 1 source address 192.168.64.0/24
set nat source rule 1 translation address 172.16.0.254
set nat source rule 1 outbound-interface eth1

上記ルール削除

delete nat source rule 1

ポートフォワード(eth0から192.168.64.150:80にアクセスしてきたら172.16.0.10に送る)

set nat destination rule 1 destination address 192.168.64.150
set nat destination rule 1 destination port 80
set nat destination rule 1 inbound-interface eth0
set nat destination rule 1 protocol tcp
set nat destination rule 1 translation address 172.16.0.10

DHCP設定

set service dhcp-server shared-network-name dhcp1 subnet 172.16.0.0/24 start 172.16.0.11 stop 172.16.0.19
set service dhcp-server shared-network-name dhcp1 subnet 172.16.0.0/24 default-router 172.16.0.254
set service dhcp-server shared-network-name dhcp1 subnet 172.16.0.0/24 dns-server 192.168.64.2

CentOS6にVagrantを導入する

既出ですがメモです。

VirtualBoxは依存関係が多いためyumでインストールします。

vi /etc/yum.repos.d/CentOS-Base.repo

[virtualbox]
name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc

yum install VirtualBox-4.3

Vagrantは依存関係少ないためダウンロードしたrpmを実行します。

rpm -ivh vagrant_1.7.2_x86_64.rpm

vagrant upで上がらない場合は以下を実行

VBoxManage --version
/etc/init.d/vboxdrv setup
/etc/init.d/vboxdrv setupで失敗した場合は以下を実行

yum -y install kernel-devel kernel-headers dkms gcc gcc-c++ perl
/etc/init.d/vboxdrv setup
 
/etc/init.d/vboxdrv setupが成功したら起動するはずです

以上。

以上。

2015年4月22日水曜日

DockerコンテナにClamSMTPを導入する。

Dockerコンテナにメールリレーサーバを導入するの続きです。

導入したメールリレーサーバにClamSMTPを導入して、メールのウイルスキャンを行います。

DockerコンテナにClamAVを導入します。
※CentOS7にClamAVをインストールする を参照してください。

下記URLからClamSMTPをダウンロードします。

http://thewalter.net/stef/software/clamsmtp/clamsmtp-1.10.tar.gz

ClamSMTPをインストールします。


tar vxf clamsmtp-1.10.tar.gz
cd clamsmtp-1.10
./configure && make && make install
cp doc/clamsmtpd.conf /usr/local/etc/clamsmtpd.conf
cp scripts/clamsmtpd.sh /etc/init.d/clamsmtpd.sh

/usr/local/etc/clamsmtpd.confファイルを修正します。(抜粋

vi /usr/local/etc/clamsmtpd.conf


Action: drop
ClamAddress: /usr/local/sbin/clamd
OutAddress: 10026
Listen: 0.0.0.0:10025
Header: X-Virus-Scanned: ClamAV using ClamSMTP

/etc/clamd.confファイルを修正します。(抜粋

vi /etc/clamd.conf


LocalSocket /usr/local/sbin/clamd


/etc/postfix/main.cf ファイルに追加します(抜粋

vi /etc/postfix/main.cf


content_filter = scan:127.0.0.1:10025


/etc/postfix/master.cf  ファイルに追加します(抜粋

vi /etc/postfix/master.cf


scan unix -       -       n       -       16       smtp
   -o smtp_data_done_timeout=1200
   -o smtp_send_xforward_command=yes
   -o disable_dns_lookups=yes
127.0.0.1:10026 inet n       -       n       -       16       smtpd
   -o content_filter=
   -o local_recipient_maps=
   -o relay_recipient_maps=
   -o smtpd_restriction_classes=
   -o smtpd_client_restrictions=
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o mynetworks_style=host
   -o smtpd_authorized_xforward_hosts=127.0.0.0/8


各サービスを再起動します。


  service clamd stop
  service clamd start
  /etc/init.d/clamsmtpd.sh start
  service postfix restart


メールクライアントからリレーサーバ経由のメールを送信します。

テストウイルスを添付したメールを送付すると/var/log/maillogに以下のログが記録されます。

clamsmtpd: 100015: from=sample@smtp1.co.jp, to=sample2@smtp2.co.jp, status=VIRUS:Eicar-Test-Signature

Dockerコンテナにメールリレーサーバを導入する。

DockerコンテナでPostfix+Dovecotを導入する(DNSサーバ経由)の続きです。

DNSサーバにPostfixをインストールします。

 yum -y install postfix

メールリレーの設定をします。

vi /etc/postfix/main.cf

 mynetworks = 172.17.0.0/16, 127.0.0.0/8

postfixを起動します。


 service postfix start
 chkconfig postfix on


2台のメールサーバのmain.cfのrelayhostをDNSサーバに向けます。

smtp1

relayhost = 172.17.0.100


smtp2

relayhost = 172.17.0.100

2台のメールサーバの/etc/resolv.confに以下を設定します。


nameserver 172.17.0.100

postfixを再起動します。

メールクライアントで相互疎通を確認します。


Dockerにはrsysogがないのでメールリレーをログで確認したい場合はrsyslogをインストールします。


 yum -y install rsyslog
 service rsyslog start
 chkconfig rsyslog on

DockerコンテナでPostfix+Dovecotを導入する(DNSサーバ経由)

Dockerコンテナにbindを導入してMXレコードでメール配信できるようにしました。

DockerコンテナでPostfix+Dovecotを導入する(2台構成)の続きです。

Dockerコンテナに起動+固定IPを割り当てます。

```bash
docker start bind
pipework br0 bind 172.17.0.100/16@172.17.42.1
docker attach bind
```

bindを導入します。

 yum -y install bind

bindファイルを追加、修正します。

vi /etc/named.conf

```bash

options {
        listen-on port 53 { any; };
        #listen-on-v6 port 53 { none; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { 172.17.0.0/16; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

#view "internal" {
#        match-clients {
#                localhost;
#                172.17.0.0/16;
#        };

zone "." IN {
        type hint;
        file "named.ca";
};
        zone "bind.local"  {
                type master;
                file "bind.local.lan";
                allow-update { none; };
        };
        zone "smtp1.co.jp"  {
                type master;
                file "smtp1.co.jp.lan";
                allow-update { none; };

        };
        zone "smtp2.co.jp"  {
                type master;
                file "smtp2.co.jp.lan";
                allow-update { none; };

        };
        zone "0.17.172.in-addr.arpa" {
                type master;
                file "0.17.172.in-addr.arpa.db";
                allow-update { none; };
        };
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";

```
vi /var/named/bind.local.lan

```bash
$TTL 86400
@   IN  SOA     bind.local. root.bind.local. (
        2014080201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

 IN     NS      bind.local.
 IN     A       172.17.0.100
 IN     MX      10      test01.smtp1.co.jp.
 IN     MX      10      test02.smtp2.co.jp.
test01  IN      A       172.17.0.101
test02  IN      A       172.17.0.102
test03  IN      A       172.17.0.100
```

vi /var/named/0.17.172.in-addr.arpa.db

```bash
$TTL 86400
@   IN  SOA     bind.local. root.bind.local. (
        2014080201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

 IN  NS      bind.local.
 IN  PTR     bind.local.
```

vi /var/named/smtp1.co.jp.lan

```bash
$TTL 86400
@   IN  SOA     smtp1.co.jp. root.smtp1.co.jp. (
        2014080201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

 IN     NS      smtp1.co.jp.
 IN     A       172.17.0.101
 IN     MX      10      test01.smtp1.co.jp.
test01  IN      A       172.17.0.101
```
vi /var/named/smtp2.co.jp.lan

```bash
$TTL 86400
@   IN  SOA     smtp2.co.jp. root.smtp2.co.jp. (
        2014080201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

 IN     NS      smtp2.co.jp.
 IN     A       172.17.0.102
 IN     MX      10      test02.smtp2.co.jp.
test02  IN      A       172.17.0.102
```

bindを起動します。

  service named start
  chkconfig named on

2台のメールサーバのmain.cfのrelayhostをコメントアウトします。

smtp1

```bash
#relayhost = 172.17.0.102
```

smtp2

```bash
#relayhost = 172.17.0.101
```

2台のメールサーバの/etc/resolv.confに以下を設定します。

```bash
nameserver 172.17.0.100
```

postfixを再起動します。

メールクライアントで相互疎通を確認します。

DockerコンテナでPostfix+Dovecotを導入する(2台構成)

DockerコンテナにPostfix + Dovecotを導入して相互に疎通してみました。

DockerコンテナでPostfix+Dovecotを導入する(1台構成)の続きです。

Dockerコンテナに起動+固定IPを割り当てます。
 
 docker start smtp2
 pipework br0 smtp1 172.17.0.102/16@172.17.42.1
 docker attach smtp2

postfixとDovecotを導入します。
設定は割愛します。

メールドメイン:smtp2.co.jpで作成します。

2台のmain.cfに以下を追加します。

smtp1
 
 relayhost = 172.17.0.102

smtp2
 
 relayhost = 172.17.0.101

メールクライアントで相互疎通を確認します。

DockerコンテナでPostfix+Dovecotを導入する(1台構成)


DockerコンテナにPostfix + Dovecotを導入してみました。

Dockerコンテナを起動+固定IPを割り当てます。

docker start smtp1
pipework br0 smtp1 172.17.0.101/16@172.17.42.1
docker attach smtp1

postfixとDovecotを導入します。

yum -y install postfix dovecot

Postfix の構成ファイルを修正します。(抜粋
メールドメイン:smtp1.co.jp

vi /etc/postfix/main.cf

 myhostname = test01.smtp1.co.jp
 mydomain = smtp1.co.jp
 myorigin = $mydomain
 inet_interfaces = all #同パラメータはコメントアウト
 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #同パラメータはコメントアウト
 mynetworks = 172.17.0.0/16, 127.0.0.0/8
 home_mailbox = Maildir/
 
Dovecotの構成ファイルを修正します。(抜粋

vi /etc/dovecot/conf.d/10-mail.conf

 mail_location = maildir:~/Maildir
 
vi /etc/dovecot/conf.d/10-auth.conf

 disable_plaintext_auth = no
 
vi /etc/dovecot/dovecot.conf

 protocols = imap imaps
 
vi /etc/dovecot/conf.d/10-master.conf

   # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix

  }

メールユーザを作成します・

useradd -s /sbin/nologin sample1
passwd sample1

ファイアウォールを停止します。

service iptables stop
chkconfig iptables off

サービスを起動します。

service postfix start
chkconfig postfix on
service dovecot start
chkconfig dovecot on

メールクライアントでsample1ユーザでログインします。
(ThunderbirdだとSSLの警告がでますが無視します。)

自分から自分にメール疎通確認します。
 

Dockerコンテナに固定IPを割り当てる(pipework)



既出ですがメモです。

AWSのフローティングIPみたいに固定eth1をコンテナに追加します。

以下を参照
https://opsbot.com/advanced-docker-networking-pipework/

Pipeworkを導入します。

sudo bash -c "curl https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework > /usr/local/bin/pipework"

https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework にアクセスして中身を
/usr/local/bin/pipework にviしてもいけました。

コンテナを起動します。

docker start smtp1

固定IPを割り当てます。
以下例ではコンテナsmtp1に[172.17.0.101/16]の固定IPを割り当てデフォルトゲートウェイに172.17.42.1を付与します。

pipework br0 smtp1 172.17.0.101/16@172.17.42.1

コンテナにログインします。

docker attach smtp1

ifconfig でeth1が追加されたことを確認します。

CentOS7にDockerを導入する

既出ですがメモです。

Dockerをインストールします。

yum -y install docker

プロキシ経由の場合は以下ファイルに追加します。

vi /etc/sysconfig/docker

 http_proxy=http://XXX.XXX.XXX.XXX:8080/
 https_proxy=http://XXX.XXX.XXX.XXX:8080/

Dockerを起動してサーバ起動時に有効にします

systemctl start docker
systemctl enable docker

Dockerイメージ(CentOS6)をダウンロードします。

docker pull centos:centos6

dockerコンテナを権限付与して起動します。

docker run --name smtp1 --privileged -it centos:6 /bin/bash

コンテナのコンソールに入るのでexitで抜けます。(コンテナが停止します。)

作成したコンテナを起動します。

docker start smtp1

作成したコンテナのコンソールに入ります。

docker attach smtp1

[Ctrlキー押しながら pq]でログアウトします。

docker ps で起動中のコンテナ一覧を表示します。

docker ps -aですべてのコンテナ一覧を表示します。

2015年4月20日月曜日

ClamAVでオンアクセススキャンを行う

リアルタイムスキャン(オンアクセススキャン)を有効にする場合は以下をコメントアウト
検知しても自動削除はしてくれなさそうです。

 ScanOnAccess yes
 OnAccessIncludePath /home #←オンアクセススキャンを実行するパス

clamdを再起動します。

下記エラーが発生した場合は/tmp/clamd.socketを削除します。

 ERROR: LOCAL: Socket file /tmp/clamd.socket is in use by another process.

ログに以下のように記録されます。
 
 Database correctly reloaded (3793682 signatures)
 ScanOnAccess: Protecting directory '/home'
 ScanOnAccess: Max file size limited to 5242880 bytes
 ScanOnAccess: /home/eicar - コピー.com: Eicar-Test-Signature FOUND

CentOS7にClamAVをインストールする

CentOS7にClamAVをインストールする

以下マニュアルを参照
https://github.com/vrtadmin/clamav-faq/raw/master/manual/clamdoc.pdf

最新ファイルは以下を参照(この記事では0.98.06でした)
http://www.clamav.net/download.html

yumのほうが楽ですね・・・

【インストール】

前提条件のパッケージを導入します。


 yum -y install zlib zlib-devel gcc gcc-c++ bzip2 bzip2-devel


ダウンロードファイルを解凍してインストールします。
(インストールに約10分かかります)


cd /home
tar zxvf clamav-0.98.6.tar.gz
cd clamav-0.98.6
./configure --prefix=/home/gary/clamav --disable-clamav
make; make install

ユーザとグループを作成します。


groupadd clamav
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav


clamavユーザでログインして下記を実行します。


zcat clamav-x.yz.tar.gz | tar xvf -
cd clamav-x.yz
./configure --sysconfdir=/etc
make
su -c "make install"


オプションですがsendmailのメールスキャニング機能を有効にする場合は以下を実行します。


./configure --enable-milter


以下を実行するとインストールチェックを実施してくれます。


 ./configure --enable-check
 make
 make check


下記ファイルを作成しユーザ権限を付与します。


mkdir /usr/local/share/clamav
chmod 755 /usr/local/share/clamav
chown clamav:clamav /usr/local/share/clamav


構成ファイルをコピーします。


cp /etc/freshclam.conf.sample /etc/freshclam.conf
cp /etc/clamd.conf.sample /etc/clamd.conf


ウイルス定義ファイル用構成ファイルを編集します。


vi /etc/freshclam.conf


最低限の設定として以下をコメントアウトします。

 EXAMPLE

ウイルス対デーモン用構成ファイルを編集します。


vi /etc/clamd.conf


最低限の設定として以下をコメントアウトします。

 LocalSocket /tmp/clamd.socket
 EXAMPLE

以下コマンドを実行してサービスを開始します


clamd


以下コマンドでカレントファイルのウイルススキャンを実行します


clamscan


サーバ起動時の設定を行います。

 vi /etc/rc.d/init.d/clamd


#!/bin/sh
# chkconfig: 345 99 1
# description: clamd
# processname: clamd

start() {
    echo -n "starting clamd:"
    /usr/local/sbin/clamd
    return 0
}

stop() {
    killall clamd
    return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $prog
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|status|restart|stop}"
        exit 2
esac

exit 0



 chmod 755 /etc/rc.d/init.d/clamd
 systemctl status clamd
 chmod +x /etc/rc.d/init.d/clamd
 ln -s /etc/rc.d/init.d/clamd /etc/rc3.d/S90clamd
 chkconfig clamd on

CentOS7 とsamba4でActiveDirectoryを構築する

既出と思いますが。。。。


以下URL参考

http://orebibou.com/2015/03/centos-7%E3%81%A8samba4%E3%81%A7%E8%87%AA%E5%AE%85%E7%94%A8active-directory-domain-controller-ad-dc%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%E2%91%A0-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88/

以下slideshreを見るとあまり複雑なAD環境には適してないです。
http://www.slideshare.net/takahashimotonobu/20150228-osc2015tokyo-springw2k3samba4

とりあえずADいる、とか小規模でADのユーザ管理だけできればいい、というような環境が適しているかと思います。
普通にyum insatll samba4 ではAD機能はインストールされないとのこと

CentOS7で構築しました。

【事前準備】
※完了後再起動してホスト名/IP設定を再確認してください。

リポジトリの更新

yum -y install yum-plugin-priorities

ファイアウォールの無効化

systemctl stop firewalld
systemctl disable firewalld

selinuxの無効化

/etc/selinux/config

 SELINUX=disabled

時刻同期

yum -y install ntp
vi /etc/ntp.conf で以下のようにNTPサーバを参照。(既存ADがある場合はADサーバを指定)

server 192.168.0.11 iburst

パッケージのインストール

yum -y install perl gcc libacl-devel libblkid-devel gnutls-devel \readline-devel python-devel gdb pkgconfig krb5-workstation \zlib-devel setroubleshoot-server libaio-devel \setroubleshoot-plugins policycoreutils-python \libsemanage-python setools-libs-python setools-libs \popt-devel libpcap-devel sqlite-devel libidn-devel \libxml2-devel libacl-devel libsepol-devel libattr-devel \keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils \libxslt docbook-style-xsl openldap-devel

ホスト名/IPアドレスの設定

/etc/sysconfig/network

 HOSTNAME=dcsrv01

/etc/hostname

  dcsrv01
 
/etc/sysconfig/network-scripts/ifcfg-enoXXXXXXXX

 TYPE="Ethernet"
 BOOTPROTO="none"
 IPADDR="192.168.0.100"
 NETMASK="255.255.255.0"
 GATEWAY="192.168.0.254"
 DEFROUTE="yes"
 PEERROUTES="yes"
 IPV4_FAILURE_FATAL="no"
 NAME="enoXXXXXXXX"
 DEVICE="enoXXXXXXXX"
 ONBOOT="yes"
 DOMAIN="example.local"
 DNS1="127.0.0.1"

/etc/resolv.conf

  nameserver 127.0.0.1

【samba4のインストール】

mkdir /tmp/samba
cd /tmp/samba
wget http://www.samba.org/samba/ftp/samba-latest.tar.gz
tar zxvf /tmp/samba/samba-latest.tar.gz
cd samba/samba-4.2.1/
./configure && make && make install

【ドメインの作成】

/usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2

 Realm: example.local
 Domain [example]:(エンター)
 Server Role (dc, member, standalone) [dc]:(エンター)
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:(エンターで内部DNS使用)
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.0.254]: (エンター)
 Administrator password: (administratorパスワード(要複雑性)
 Retype password: (パスワード(再入力)

【ドメインの削除】
 rm -f /usr/local/samba/etc/smb.conf
 rm -rf /usr/local/samba/private/*
 rm -rf /usr/local/samba/var/locks/sysvol/*

【ドメイン参加】

後述するケルベロス設定実施後、下記コマンドでドメイン参加できます。

/usr/local/samba/bin/samba-tool domain join example.local DC -U EXAMPLE\\Administrator --realm=example.local

【ドメインユーザの確認】

/usr/local/samba/bin/samba-tool user list

【FSMOの確認】

/usr/local/samba/bin/samba-tool fsmo show

【複製の確認】

/usr/local/samba/bin/samba-tool drs showrepl


【samba4のサービス起動/有効化】

起動スクリプトの作成

vi /etc/rc.d/init.d/samba4

#!/bin/bash
. /etc/init.d/functions
. /etc/sysconfig/network
prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog

start() {
        [ "$NETWORKING" = "no" ] && exit 1
        #       [ -x /usr/sbin/ntpd ] || exit 5
        # Start daemons.
        echo -n $"Starting samba4: "
        daemon $prog_dir/$prog -D
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
        }
        stop() {
        [ "$EUID" != "0" ] && exit 4
        echo -n $"Shutting down samba4: "
        killproc $prog_dir/$prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
        }

   case "$1" in
   start)
   start
   ;;
   stop)
   stop
   ;;
   status)
   status $prog
   ;;
   restart)
   stop
   start
   ;;
   reload)
   echo "Not implemented yet."
   exit 3
   ;;
   *)
   echo $"Usage: $0 {start|stop|status|restart|reload}"
   exit 2
   esac

chmod 755 /etc/rc.d/init.d/samba4
systemctl start samba4
systemctl enable samba4

【内部DNS動作確認】

/usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
host -t SRV _ldap._tcp.example.local 127.0.0.1
host -t SRV _kerberos._udp.example.local 127.0.0.1
host -t A dcsrv01.example.local 127.0.0.1

【ケルベロス設定】
cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

※AD追加の場合は以下

/etc/krb5.conf ファイルを編集

 [logging]
  default = FILE:/var/log/krb5libs.log
  kdc = FILE:/var/log/krb5kdc.log
  admin_server = FILE:/var/log/kadmind.log

 [libdefaults]
  default_realm = EXAMPLE.LOCAL
  dns_lookup_realm = true
  dns_lookup_kdc = true
  ticket_lifetime = 24h
  renew_lifetime = 7d
  forwardable = true

 [realms]
  ADEXAMPLE.COM = {
   kdc = addc.example.local #既存ADサーバ
   admin_server = addc.example.local #既存ADサーバ
  }

 [domain_realm]
  .adexample.com = EXAMPLE.LOCAL
  adexample.com = EXAMPLE.LOCAL
 

Windowsでドメイン参加後、管理ツールを導入することでGUIで上記ADを管理できます。
Windows2008の場合、「機能の追加」-「リモートサーバ管理ツール」

既存WindowsADにも参加可能です。
ただしWindowsADの降格がうまくいかないため、WindowsADから切り替える場合はFSMOの強制移行、sysvolコピー、DNSレコードの手動削除が必要になります。

2015年4月14日火曜日

Windows版Vagrantを他の仮想ソフトで使用する。


以下、検証してみました。

【Vagrantファイルの実体】
C:\Users\[ユーザ名]\.vagrant.d\boxes\[仮想マシン名]\0\virtualbox

【VirtualBox】
下記の通り、Vagrantで実行した仮想マシンはVirtualBoxのコンソールに登録されているのでそのまま使用できます。




【VMwarePlayer】
Vagrantのvmdkファイルをインポートすることで使用可能です。
インポート時にエラーが発生する場合は「再試行」することでリトライできます。
仮想マシン名は「box」になります。

【ESX Server】
VMwarePlayerの仮想マシンをvCenterConverterでV2Vすることで使用可能です。


【Openstack】
vmdkファイルの「インポート」で普通に使用できました。

vagrant、便利ですね。

2015年4月3日金曜日

vagrantでfulentdを試す

こちらも既出と思いますが・・・。

vagrant box add コマンドで2仮想サーバを作成します。

vagrant共有フォルダに td.repoファイルを格納します。

[treasuredata]
name=TreasureData
baseurl=http://packages.treasuredata.com/2/redhat/$releasever/$basearch
gpgcheck=1
gpgkey=http://packages.treasuredata.com/GPG-KEY-td-agent

【fluentd(受信)】

bootstrap.shを以下で作成

 #!/bin/bash
 sudo su
 cp /vagrant/td.repo /etc/yum.repos.d/td.repo
 yum -y install td-agent
 service td-agent start
 chkconfig td-agent on

Vagrantfile に以下を追記

  config.vm.network "private_network", ip: "192.168.33.11"
  config.vm.provision :shell, path: "bootstrap.sh"

【fluentd(受信)兼webサーバ】

bootstrap.shを以下で作成

 #!/bin/bash
 sudo su
 yum install httpd -y
 rm -rf /var/www/html
 ln -fs /vagrant /var/www/html
 cp /vagrant/td.repo /etc/yum.repos.d/td.repo
 yum -y install td-agent
 service td-agent start
 chkconfig td-agent on

Vagrantfile に以下を追記

  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, guest: 80, host: 1234
   

vagrant upで2台の仮想マシンを起動します。

ファイアウォールを停止します。

 service iptables stop
 chkconfig iptables off
 
【fluentd(受信)】

td-agentd.confを修正します。
下記以外はすべてコメントアウトします。

vi /etc/td-agent/td-agent.conf

 <source>
 type forward
 port 24224
 </source>

 <match httpd.access>
 type file
 path /var/log/td-agent/httpd
 </match>

td-agentを再起動します。

 service td-agent restart
 
【fluentd(受信)兼webサーバ】

  /var/www/html/フォルダにテスト用htmlファイルを作成します。
 
td-agentd.confを修正します。
下記以外はすべてコメントアウトします。

vi /etc/td-agent/td-agent.conf

 <source>
  type tail
  format apache
  path /var/log/httpd-access.log
  tag httpd.access
 </source>
 <match httpd.access>
  type forward
  host 192.168.33.10
  port 24224
  </match>
 
ログのアクセス権を変更します。

chmod 755 /var/log/httpd/access_log
chmod 755 /var/log/httpd/

td-agentを再起動します。

 service td-agent restart
 
http://127.0.0.1:1234 にアクセスします。

 fulentd(受信)仮想マシンの以下フォルダにログが格納されます。

 /var/log/td-agent/httpd*

うまくいかない場合は/var/log/td-agent/td-agent.logを参照してください。

2015年4月2日木曜日

Windows7にVagrantを導入する

既出とは思いますがインストールメモ

Windows7に以下をインストール(要再起動)

VirtualBox 4.3.26 for Windows hosts
https://www.virtualbox.org/wiki/Downloads
Vagrant1.7.2
https://www.vagrantup.com/downloads.html


D:\直下に以下boxファイルをダウンロード
http://dl.dropbox.com/u/9227672/CentOS-6.0-x86_64-netboot-4.1.6.box

コマンドプロンプトを開きboxファイルを登録(登録ファイル名はcentos)

vagrant box add centos d:\CentOS-6.0-x86_64-netboot-4.1.6.box

D:\centos ディレクトリ作成
コマンドプロンプトでD:\centosに移動してcentosイメージの登録

cd d:\centos
vagrant init centos

centosイメージの起動

vagrant up

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos6-1_default_
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => D:/centos

Teratermで127.0.0.1:2020に接続
ユーザ名/パスワードは vagrant

D:/centos直下は仮想マシンの/vagrantと共有されています。
D:/centos直下に作成されたVagrantfile は構成ファイルです。

例:
仮想マシン名

 config.vm.box = "centos"

コンソール表示

 config.vm.provider "virtualbox" do |vb|
 vb.gui = true
 end

仮想マシンのメモリを512MBに指定

 config.vm.provider "virtualbox" do |vb|
 vb.memory = "512"
 end

内部ネットワークアドレス指定

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

下記を追記することで初回のvagrant up 時にbootstrap.shの内容を実行します。

  config.vm.provision :shell, path: "bootstrap.sh"
 
 
D:/centos直下にbootstrap.shを作成します。
apachをインストールする場合は以下のように記載します。

#!/bin/bash
sudo su
export http_proxy="http://10.200.1.3:8080/"
export ftp_proxy="http://10.200.1.3:8080/"
yum install httpd -y
/etc/init.d/httpd start

Vagrantfile 構成ファイルに以下の記述を追記することでhttp://127.0.0.1:8080で仮想マシンの80番ポートに接続します。

  config.vm.network "forwarded_port", guest: 80, host: 8080