【メモ】EVE-NG on ESXi で外部アクセスを行うときの注意点

PCサーバにESXiをインストールして, その中にEVE-NGのVMをたて, NICを2枚つける。
一方は管理アクセス用, もう一方はEVE-NG内から外部アクセスを行うためのCloudネットワーク。

ここで, OpenStack上に立てていたEVE-NGでは問題なく(Promiscuous設定はOpenStack側でもallowed-address-pairs で設定が必要), ESXiのvswitchのセキュリティ設定で

・無差別モードを許可

だけでなく

・偽装転送を許可

する必要があった。

たしかにvNICの中から多数のMacアドレスが流れ出てくるのだからこれは必要か。

CentOS7にpyenv

そろそろ真面目にPythonに取り掛かろうと、環境準備の一貫で異なるバージョンのPython環境を揃えることができるpyenvをインストールする。

公式サイト(GITHUB)

依存関係準備

$ sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite 
sqlite-devel openssl-devel xz xz-devel libffi-devel findutils

インストール

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

pyenvのPATH設定

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
# Add pyenv init to your shell to enable shims and autocompletion. Please make sure eval "$(pyenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization.
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init -)"nfi' >> ~/.bash_profile
$ source ./.bash_profile

完了。

確認

現状チェック。

$ python -V
Python 2.7.5

pyenv で3.7.0をインストール。

$ pyenv install 3.7.0
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
Installing Python-3.7.0...
Installed Python-3.7.0 to /home/centos/.pyenv/versions/3.7.0
$ pyenv versions
* system (set by /home/centos/.pyenv/version)
3.7.0

script directoryだけをversion 3.7.0 にする。

$ pwd
/home/centos/script
$ pyenv local 3.7.0
$ pyenv versions
system
* 3.7.0 (set by /home/centos/script/.python-version)
$ cd
$ pyenv versions
* system (set by /home/centos/.pyenv/version)
3.7.0

へー面白い。

【メモ】BIG IPでURL毎にPoolを分ける

F5 BIG IP LTMで1つのバーチャルサーバに対してURLで振り分け先(Pool)を変えるiRuleをかかなくてはならなくなったのでメモ。

参考にしたサイトはこちら。
BIG-IPで、Hostヘッダに基づいた振り分けを行うiRule3種
F5 official HTTP::uri

また, 動作イメージとして「www.xxx.yyy.com」というFQDNに対して, サイト1用とサイト2用のディレクトリを分けている状況を想定している。

www.xxx.yyy.com/siteA/  -> poolAへ
www.xxx.yyy.com/siteB/  -> poolBへ

when HTTP_REQUEST
{
# (1)
set uri [split [HTTP::uri] "/"]
# (2)
set uri1st [lindex $uri 1]
# (3)
if { [class match $uri1stp equals distribute_list] } {
set pool [class match -value $uri1st equals distribute_list]
pool $pool
}
# (4)
else {
# Default Pool
pool pool_def
}
}

iRuleと合わせて予めData Group Listを作成する。

処理の流れ。

  1. URI取得、スラッシュで区切りインデックス化
  2. FQDNの次にくる文字列を取り出す
  3. Data Group ListのStringにマッチしたとき, poolにマッチしたValueを返す
  4. そうでなければデフォルトのプール
色々調べると, 「start_with」などあるけれど, 今回は特定のディレクトリ配下で振り分け先を分けるケースを想定したのでこちらの方がよいのかなーなんて。
記録を残すことを目的としてまずは・・・。