Redhat Forum Tokyo 2018に参加するか...
お疲れ様です。伊藤です。 相変わらず細々と月一更新しております。ときどきAnsible日記でございます。 今年はほんとに異常気象の連続で本日も観測史上最大クラスの台風が来るし始末....みなさまくれぐれもお気を付けください。
さてそんな中RedhatよりRedhat Forum Tokyo 2018のお知らせが...
こちらは第一線の皆様がOSS(というかRedhat)を中心とした技術的な公演を行うフォーラムでございます。2年ほど前にかなりこういった講演に参加して色々と勉強になりましたのでこちらにも書かせていただきます。 場所はRedhatのお膝元、恵比寿のウェスティン東京です。Redhatのイベントはかなりの確率でこちらですね。300名ぐらい人が入る巨大なホールがあるホテルです。 Redhatのフォーラムは無料で食事が出たり、お土産を一杯くれたりかなり太っ腹だと思います。(Ansibleでテストを試してみる - ときどきAnsible日記にちょっとだけ書いてます)
しかし今回はすでにランチセッションはいっぱいですね...すごいなぁ... というわけでちょっとこちらのフォーラムで気になるセッションを挙げていきたいと思います。気になる方は是非参加してみてください(今回もぬるい内容で行きます)
まずはこちら
(仮) Red Hat OpenShiftとAWS サービスの融合 アマゾン ウェブ サービス ジャパン株式会社
https://reg.redhat-forum.jp/modal.php?id=CL04 DockerベースのOpenShiftはやはり気になります。あとはAWSでもコンテナの対応をしたりして今後のAWSの動向などをうかがえるとよろしいかと。
Ansible活用による自動化 九電ビジネスソリューションズ株式会社
https://reg.redhat-forum.jp/modal.php?id=AT01 こちらはAnsibleの講演。Ansibleの話は人気なのですぐにいっぱいになります。こちらはAnsibleTowerの実績なんかを説明してくれるっぽいです。
コンテナとOpenShiftが拓くデジタル・トランスフォーメーション・ジャーニーへの道 レッドハット株式会社
https://reg.redhat-forum.jp/modal.php?id=AP03 Redhatさんほんとデジタルトランスフォーメーション好きっすねぇ。。しかして今年のデジタルトランスフォーメーションの進行具合も知りたいので見てみたい。
Red Hat OpenStackで実現した進化する開発環境クラウド ~ DevaaS2.0 NTTコムウェア株式会社
https://reg.redhat-forum.jp/modal.php?id=CL10 RHOSP(RedhatOpenStackPlatfiom)を使用したクラウドサービスのDevaaSについての講演。RHOSPを実用化してクラウドサービスを作っている人の話が聞けるはず。
【テクニカル ディープ ダイブ セッション】AIとマシンラーニングのコンテナ活用(仮 レッドハット株式会社
https://reg.redhat-forum.jp/modal.php?id=Tech&prev= AIにコンテナを利用したtechnicalディープダイブセッション??何かよくわかりませんがすごそうなので見てみたいです。
そのほかAnsible始めました、みたいなセッションも多くありますが、もはやAnsibleを導入は当たり前のところもあるので今はいいかな...というのが個人的見解です。 その他名だたる方々の講演(ゼネラルセッション)も多くあります、Redhatの社長やCEOなどめったにお会いできない方と直接会うチャンスです。
それではみなさんお疲れ様でした。
YAMLについて
お疲れ様です。伊藤です。
暑かった夏も終わり季節はすっかり秋....と思いきやまた暑い日が続いております。全く今年はほんとに異常気象ですね。
私はと言えば、相変わらずOpenStackを触っております。う~ん、OpenStackもあまりにも奥が深いのでなんとか沈まないように暴れてギリ浮いている感じ。
さて、今回は実はAnsibleで最初の砦になるんじゃないかと個人的に思っているYAMLです。YAMLはヤメルとかヤムルと読み、データを書くための記法、構文になるものです。で、Ansibleではデータを書く場合にはYAMLが使われますし、ServerSpecでも当たり前に使われておりますが、この辺意外にわかりづらい部分が多く、分かったようで間違ってハマるということが(個人的には)よくあります。というわけで今更感はありますがYAMLについてちょっと今回書いていきたいと思います。
wikipediaによると以下のような感じ
YAMLは再帰的に定義された頭字語であり "YAML Ain't a Markup Language"(YAMLはマークアップ言語ではない)の意味である。初期には "Yet Another Markup Language"(もうひとつ別のマークアップ言語)の意味と言われていたが、マークアップよりもデータ重視を目的としていたために後付されてできた名前である。しかしながら XML(本当のマークアップ言語)がデータシリアライズ目的のために頻繁に使用されるため、 YAMLを軽量マークアップ言語と考えることもできる。類似の規格としてJSONがある。
う~ん...相変わらずこの手の説明は訳が分かりません。要はマークアップ言語(マークアップ言語はXMLみたいなタグで囲むようなやつです、HTMLとか)じゃないよ、ってことでタグ使わないよ、という意味だと思っています。
じゃあどうやってデータを書くの?となりますが、個別にみると非常に簡単です。
ハッシュ
まずはハッシュと言われるデータの書き方。基本はこれです。
キー: 値
キー書いてコロンとスペース入れて値です。実際に値を入れるとこんな感じ
user_name: johnd user_id: 1040 user_group: admin
Ansibeで使うときは文字列はダブルコーテーションで囲うのが通例かと思います。まあ実際は囲わなくても動きますが...でこのように定義された変数はAnsibleでは下記のように読み込めます。
- user: name: {{user_name}} uid: {{user_id}} group: {{user_group}}
呼び出し側もYAMLなので分かりづらいですね...userモジュールの詳細はこちらをご参照ください(AnsibleのModule:user - ときどきAnsible日記)
リスト
このままだとちょっと意味が無いように見えます。ユーザデータであれば、ユーザー名を複数入力して繰り返し処理とかしたいもの。そこでYAMLにはリストという機能があります。これは一つの項目に複数の値を入れられるというものです。ITっぽく言うと要は配列です。値やキーの頭にハイフンを入れることで複数入力が可能になります。
user_name: - johnd - edy - michel
ネスト
ここでさりげなくネストを行っています。ネストとは要は頭のスペースでこれを打つことで一段上の項目の子供になります。スペースは2つで1段になります。
親A: - A子供1 - A子供2 - A子供3 親B: - B子供1 - B子供2 - B子供3
これは親Aというキーに子供という値を複数入れるために値の頭にハイフンが入り、それぞれネストさせています。これで値的には
親A =>[A子供1],[A子供2],[A子供3] 親B =>[B子供1],[B子供2],[B子供3]
と、なり呼び出す際には
親A[2] => A子供2
というように呼べます。
で、同じキー名が並ぶ場合にはキー名の頭にハイフンが入ります。例えば先ほどのuserモジュールに入れる値を配列にして作成しようとすると
user_data: - user_name: johnd user_id: 1040 user_group: admin - user_name: edy user_id: 1041 user_group: apache - user_name: michel user_id: 1042 user_group: test
というようなイメージになります。このような形であればuserモジュール内で繰り返しユーザを作成するPlaybookを組むことができます。
私の知る限りYAMLはハッシュとリストとネストの組み合わせです。なので分かってしまえば非常に単純なのですがネストやリストが複雑になっているYAMLはやはり読みにくいもの。そのあたりはソース同様読みさすさなども重視する必要があります。
今回は以上です。ちょっとわかりづらいのでまたやるかもしれません。