インフラ構成管理のデファクトスタンダードであるAnsibleをz/OSでも活用できないか?と思ったことはありませんか。実際、Ansibleはあらゆるプラットフォームに対応しており、高い拡張性と柔軟性で定評があります。そこで、z/OSを操作するモジュールをAnsibleに追加すれば、z/OSの世界もAnsibleで管理できるようになるのではないか…というご要望をたくさんいただいておりました。
これを実現するのが、Red Hat Ansible Certified Content for IBM Zです。ここでは、この仕組みとメリットについて解説します。
Red Hat Ansible Certified Content for IBM Zとは
Red Hat Ansible Certified Content for IBM Z(以下、コンテンツ)は、z/OS用の操作を行う機能を提供するモジュールの集まりです。最近のAnsibleでは、必要に応じて追加導入できるモジュールの集まりをCollectionと呼んでいます。Ansibleの管理者は、使いたいCollectionを選び、Red Hatのサイトからダウンロードして、Ansibleに導入すればよいようになっています。
名前に"Certified"と付いているのには理由があります。Collectionはオープンソースソフトウェアとして開発・提供されていますので、どなたでも無償で使うことができます。使ってみて、実際の本番業務で使いたいとなったら、開発元のサポートが必要になるかも知れません。その際、サポート契約を結ぶだけでサポートが得られるように、あらかじめ"Certify"した状態でリリースしてあるのです。
2020年3月にコンテンツが発表されて以来、さまざまな機能拡張が急ピッチで行われています。2020年12月現在、以下のCollectionが公開されています。今後、ミドルウェアの品揃えを拡充すべく開発が進められています。
ここでは代表的なCollectionであるIBM z/OS core collectionについて説明します。これを題材として、Ansibleからz/OSを操作することができるイメージをつかんでもらえればと思います。
IBM z/OS core collectionとは
z/OSの基本機能を操作するモジュールを提供します。具体的なモジュール名と機能を以下の表にまとめました。z/OSでは、JCL、MVSシステムコマンド、TSOコマンドを使って操作を行い、データセットやJobのアウトプットを確認します。これらのモジュールを使えば、ほとんどの作業をAnsibleで自動化することができます。
IBM z/OS core collectionが提供するモジュール名と機能一覧
モジュール名
|
機能
|
zos_apf
|
APF(Authorized Program Facility)のライブラリの追加、削除
|
zos_backup_restore
|
データセットとボリュームのバックアップとリストア
|
zos_blockinfile
|
z/OS上のテキストデータの編集(複数行単位)
|
zos_copy
|
データをz/OSデータセットにコピー
|
zos_data_set
|
データセットの作成、削除、置換
|
zos_encode
|
エンコードの変更
|
zos_fetch
|
z/OSデータセットやUSSファイルの中身のダウンロード
|
zos_find
|
条件に一致するデータセットの検索
|
zos_job_output
|
Jobアウトプットの取得
|
zos_job_query
|
Jobステータスの照会
|
zos_job_submit
|
JCLのsubmit
|
zos_lineinfile
|
z/OS上のテキストデータの編集
|
zos_mvs_raw
|
z/OS上のプログラムの実行
|
zos_operator
|
MVSシステムコマンドの実行
|
zos_operator_action_query
|
WTORメッセージの取得
|
zos_ping
|
z/OSの依存性の確認
|
zos_tso_command
|
TSOコマンドの実行
|
これらを使ったサンプルをいくつか紹介します。いずれも直感的に理解できる文法で記述されていることがおわかりいただけるかと思います。もちろん、Ansibleで標準的に用意されている機能と組み合わせて使うことができます。たとえば、実行時にパラメータを渡して動作を変えたり、システムのステータスに応じて条件分岐をしたり、実行結果をログに記録したりするようなことが簡単にできるようになっています。
JCLを実行するサンプルPlaybook
- name: Submit the JCL
zos_job_submit:
src: TEST.UTILS(SAMPLE)
location: DATA_SET
wait: false
register: response
|
MVSシステムコマンドを実行するサンプルPlaybook
- name: Execute an operator command to show active jobs
zos_operator:
cmd: 'd u,all'
|
TSOコマンドを実行するサンプルPlaybook
- name: Execute TSO commands to allocate a new dataset
zos_tso_command:
commands:
- alloc da('TEST.HILL3.TEST') like('TEST.HILL3')
- delete 'TEST.HILL3.TEST'
|
他の自動化製品との比較
z/OSにはいくつか自動化の仕組みが用意されていますが、最もよく知られたものはNetViewではないでしょうか。
NetViewはメッセージ監視を行う監視ソフトウェアのひとつです。常駐プロセスがログを監視し、特定のメッセージが出てきたら、それに対応するアクションを起こす、といったことができます。Ansibleとの違いを以下の表にまとめてみました。適材適所で使い分けるといいでしょう。
Netviewとの違い
|
|
|
|
|
|
|
構成変更の要求があったタイミングで、構成変更を行うコードにパラメータを渡して実行する
|
常駐プロセスがメッセージ監視を行う。特定のメッセージをトリガーとしてアクションを起こす
|
|
|
|
試してみたいときは
IBM z/OS core collectionを利用したAnsibleの操作を無償で体験することができるサイトがあります。あらかじめMyIBMのサイトから、IBMアカウントを作成しておいてください。IBMアカウントは無償で作成することができます。
MyIBM
https://www.ibm.com/account/jp/ja/
2020年12月時点で、3つのシナリオが用意されています。
以下のサイトにアクセスすると、ブラウザ経由でAnsibleが動いているサーバーにログインすることができます。ここから、Ansibleによる自動化を体験することができます。
こちらはAnsibleが動いているサーバーにログインしたときの画面です。画面右で操作手順がガイドされています。
まとめ
z/OSの操作をAnsibleで自動化するコンテンツを紹介しました。今後、ミドルウェアの対応を含め、コンテンツが増えていく予定です。Ansibleを使ってz/OSの操作を自動化するお客様はどんどん増えてくるでしょう。ぜひ、z/OSにおけるAnsibleの利用を検討してみてはいかがでしょうか。
関連サイト