geek.conf.2

あるエンジニアの備忘録

Terraformメモ

TerraformでAWSについて、アクセスキーとシークレットキーの受け渡し方を考察

なんか、カレントにterraform.tfvarsファイルを置いておけば読んでくれるみたい。
# vi terraform.tfvars


access_key = "foo"
secret_key = "bar"

terraform.tfvarsじゃなくても実行時に-var-fileで指定すればOK
そしてtfにvariable登録。


variable "access_key" {}
variable "secret_key" {}

そしてtfに以下のように定義。


provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}

VPCを作成するとTargetがlocalのmainルートテーブルが作成されるが、これは通常AWS APIが自動で
作成するものなのでTerraformで作成する必要はないと考えます。
しかし、このmain ルートテーブルをPrivateサブネットに反映したいので、そのやり方を考えてみました。


# private-1a Association definition
resource "aws_route_table_association" "pri-1a-asso" {
subnet_id = "${aws_subnet.private-1a.id}"
route_table_id = "${aws_vpc.vpcname.main_route_table_id}"
}

ってだけなんですけどね。てかaws_vpcのAttributesでmain_route_table_idてのがあってこれがmainルートテーブルのidとして使えるってだけなんですけどね。
同じようにNACLとかdefault VPC security groupとかもある。

他Terraform Tips
・terraform destroyしたときの計画確認


# terraform plan -destroy

・Terraformを経由して作成したものをAWS管理コンソールで編集した場合は、Terraformで修正削除可能。
・Terraformを経由しないで作成されたものはTerraformでは編集も削除も出来ない。stateファイルterraform.tfstateにないからね。

Atlasとの連携
access_tokenをATLASから発行
・export ATLAS_TOKEN=******を.bash_profileにでも書いておく。


# terraform remote -name=Atlasユーザ名/Atlasリポジトリ
※追記:上記コマンドの書き方はv0.4.0以降エラーになるようになっちゃった。
※Atlasリポジトリ名はなんでも可
これでterratermするとAtlasでstateファイルが追跡可能となる。
ちなみにATLAS_TOKENをexportしていないと以下のエラーになるよ。
missing 'access_token' configuration or ATLAS_TOKEN environmental variable

とりあえずここらへんで。

AWS ソリューションアーキテクト アソシエイト

ういっす。なんか疲れた僕です。
AWSソリューションアーキテクトアソシエイトに合格したのでログを記します。

AWSソリューションアーキテクトアソシエイトとは簡単に言うとAWSのサービスを使ってシステムを設計できるよ、できるんじゃない?設計くらいは、とAWSに認定してもらう試験です。

AWSのサービスを使うだけじゃなくてその利点と謳う分散配置をうまく使って、スケーラビリティ、可用性、耐障害性が極めて高いシステム設計が問われます。

合格日:2015/02/01
点数:81%
勉強期間:15日(2015/01/17 - 2015/02/01)
勉強方法:
AWS実践入門受講
・Architecting on AWS受講
AWSドキュメントを読む。以下、読んだもの。
----------------------------------------------------------------------------------
EC2、VPCのユーザーガイド、S3の入門ガイド、開発者ガイド、
ELBの開発者ガイド、Auto Scalingの製品の詳細、
IAMの使用、RDSのユーザーガイド、CloudWatchの開発者ガイド、
SQSの開発者ガイド、SWFの製品の詳細、SNSの開発者ガイド、
AWS セキュリティとコンプライアンス
----------------------------------------------------------------------------------
一応、EC2(ELB)、VPC、S3、EBS、IAM、RDS、CloudWatch、SQS、SWFのよくある質問も読んだ。

AWSドキュメントが英語だったりあまり充実していないサービスについてはマイスターまたはBlack Belt Techを読む。
読んだ中で効果的だったマイスターは、、
----------------------------------------------------------------------------------
Amazon Simple Work Flow Service
:ムズい。
リザーブドインスタンス&スポットインスタンス
:スポットインスタンスなんて初めて知ったよ。
Amazon CloudWatch & Auto Scaling
:イマェさん。AutoScalingポリシーについて理解を深められたかな。
Reloaded -Amazon Glacier-
:Glacier = 氷河なんですって〜
Amazon CloudFront / Amazon Elastic Transcoderによるコンテンツ配信
:ClodFrontとS3との連携時におけるベスプラが重要。
AWS ElasticBeanstalk
:開発環境までサーセン、アマさんっ★
Amazon Route 53
:LBRの舞台裏にwonderfuuuuuuuuul!!
----------------------------------------------------------------------------------

読んだ中で効果的だったBlack Belt Techは、、
----------------------------------------------------------------------------------
Elastic Load Balancing (ELB)
DNSフェールオーバを利用したELB/S3によるソーリーページ機能はいいね!って思った。
AWS Identity and Access Management
:IAMと企業のディレクトリサービスとの連携はむ髄ね!
Amazon Elastic MapReduce
:まっぷりでゅーす??
----------------------------------------------------------------------------------

AWSドキュメントを真剣に読むと時間を浪費しちゃうのでマイスターシリーズやBlack Belt Techを読んで、AWSサービスを"このように"使うとオンプレミスでの課題が解決できるどころか、比較にならない可用性と耐障害性が得られますっていう意図を読んで"このように"の部分を考察すべし!!

なんか疲れたので今後はアニメでも見ます。see you.

ORACLE MASTER Platinum データベースの作成およびネットワーク構成 その2

[ ] 複数の物理デバイスにまたがるデータ・ファイルのストライピング

複数のディスクにまたがって複数のデータ・ファイルを持つ表領域を作成する。

0.前提条件
CREATE DBまで完了している状態で、、

1.複数の物理デバイスのパス
まず一つ目のデバイスのパス:/u01/app/oracle/oradata/orcl/
次に二つ目のデバイスのパス:/u02/app/oracle/oradata/orcl/

二つ目は予め作成しておく。
$ mkdir -p /u02/app/oracle/oradata/orcl/
# chown -R oracle:install /u02/app/oracle/

※/u01と/u02は別の物理デバイスにあるテイ。

2.表領域を作成
$sqlplus / as sysdba
SQL>create tablespace TBS_STRIPE datafile '/u01/app/oracle/oradata/orcl/tbs_stripe01.dbf' size 250M,
'/u02/app/oracle/oradata/orcl/tbs_stripe02.dbf' size 250M;

3.表領域にデータ・ファイルを追加
SQL>alter tablespace TBS_STRIPE add datafile '/u02/app/oracle/oradata/tbs_stripe03.dbf' size 250M;

4.表領域の削除
SQL>drop tablespace tbs_stripe including contents and datafiles cascade constraints;

[ ] パフォーマンス最適化のためのデータベース環境設定

1.パフォーマンスに影響を与える重要な初期化パラメータの確認と変更
・COMPATIBLE
変更の必要なし
・DB_BLOCK_SIZE
変更の必要なし
・SGA_TARGET
SQL>alter system set sga_target=500M scope=both;
PGA_AGGREGATE_TARGET
SQL>alter system set pga_aggregate_target=10M scope=both;
・PROCESSES
SQL>alter system set processes=140 scope=spfile;
SQL>shutdown immediate
SQL>startup
※反映には再起動が必要
・SESSIONS
SQL>alter system set sessions=300 scope=spfile;
SQL>shutdown immediate
SQL>startup
※反映には再起動が必要
・UNDO_MANAGEMENT
変更の必要なし(CREATE DB時のデフォルトauto)
・UNDO_TABLESPACE
変更の必要なし(CREATE DB時のデフォルトundotbs1)
※初期化パラメータの確認はSQL>show parameter <初期化パラメータ名>

[ ] 設定ファイルの作成と管理
1.異なるディスク上での制御ファイルの多重化

・異なるディスク作成
まず一つ目のディスクのパス:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/
次に二つ目のディスクのパス:/u02/app/oracle/product/11.2.0/dbhome_1/dbs/

#mkdir -p /u02/app/oracle/product/11.2.0/dbhome_1/dbs/
#chown -R oracle:oinstall /u02/app/oracle/

/u01,/u02は異なるディスクのテイ。

SQL>shutdown immediate
controlファイルをコピー
SQL>startup nomount
SQL>alter system set control_files='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ora_control1','/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ora_control2','/u02/app/oracle/product/11.2.0/dbhome_1/dbs/ora_control3' scope=spfile;
SQL>shutdown immediate
SQL>startup

2.新しい制御ファイルの作成手順

3.制御ファイルのバックアップ

4.制御ファイルのコピーを使用した制御ファイル破損からのリカバリ

5.制御ファイルのコピーを使用した永続的なメディア障害からのリカバリ

6.制御ファイルの削除

ORACLE MASTER Platinum データベースの作成およびネットワーク構成 その1

さてテスト内容チェックリストに沿っていくのであーる。

[ ] データベースの作成
dbcaでやらずにCREATE DATABASEからやってみる。
環境はここの8.LISTENER構成 前から

0.環境準備
環境変数とか、oracleユーザとかやっておくこと。
ここでは割愛。

1.各種Oracleファイル格納ディレクトリの作成
$ mkdir -p $ORACLE_BASE/admin/orcl
$ mkdir -p $ORACLE_BASE/admin/orcl/adump
$ mkdir -p $ORACLE_BASE/admin/orcl/ddump
$ mkdir -p $ORACLE_BASE/admin/orcl/pfile
$ mkdir -p $ORACLE_BASE/admin/orcl/scripts
$ mkdir -p $ORACLE_BASE/flash_recovery_area/orcl
$ mkdir -p $ORACLE_BASE/oradata/orcl


2.初期化パラメータ・ファイルの作成
サンプルから作成する。
$ cp -p $ORACLE_HOME/dbs/init.ora /u01$ORACLE_BASE/admin/orcl/pfile/

以下にinit.oraを披露する。の部分は/u01/app/oracleに編集する。
これに沿って各種Oracleファイル格納ディレクトリも作ってる。
memory_targetのみ変更(1g⇨800M)じゃないとDB startup後、以下のエラーを喰らう。
ORA-00845: MEMORY_TARGET not supported on this system

$sqlplus / as sysdba
SQL>create spfile from pfile='/u01/app/oracle/admin/orcl/pfile/init.ora';


# Change '' to point to the oracle base (the one you specify at
# install time)

db_name='ORCL'
memory_target=800M
processes = 150
audit_file_dest='/u01/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'

3.CREATE DATABASE文のSQL作成
Oracleドキュメント記載例に従って作った。
$ vi $ORACLE_BASE/admin/orcl/scripts/createdb.sql


CREATE DATABASE orcl
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/orcl/redo01a.log','/u01/app/oracle/oradata/orcl/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02a.log','/u01/app/oracle/oradata/orcl/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03a.log','/u01/app/oracle/oradata/orcl/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

4.CREATE DB
$sqlplus / as sysdba
SQL>startup nomount
SQL>@$ORACLE_BASE/admin/orcl/scripts/createdb.sql

5.スクリプトの実行によるデータ・ディクショナリ・ビューの作成
データ・ディクショナリ・ビュー、シノニムおよびPL/SQLパッケージの作成およびSQL*Plusの適切な稼働に必要なスクリプトを実行します
SQL*Plusで、SYSDBA管理権限でOracle Databaseインスタンスに接続します。
@$ORACLE_HOME/rdbms/admin/catalog.sql
@$ORACLE_HOME/rdbms/admin/catproc.sql
SQL*Plusで、SYSTEMユーザーとしてOracle Databaseインスタンスに接続します。
@$ORACLE_HOME/sqlplus/admin/pupbld.sql
Oracleドキュメントのコピーでサーセン

[ ] データベース構成のためのパラメータ設定
1.パフォーマンスに影響を与えない必要な初期化パラメータの確認と変更
・DB_NAME
変更不可
・DB_DOMAIN
変更不可
・OPEN_CURSORS
SQL>alter system set open_cursors=500 scope=both;
・CONTROL_FILES
DBシャットダウン、controlファイルコピー。
SQL>alter system set control_files='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ora_control1',
'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ora_control2',
'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ora_control3' scope=spfile;
※反映には再起動が必要
※ora_control3を追加してる。
・DB_FILES
SQL>alter system set db_files=100 scope=spfile;
SQL>shutdown immediate
SQL>startup
※反映には再起動が必要

[ ] 各種表領域の作成
これは、上のCREATE DB文で補完してるんじゃないかな。

とりあえず終わり

vCenter Server Appliance 5.5をインストールしてゲストOSをクローンしたお話

お腹減った僕です。

さて今日は表題の通り、VMware vCenter Server Applianceをインストールしちゃいます。
とりあえずVMwareからDLしたOVAファイルを用いてvSphere Client上でデプロイしちゃいます。

画面とかは省きますね。詳しくはこちらに載っています⇨VMware vCenter Server Appliance 5.5 のインストールと VMware vSphere Web Client によるアクセス / vSphere 5.5 (ESXi 5.5)

僕はThickのEager Zeroedでデプロイしちゃいますね。
デプロイが正常に完了後、vCSAを起動して設定していく前に、メモリが8GBもあるので、最小の4GBにします。
vCPUも2個となっていますが、必要みたい。。本当にいるのか。。

設定は以下のURLで。⇨https://vCSAのさーばーめーい:5480
そしてDBもSSOもEmbeddedのデフォ構成とします。
構成完了後、
そのままNetworkからIPアドレスをStaticに、vCenter ServerのTimeからNTPサーバを設定する。

これで完了。
macマシンからvSphere Web Clientを起動てかアクセス⇨https://vCSAのさーばーめーい:9443
※ちなみにアカウントはデフォルトでroot/vmwareだからな、これ試験に出るぞ。

そんで、まずデータセンターを追加して、ESXiホストを追加します。
ESXiホストを追加する際、ライセンスは評価ライセンスを使用しました。はい。
ちなESXiホストの無償ライセンスを選択するとデータセンター作成に失敗しますよってに。

こんな具合。macにvSphere!!カッコイイ!!
vmware0113.png

終わり

VMware ESXiとmacマシンでvSphere Client

いやぁ、これから本格的に本ブログを再開するつもりなんで、よろしく僕です。

Oracle Master Platinum環境の構築でESXiを導入しました。
これをmacマシンから仮想マシン作成だとかしたくて、したので書きますね。

macマシン:MacBook Pro (Retina, 13-inch, Late 2013)
モデル番号:ME864xx/A
OS:OS X Yosemite (10.10.1)
仮想ソフト:VMware Fusion7.1.0
仮想マシンOS:Windows 8 通常版

そうです。macマシンに作成したWindows仮想マシン上にvSphere Clientを入れてます。
ただそれだけですが、この構図、とても胸熱じゃないですか?
Evernote Camera Roll 20150111 223426



ちなESXiにvSphere Clientを接続したらまず、ライセンス登録しましょう。
vSphere Clientダウンロード時にライセンスキーがメールが送付されるはず!

ちなESXiにストレージの追加を行う際に以下のエラーが起きました。
ESXi「ホストネーム|IPアドレス」で(またはvCenter Serverで)オブジェクト「storageSystem」の「HostStorageSystem.ComputeDiskPartitionInfo」 の呼び出しが失敗しました。

そんなときはこちら↓のページのように対処しましょうね。
ESXi ストレージ作成で失敗
Blog of mk2 - VMware vSphere ESXi 5.5.0 で使用済みHDDをデータストアに追加する

おしまいω

mac os Xにoracle clientを入れる

はてさてタイトル通り、やります。

macマシン:MacBook Pro (Retina, 13-inch, Late 2013)
モデル番号:ME864xx/A
OS:OS X Yosemite (10.10.1)

1.Oracle Clientダウンロード
とりあえずここから
instantclient-basic-macos.x64-11.2.0.4.0.zipとinstantclient-sqlplus-macos.x64-11.2.0.4.0.zipを入手。
そして解凍して、おのおの(のか)をディレクトリinstantclient_11_2にマージする。

2.Oracle Clientインストールディレクトリの作成
/Applications/oracle/product/以下に作る。

$mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.4.0/bin
$mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.4.0/lib
$mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.4.0/jdbc/lib
$mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.4.0/rdbms/jlib
$mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.4.0/sqlplus/admin

3.Oracle Clientのファイルをインストールディレクトリに配備
ディレクトリinstantclient_11_2内のファイルを以下のように移動させる。

$mv ojdbc* /Applications/oracle/product/instantclient_64/11.2.0.4.0/jdbc/lib/
$mv x*.jar /Applications/oracle/product/instantclient_64/11.2.0.4.0/rdbms/jlib/
$mv glogin.sql /Applications/oracle/product/instantclient_64/11.2.0.4.0/sqlplus/admin/
$mv *dylib* /Applications/oracle/product/instantclient_64/11.2.0.4.0/lib/
$mv *README /Applications/oracle/product/instantclient_64/11.2.0.4.0/
$mv * /Applications/oracle/product/instantclient_64/11.2.0.4.0/bin/

4.tnsnames.oraを配備
言わずもがな。

$mkdir -p /Applications/oracle/product/network/admin
$vi /Applications/oracle/product/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.18)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

5.環境変数セット
これもお馴染み。しかし、macマシンに.bash_profileがないため、作成しちゃう。
$vi ~/.bash_profile
export ORACLE_BASE=/Applications/oracle
export ORACLE_HOME=$ORACLE_BASE/product/instantclient_64/11.2.0.4.0
export PATH=$ORACLE_HOME/bin:$PATH
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_BASE/network/admin
export NLS_LANG=Japanese_Japan.AL32UTF8
※LD_LIBRARY_PATHではなくDYLD_LIBRARY_PATHであることに注意
※NLS_LANGないとsqlplusが文字化けるので

6.接続確認
$sqlplus system/oracle@192.168.1.18/orcl
SQL>

参考ページ:Oracle Client 11gR2 (11.2.0.3) for Apple Mac OS X (Intel)

おわ