YAMLは、Ansible、Kubernetes、CI / CDパイプラインなどの重要なDevOpsツール、テクノロジー、プロセスの一部となったため、ここ数年で多くの人気を博しています。
AnsibleとKubernetesに関する多くのチュートリアルについてはすでに説明しました。 DevOpsツール構成をよりスムーズに操作できるように注意する必要があるように、YAMLの基本事項について説明することを考えました。
YAMLとは何ですか?
YAMLは"YAMLAin'tMarkupLanguage"の略です もともとは「YetAnotherMarkupLanguage」の頭字語でした。 YAMLは「データシリアル化」言語であり、基本的に人間が読める構造化データ形式です。
読み取りと書き込みに適した設計になっています。 YAMLのオブジェクトシリアル化機能は、JSONの実用的な代替手段としての役割を果たします。 YAMLはJSONのスーパーセットであり、インデントベースのスコープを使用してPythonのような構造を示します。
YAMLの例を次に示します:
---
Student-ID: 314159
First-Name: Linus
Last-Name: Torvalds
Phone-numbers:
- 281.555.7777
- 832.676.8888
- 937.996.9999
Addresses:
- Street: 123 Main St.
- City: Houston
- State: Tx
---
常に覚えておくべきYAMLの基本ルール
YAMLファイルの解析中にエラーが繰り返されないようにする場合は、YAMLで作業するときに常に次の点に注意する必要があります。
- YAMLではタブは使用できません。インデントにはスペースを使用する必要があります。
- 子ノードのインデントが親よりも大きい限り、スペースの量は重要ではありませんが、同じ数のスペースを維持することをお勧めします。
- YAMLのさまざまな要素の間にスペースが必要です(後で説明します)。
- YAMLでは大文字と小文字が区別されます。
- YAMLファイルは
.yaml
のような拡張子で終わる必要があります または.yml
。 - YAMLでは、UTF-8、UTF-16、およびUTF-32エンコーディングが可能です。
YAML構文を理解しましょう。
YAMLファイルの要素:基本構文
YAMLファイルはデータを記述するために使用されます。 YAMLファイルでは、コンテンツはすべてキーと値のペアのコレクションに関するものです。 ここで、値は文字列からツリーまでの範囲であれば何でもかまいません。
例を挙げて理解しましょう。これはKubernetesサービスマニフェストファイルです。
kind: Service
metadata:
name: web-app-svc
spec:
type: NodePort
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
selector:
app: web-app
これがキーと値のペア要素のセットであることは自明です:Name: Value
。
上記のファイルからわかるように、YAMLファイルはいくつかの異なる要素で構成されています。一緒に、それらは多種多様な構造を記述するために使用することができます。
1。スペースまたはインデント
YAMLでは、タブではなく空白でインデントします。また、要素間にスペースが必要です。
正しい仕様:
Kind: Service
誤った指定:
Kind:Service
上記のステートメントでは、コロンの後にスペースがないためです!
2。 YAMLのコメント
コメントは、アイテムの前にハッシュを配置することで定義できます'#
'。コメントは、行のどこの行の先頭にも作成できます。
YAML構成ファイルを確認すると、「#serviceport」などの3つのインラインコメントがあります。
3。スカラー(キー値)
スカラーは、ページ上のデータを構成する文字列と数値です。簡単に言えば、これらはキーと値のペアです。
kind: Service
metadata:
name: web-app-svc
4。コレクションとリスト
リストとコレクションの要素またはメンバーは、同じインデントレベルで始まり、ダッシュで始まり、その後にスペースが続く行です。
- web-app-prod
- prod-deployments
- prom-monitored
これは基本的なリストであり、リスト内の各アイテムが最初のダッシュで独自の行に配置されています。
5。ネストされたコレクション
アイテムとサブアイテムを含むネストされたシーケンスを作成する場合は、サブアイテムの各ダッシュの前に1つのスペースを配置することで作成できます。
-
- web-app-prod
- prod-deployments
- prom-monitored
-
- web-app-test
- staging-deployments
- not-monitored
6。辞書
辞書はkey: value
で構成されます コンテンツがインデントされたフォーマット。
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
次のように、リストと辞書のコレクションをマージして混同することができます。
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort:
- 30012
- 30013
- 30014
これらはYAMLの非常に基本的な概念ですが、DevOpsエンジニアにとって不可欠です。
YAML用の特別なエディターは必要ありません。お気に入りのテキストエディタはすでにYAMLをサポートしているか、必要に応じてプラグインを使用しているはずです。
深く掘り下げて学ぶことができることはたくさんあります。そのためには、いつでもYAMLの公式ドキュメントを参照できます。
より良いシステム管理者またはDevOpsになりたいですか?今すぐLinuxハンドブックのメンバーになりましょう。