RedHat 認定エンジニア RHCE (RHEL7)
割と前ですが、RedHat 認定エンジニア 以下RHCEに合格しましたので
報告しますね。
RHCEとは、
・nmcliコマンドによる静的経路、パケットフィルタリング、ネットワークアドレス変換、チーミングの設定
・firewallコマンドによるネットワークポートのセキュリティ設定
・systemctlコマンドによるサービス/デーモンの制御
・iSCSI イニシエーターの設定
・自動化のためのシェルスクリプト
・HTTP/HTTPSサーバ
・NFS/SMBサーバ
・SMTPサーバ
・NTP/DNS(unbound)サーバ
といったRHEL7の主要機能を一通り、実装することができるエンジニアとしてRedHatから認めてもらえる資格です。
本資格の取得にはRedHat認定システム管理者(RHCSA)を取得していることが必要条件です。
合格日:2017/03/31
点数:点数は伏せますがギリギリでした
勉強期間:2017/03/27 - 2017/03/30 (トレーニング受講期間)
勉強方法:
RedHat認定エンジニアトレーニングを受けて、その内容を全て理解します。
感想:
・試験時間は3.5時間あって全て実技試験です。
・資格取得にはトレーニングを受講した方が良いです。
・3.5時間て長いと思いますが、時間足りません。内容モリモリです。
・4日間のトレーニングは終わった後も毎日、復習を行いました。
・復習はVagrantで環境を整えて、何度も練習できるようにしました。
・RHEL7に未だ慣れていなかったのですが、慣れないと受かりません。
・なのでトレーニング受講の前にRHEL7に慣れておくことをオススメします。
・特にsystemctl、firewall、nmcliは押さえておくと良いと思います。
もう数年前から取りたかった資格の1つです。
Linuxを扱う人だったら取っておいた方が良いです。実技試験なのでLinuxサーバの構築はこの資格を持っているだけである程度証明されます。しかし難しかった。
Zabbixの日本語文字化けを解消する方法
ザビザビしてますか?僕です。
ZabbixのデータベースにMySQLを使っているのですが、ホスト名やトリガー名、ログ監視メッセージに日本語を使っていたら????????になっておりました。 Zabbix画面上では、メディアスクリプトに渡すアクションに登録した"メッセージ"も????????だし、ログ監視で抽出したログ内のログメッセージも????????となります。
これdefault character setがUTF8じゃないことからよく起こりうるので注意が必要です。特にAWSのRDSではlatin1がdefault character setなのでパラメータグループにてUTF8に適切に設定しましょう。 また、zabbix データベースを作成する際にはcharacter set utf8しましょう。
mysql> create database zabbix character set utf8;
んで、もうすでにlatin1で作ってしまった場合、これをUTF8に直す方法をこれから書きます。
まず、
mysql> show variables like 'char%';
や
mysql> show create table テーブル名;
でCharacter系パラメータがutf8じゃないことを確認します。utf8じゃなかったらまず今回の現象である可能性が高いです。 データベースやテーブルは以下のようにUTF8に変更しておきます。
mysql> alter database zabbix default character set utf8;
mysql> alter table テーブル名 ENGINE=MyISAM DEFAULT CHARSET=utf8;
ここからがUTF8に直す手順です。
- zabbix serverの停止
# systemctl stop zabbix-server
- mysqldump実行
# mysqldump -uroot -p -h RDSエンドポイント zabbix > zabbix.dump
# perl -pi -e 's/latin1/utf8/' zabbix.db
- リストア実行
# mysql -uroot -p -h RDSエンドポイント zabbix < zabbix.dump
- zabbix server起動
# systemctl start zabbix-server
これでOK。ちなみにあらかじめalter文でdatabaseもtableもutf8にしておけばリストア時にdrop databaseしなくても直ります。
Zabbix 3.0 認定プロフェッショナル
チェベックス! 僕です。
先日にZabbix 3.0 認定プロフェッショナルに合格したので以下にご報告いたします。
Zabbix 3.0 認定プロフェッショナルとは、Zabbixプロキシサーバーを使った分散監視や、仮想環境の監視、Zabbixサーバーの内部的な動作、ローレベルディスカバリー、パフォーマンスチューニングなど高度なZabbix技術について習得していることをZabbixに認定される資格です。
今回、本資格を取得するにあたり、Zabbix認定プロフェッショナルトレーニングを受講しました。トレーニング中に認定試験を受験します。
合格日:2016/12/09
点数:88.57%
勉強期間:2016/12/08 - 2016/12/09 (トレーニング受講期間)
勉強方法:
Zabbix認定プロフェッショナルトレーニングを受けて、その内容を全て理解します。
トレーニングの情報を示します。
講師:福島さん
場所:NTTコム ソリューションズ
感想:
■ Day1
■ Day2
・ 障害検知のフラッピングは運用あるあるなのでヒステリシスは効果的と思いまーす。
試験はスペシャリストに比べるとやや簡単な印象でした。
zabbixは機能が本当に豊富ですね。分散監視とかVMware監視とか歴史情緒を感じます。そしてエンタープライズですね。痒いところに届きます。
なんだかんだでzabbixって色々な業種、会社で使われていて、ここいらで一発認定トレーニングを受けて知識を得るか、と思いスペシャリストからプロフェッショナルまでを受講しました。受講してみてzabbixデーモンが何をやっているかがわかりましたし、様々な運用監視のシーンでzabbix機能を使ったソリューションを提案、実装できるようになったと思います!
認定スペシャリストを受講するともらえるポロシャツ
そして証書
Zabbix 3.0 認定スペシャリスト
色々と日々を過ごしている僕です。 はい。先日にZabbix 3.0 認定スペシャリストに合格したのでこちらにご報告いたします。
Zabbix 3.0 認定スペシャリストとは、Zabbix 3.0のすべての機能を網羅的に理解し、Zabbixの構築や運用に必要となるスキルを効率よく身につけていることをZabbixに認定される資格です。 今回、本資格を取得するにあたり、Zabbix認定スペシャリストトレーニングを受講しました。その情報も合わせて展開させてください。そのトレーニング中に認定試験を受験します。
合格日:2016/12/07
点数:90%
勉強期間:2016/12/05 - 2016/12/07 (トレーニング受講期間)
勉強方法:
Zabbix認定スペシャリストトレーニングを受けます。とにかく受けます。試験内容は言えませんが、思ったより難しかったです。
トレーニングの内容は以下に。
講師:福島さん
場所:NTTコム ソリューションズ
感想:
■ Day1
- 喫煙所あり、トイレ個室2個、綺麗
- 初っ端の演習zabbixのインストールは一度やったことある人だと退屈かも。
- 福島さんがちょいちょい挿むzabbix情報の小ネタ、プライスレス。
- zabbixのホスト作成、アイテム作成、を講師と一緒にやってみようのコーナー。
- それぞれの設定パラメータの細かい仕様、Tipsを教えてくれる。これは本トレーニングじゃないと知りえないと思う。
- パッシブ/アクティブチェックの違いとメリデメを理解できた。これデカい。
- 3日目に認定試験があるが、Zabbix社のポリシー上、講師は試験についてアドバイスを言えないらしい。ただし、本トレーニングをすべて理解すれば合格するものとなっている。
■ Day2
- zabbixはUIの操作性に癖があるが、効率的な操作を学んだ。
- やはり細かい仕様、Tipsを紹介いただく。これらは実際に設定するケースを想定したアドバイスなのでとてもありがたい。
- zabbixはきめ細かい監視ができることを実感。
- zabbixで監視できる種類は豊富であることを実感。
- これまでZabbixの70%も使えていなかったと感じる。
■ Day3
- 権限とグループの紐付きについて理解。
- グラフィカル3兄弟(カスタムグラフ/マップ/スクリーン)も丁寧に解説いただく。
- ネットワークディスカバリはAWSインスタンスの削除時に利用するといいかも、と思った。今だとホスト上でOS停止時にAPIで無効化してたり、一定時間ホストが無効ならDeleted Groupに移動するスクリプトcronとかやってたりする。
- 初めて触るITサービスなどw
Continue to Certified Professionals
Chefとテストフレームワーク
こんにちは、誕生した僕です。 5月に催されましたMicrosoftのイベントde:code 2016に参加してきまして、そこでなんとChef社のVP ジェームズ・ケーシーさんにChefSpecやInSpecといったChefを開発、運用するために必要なテストフレームワークについて教授いただきました。(2日目のセッションでね
ちょっとこの経験を僕なりに出力すべく、本ブログを書きたいと思います。 SQL Server 2014のChef レシピを作成し、InSpecで試験する、なんて方法を書きます。
レシピの説明
作成したSQL Server 2014のChefレシピを以下に貼ります。動作環境はWindows Server 2012 R2でございます。前提条件がありまして、.NET Framework 3.5が入っていて、WindowsファイアウォールがSQL Serverアクセス許可されていることとなります。
recipe of sqlserver chef cookbook
以下、各リソースごと説明いたします。
powershell_script 'delete-install-directory'
SQL Serverをインストールする前にインストール先のディレクトリが存在するとインストールに失敗するため、存在する場合は、Remove-Itemコマンドで削除します。directory 'C:/temp/'
workフォルダとでも言いましょうか。こちらを作成します。template 'C:/temp/ConfigurationFile.ini'
SQL ServerはConfigurationFileを指定してインストールできます。ConfigurationFileをtempフォルダに置きます。powershell_script 'download-sqlserver-iso'
SQL Server インストールファイルをtempフォルダにダウンロードします。powershell_script 'mount-iso-file'
ダウンロードしたSQL Server インストールファイルを指定してISOマウントします。powershell_script 'install-sqlserver'
マウントした場合のボリューム名をattributesに登録しておき、そのボリューム名をマウントするドライブレターを取得します。 そのドライブレターに移動し、インストールします。インストールにはattributesに登録された、SQL ServerサービスアカウントのパスワードとSQL Server システムAdminアカウントのパスワードとConfigurationFileを指定し、ライセンスアグリーメントのため/IACCEPTSQLSERVERLICENSETERMSを有効にしてインストールを実行します。powershell_script 'dismount-iso-file'
インストール完了後、ISOマウントしたディスクをアンマウントします。powershell_script 'delete-iso-file'
最後にSQL Server インストールファイルをインスタンスから削除します。
RubocopとFoodcriticで静的解析
このレシピやテストコードを作成するにあたり、RubocopやFoodcriticを利用しています。 具体的には、Atom editorのプラグインで利用しています。 RubocopはChefというよりかはrubyの構文を見てくれます。
※この例ではダブルクォーテよりもシングルクォーテの方が好き、と言われています。
Foodcritic(料理評論家)はChefの構文に特化して評論してくれます。
※評論の内容はこちらにあります↓
このように静的解析を行いながら開発することで質と開発スピードを両立することができます。
ChefSpecでユニットテスト
ChefSpecでChefレシピをユニットテストします。以下に作成したレシピをテストするspecファイルを貼りますね。
spec file of sqlserver chef cookbook
以下、簡単に説明します。
describe 'sqlserver::default'
レシピsqlserver::defaultの各リソースすべてについてテストします。before
テスト実施前の前提条件をここで設定しています。ここでは、レシピ内で使用するnot_ifのコマンド結果をfalseと設定しています。it ' **** '
各リソースごとit内にテストを記述します。- allow(File).to receive(:exist?).and_return(true)
リソース内にonly_ifがある場合、その条件をtrueとし、テストします。
- allow(File).to receive(:exist?).and_return(true)
これを実行するとこんな感じです。
$ chef exec rspec default_spec.rb
レシピを作る前にspecファイルを作ってテストがパスするようにレシピを作るとテスト駆動でCookbookを開発できますね。
レシピ実行
レシピを実行します。@WIndows Server 2012 R2
PS > chef-client -z -c client.rb -j windows.json
localモード(-z)
Cookbook、client.rb、windows.jsonを用意して、localモードで実行します。client.rb
Cache、Cookbook、logレベルを定義しています。
例では、C:/tempフォルダにSQL Server インストールファイルをあらかじめダウンロードしていますので、30分ほどで完了しました。
InSpecでインテグレーションテスト
InSpecでインテグレーションテストを行います。InSpecはInfrastructure Specificationの略のようです。 InSpecはSSHだったりWinRMだったりDockerだったりに対してリモートに実行することも可能ですが、今回はWindows Server 2012R2ローカルで実行します。
WindowsでInSpecを実行する準備
InSpecファイルの説明
以下にInSpecファイルを貼ります。
inspec file of sqlserver chef cookbook
主にインストールされたであろうサービスを確認しています。簡単に説明しますね。
impact
InSpecはチームでテスト結果を共有することを強調しています。まぁ優先度ですね。title and desc(ription
こちらもチーム共有のための付帯情報です。
まとめ
FoodcriticやChefSpecは以前から気になっていました。InSpecはde:code 2016で知りました。
一連のChefレシピ開発を推進するツールは十分揃っていてWindowsでも"使える"ことが確認できました。
Windowsと自動化ってまだまだ色眼鏡で見られがちですが、MicrosoftのOSS活動と同様に自動化ツール界隈も加速しています。
Windows as a Codeに乗り遅れるな!!
コードと参考文献
紹介したコードはこちらにございます。
そしてSQL Server 2014のレシピを作成するにあたり、こちらの記事を参考にさせていただきました。
終
スターティングGo言語を読んで
GW最後の僕です。
本日はこちらの書籍を読んだので感想を書きます。
僕のプログラミング経験はJavaを昔にちょろっとstrutsで業務アプリケーションを開発した程度。あとはPerlでバックアップとかファイルを複数サーバに配布したりするスクリプトを書いていたり、RubyでAWSやCloudStackのAPI操作をしている程度の経験です。
Go言語は約一ヶ月前から勉強していて某監視サービスのプラグインを書いてみたり、その監視サービスのWebhooks先のWebアプリケーションを書いてみたりしている程度です。
さて、それでは感想を以下、箇条書きで。
・Go開発環境の説明あり。まぁサクッと流し読み。
・Go言語はオブジェクト指向でなかったり、クラスがなかったり、継承概念がなかったり、コンパイラが厳格だったり、と他プログラミング言語とは違った特色があります。この特色にはGo言語が主張するメリットがあります。ここら辺について丁寧に解説されていて理解できました。
・演算子、制御構文、変数/関数定義といったプログラミング紹介書籍には必ずあるこれらの説明ですが、本書にももちろんあります。流し読み、そして写経。
・Go言語では構造体とインターフェースが重要な要素となります。本書の購入はこちらの理解をさらに深めたいのが、一番の目的でした。結果、理解を深められましたが、もう少し、深く、量も多く割いていただけると良かったな、と感じます。
・Goパッケージの紹介。実例を基に紹介。こちら写経。
まとめ
僕のようなGo言語初心者は目を通して、写経することでGo言語の理解がさらに深まると思います。また、箇条書きした通り、本書を読んで、Go言語の思想を理解し、Go言語の書き方に対して納得できたと感じます。
それではまた
Oracle 11gを実行するDockerコンテナをRUN
こんばんは。あらかじめ決められた僕です。
Infrastructure as a codeなツールを勉強するときはOracle11gで試す癖があります。
今回は、Oracle11gを実行するDockerコンテナを作りましたので共有します。
いきなり以下にDockerfileを貼ります。
1: OSイメージはOracle Linux 6を使用
4-6:Oracleのユーザグループを作成
7-8:Oracleのユーザ作成とパスワード設定
9-10:Oracleユーザにグループを設定
11-13:ORACLE_HOME、ORACLE_BASE、インベントリー用のディレクトリをmkdr
14:Oracleデータベース用のテンプレートをCOPY
15:Oracle用ディレクトリすべてをOracleユーザの所有に設定
16:Oracle11gに必要なパッケージをyumインストール
17:Oracleに必要なカーネルパラメータが設定されたsysctl.confをCOPY
18:Oracle11gのインストールdisk1とdisk2を解凍して2つとも同じディレクトリに入れたdatabaseディレクトリをCOPY
19-20:databaseディレクトリの所有者をOracleユーザにして実行権限を付与
22-23:Oracleユーザでdatabaseディレクトリに移動
24-26:サイレントモードでrunInstaller
COPYしたdatabaseディレクトリにOracle11gインストール用の応答ファイルdb_install.rspを準備しておく
27-28:rootユーザでroot.shを実行
30:Oracle環境変数をexportするため.bash_profileをOracleユーザのホームディレクトリ直下にCOPY
ADDとCOPYだけど、ADDは解凍機能を持つので、解凍する場合に使う。単なるファイル置くだけならCOPYを使ってます。
31:Listenerとデータベースを設定するためのスクリプトoracle.shをCOPY
32:Oracleユーザのホームディレクトリ以下をOracleユーザ所有に設定
34:Listenerポートを外部に公開
35-36:OracleユーザでOracleホームディレクトリに移動
37:oracle.shを実行
よっしゃ。Dockerfileを作成したらbuildしましょう。
$ docker build -t "tsubauaaa/oracle-docker" .
割と時間かかりますが、buildが完了するとoraclelinuxとtsubauaaa/oracle-dockerの2つイメージが出来上がります。
それではRUNしたいのですが、このイメージを実行するとoracle.shが実行されます。oracle.shでは
- .bash_oracleを読み込んでOracle環境変数をexport
- listener.oraを作成
- Listenerを開始
- dbcaにOracleデータベース用テンプレートdb_create.dbtを指定してデータベース作成
- Alertログをtail
をやります。
$ docker run -p 1521:1521 --ipc=host --name oracle-docker --hostname oracle-docker tsubauaaa/oracle-docker
コンテナを停止するとデータベースのデータは消えます。
こちらにDockerfileとかoracle.shといった関連ファイルを置いています。
こちらのサイトを参考にさせていただきました。
Installing the Oracle database in docker | Frits Hoogland Weblog
おしまい