2015年2月27日金曜日

時刻同期先が2台の場合のntpdの設定方法

別記事でnptdの設定方法について調べた結果を記載したが、もう少し考慮が必要だった。具体的には時刻同期先の上位サーバーが2台の場合、特別な設定が必要だったことがわかった。

事象

ntpdは仕組みとして、同期先のサーバーの時刻の信頼性を見る仕組みがある。具体的には、万が一参照先の時刻が何らかの理由で時刻がずれた際に、その影響を受けることを回避するため、その時刻の信頼性を低いと見なして同期先候補から外すという動きをする。

その際に、「多数決」で同期先を選定する仕組みがあるのだが、同期先が2台の場合は多数決ができずに、全ての同期先を信頼性が低いと見なしてしまい、同期ができなくなる、ということが問題になる。
※RHELでは4台以上を同期先にすることを推奨している
※正確には単純な多数決ではない同期先決定のアルゴリズムがあるが、私も理解できていないので詳細は省略

回避策

それでも社内のNTPサーバーが2台しかない、等あればどうにかするしか無い。回避策は2つ。

trueオプションを付ける

これはRHELの推奨方法。ntp.confのserverのオプションで"true"と付けてやれば良い。なお、似たようなオプションに"prefer"がある。これらの違いは、ntp.confのmanページの記載を見れば書いてある。
prefer
このサーバを優先します。すべての他の要素が等しくても、このホストが同期のために選ばれます。 詳しくは 緩和ルールと prefer キーワード のページを参照ください。 このオプションは server と peer コマンドでのみ有効です。

true
このアソシエーションを正確な状態であると仮定します。つまり、選択アルゴリズムとクラスタリング アルゴリズムで必ず生き残ります。このオプションはどのアソシエーションでも有効ですが、 シリアルポート上の大きなジッターや精度 pulse-per-second (PPS) 信号をもつ参照クロックにとっては 最も有益です。
微妙にわかりづらい表現で書いてある。私の理解では、"prefer"は同期先候補のNTPサーバが複数あった場合に、このオプションを付けたサーバーを優先して同期先とする設定、"true"はそのサーバーの時刻を参照できる限り、そのサーバーを同期先とする設定となる。

同期先は2台の場合は全てのNTP同期先を正しいと判断できずに同期先候補から外すことが問題なので、"prefer"オプションではなく、"true"の設定が正しい。

同期先を1つにする

シンプルに同期先を1つにしてしまうということも一つの手だと思う。上位NTPサーバーの稼働率が良好で、時刻のずれも発生しないような環境であれば、特に問題ないと割り切る。


参考URL

2 台の NTP サーバーを、「プライマリ」および「バックアップ」に指定して使用することはできますか?
https://access.redhat.com/ja/node/441873

2015年2月23日月曜日

Windowsの各種GUIを開くコマンド

WindowsはGUIを使って操作するが、コントロールパネルを開くと大量のアイコンが出てきて設定したい項目を探すのに四苦八苦することがある。これはWindowsのバージョンが上がれば上がるほど探しにくくなる傾向にあると思う。

なので、比較的よく使う設定画面を呼び出すコマンドを調べたので記載する。「ファイル名を指定して実行」(Ctrl + R)にて実行すればGUIが表示される。
  • コントロールパネル
    control
  • サーバーマネージャー
    servermanager.msc
  • ローカルユーザーとグループ
    lusrmgr.msc
    Local USeR ManaGeRの略と思われる
  • サービス
    services.msc
  • イベントビューアー
    eventvwr
    ※なぜかこれは.mscを付けなくても良い
  • タスクスケジューラー
    taskschd.msc
  • リモートデスクトップ接続
    mstsc
    MicroSoft Terminal Services Clientの略と思われる
  • レジストリエディタ
    regedit
  • ディスクの管理
    diskmgmt.msc
  • ネットワーク接続
    ncpa.cpl
  • デバイスマネージャー
    devmgmt.msc
個人的にはeventvwrとmstscは良く使う。他にも使えそうなのがあったら随時追加しよう。

2015年2月20日金曜日

PowerCLIでvCneter Serverに接続する際にパスワードファイルを使って認証する方法

vCenter ServerにPowerCLIで接続するコマンドレットはConnect-VIServerとなる。vCenter ServerのOSに直接ログインしてPowerCLIを使う場合は、接続先にlocalhostを指定することで、ユーザー名やパスワードを求められることは無く接続が可能。
Connect-VIServer -Server localhost
しかし、他サーバーや端末から接続しようとすると、ユーザー名・パスワードを求められるポップアップが表示されてしまう。手作業であれば問題ないが、スクリプト等で実行しようとすると不便であり、かと言って、
Connect-VIServer -Server localhost -User hoge -Password hogepass
といったように、パスワードを平文で書いてしまうのもセキュリティ上問題となるので、パスワードファイルを生成して読み込ませる方法を記載する。この方法はPowerCLIに限らず、PowerShellのスクリプトでも活用できるはず。

実施方法

事前に「本スクリプト実行サーバ」にて、以下コマンドにてSecureString型のパスワード生成する。

Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File vcpwd.txt

コマンドを実行した後パスワードを入力してEnterを押せば、vcpwd.txtというファイルが作成される。

上記パスワードファイルを読み込ませてvCenter Serverに接続し、色々処理をした後切断するスクリプトは以下の通り。
# vCenterサーバへ接続
$VCENTER = "192.168.1.100"             # vCenter ServerのIPアドレス
$VCUSER = "vcenteruser"                # vCenter Serverログインユーザー

$secpasswd = cat vcpwd.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential ($VCUSER, $secpasswd)
$vi = Connect-VIServer -Server $VCENTER -Credential $cred

~ここに処理を書く~

# vCenterサーバより切断
Disconnect-VIServer -Server $vi -Force -Confirm:$False

exit 0

2015年2月19日木曜日

TeraTermやPowerShellで右クリック1回したらクリップボードの中身が貼り付けられてしまう機能を停止する

インフラエンジニアやっていれば、Linuxの設定やスイッチのconfig等を編集する際に、予めテキストで作っておいたものをTeraTarm等で貼り付けて流す行為をよくやると思う。

この貼り付ける機能は、TeraTermやコマンドプロンプト、PowerShellではマウスの右クリックで実施できるようになっているが、逆に言えば右クリック一回でクリップボードの中身が全て貼り付けられてしまい、事故に繋がることがある。

そのため、特に保守運用を実施する場面では、右クリック1回での貼り付け機能を停止し、1回確認が実施されるプロセスを挟むようにすると良い。今回はその方法について記載する。

TeraTerm

日本語UIの場合は、[設定]→[その他設定]→[コピーと貼り付け]タブを選択する。英語UIの場合は[Setup]→[Additional settings]→[Copy and Paste]タブを選択する。以降は日本語UIにて説明する。



設定項目とその意味は以下になる。言ってしまえば、デフォルトのままがオススメ。

継続行コピーを有効にする (デフォルト:チェック有)
TeraTerm等で1行が長いと右端で折り返されて表示されるが、その行をコピーした際に、改行を入れないで1行としてコピーするためのオプション。基本的に有効にしておけば良い。

右クリックでの貼り付けを無効にする (デフォルト:チェック無)
TeraTerm上で右クリックを押しても何も反応しなくなる。不便なので原則チェックしない。

右クリックでの貼り付けを確認する (デフォルト:チェック無)
右クリックですぐに貼り付けられるのではなく、右クリックメニューとして、「貼り付け」と「貼り付け<CR>」を選ばなければペーストされなくなる。好みで有効にする。より安全を求めるなら有効にすべきだが、最近のTeraTermは改行コードが入っている文字のペーストは一度確認ポップアップが出るので、無効にしてもそこまで危険では無いと思う。

中クリックでの貼り付けを無効にする (デフォルト:チェック有)
ホイールのクリックで貼り付けたいという変わった方は、好みでこちらのチェックを外せば良い。

左クリックでののみ選択を確認する (デフォルト:チェック有)
チェックを外せば右クリックでも文字の選択ができるようになる。この場合、範囲選択完了直後にペーストされるようになる。こちらも好みで設定する。

危険なクリップボードの貼り付けを確認する (デフォルト:チェック有)
キーワードファイルを選択し、特定ワードがあると、「クリップボードの確認」のポップアップが表示されるようにある。例えば、haltと書いたキワードファイルを設定しておけば、haltが含まれた文字をペーストしようとすると改行が無くても確認ポップアップが表示される。

区切り文字
キーワードファイルの単語の区切り文字を設定できる機能、、、と思われる(きちんと使っていないので良くわからない)。

貼り付け行間遅延 (デフォルト:10ms)
シリアルポートの場合は、転送速度の関係からコマンド欠けが発生することもあるので設定することはあったが、SSHでも貼り付け時の各コマンドの遅延時間を設定できる。ただし、SSHで帯域も十分にあるのであれば、特にデフォルト値から変更は不要と考える。

コマンドプロンプト

タイトルバーを右クリック→[プロパティ]→[オプション]タブの[簡易編集モード]のチェックを外せば良い。逆にチェックすると右クリックで貼り付け放題になる。

[簡易編集モード]を無効にした場合のコマンドプロンプトでのコピー&ペーストの方法は以下手順で実施する。ちょっと面倒。
①コマンドプロンプトで右クリック→[範囲指定]を選択
②文字列を左クリックで選択
③Enterにてコピー
④コマンドプロンプトで右クリック→[貼り付け]を選択

PowerShell

コマンドプロンプトと全く同様。タイトルバーを右クリック→[プロパティ]→[オプション]タブの[簡易編集モード]のチェックを外せば良い。逆にチェックすると右クリックで貼り付け放題になる。

[簡易編集モード]を無効にした場合のPowerShellでのコピー&ペーストの方法はコマンドプロンプト同様、以下手順で実施する。
①コマンドプロンプトで右クリック→[範囲指定]を選択
②文字列を左クリックで選択
③Enterにてコピー
④コマンドプロンプトで右クリック→[貼り付け]を選択




2015年2月15日日曜日

Excelで簡易的に棒グラフを作る関数REPT

Excelの小ネタ。「指定した文字列を数字の回数だけ繰り返す」という関数がExcelにあって、REPT関数という。

使い方としては、昔のMS-DOSやLinuxのように文字で棒グラフを作ることに適している。例えば、以下の様なa~eの得点表があるとする。

a80
b20
c31
d64
e100

これをREPT関数を使って、「=REPT("|",B2)」のように入れてやると、、、

a 80 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
b 20 ||||||||||||||||||||
c 31 |||||||||||||||||||||||||||||||
d 64 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
e 100 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

上記の通り"|"文字のグラフで表現でき、数字の差を直感的に把握することができる。

人気の投稿