FJCT Tech blog

富士通クラウドテクノロジーズ公式エンジニアブログです

富士通クラウドテクノロジーズ

FJCT/Tech blog

re:Invent 2019 参加レポート

FJCT では、サービスの発展とエンジニアの成長を目的として、 定期的に海外のイベントへとエンジニアを派遣しています。 本記事では主に、イベント参加したエンジニアがそこで何を感じ取り、 今後の仕事にどのような形で活かそうとしているのか、生の声をご紹介します。

こんにちは。
ニフクラ コンピューティング開発チームの早田と商品企画チームの山本です。

エンジニア労働組合的な位置づけの組織である ETF の支援で
2019年の12月2日~6日にラスベガスで開催された「AWS re:Invent 2019」に
参加しました。

今回の記事では現地の様子や、参加した所感について共有をします。

re:Inventとは

今年で8回目となる、AWS最大のカンファレンスです。
今年は6つのホテルの会場を利用して開催され、通算65000人以上、
日本からだけでも1700人以上が参加をしました。

現地の様子

全体的にとにかくすごい熱量でした。

中でも圧巻だったのは、Andy Jassy による Keynote です。

Keynoteでは、Andy が次々と新しいサービスを発表していくのですが、
その度にオーディエンスの豊かで好意的な反応があり、
主催者と参加者が一体となりイベントを盛り上げている印象を強く受けました。

f:id:nifcloud-developers:20200207100509p:plain
Keynote会場の様子

所感

コンピューティング開発担当として (早田)

Keynoteの中で紹介されていた、ビジネスで利用されている環境の97%は
依然としてオンプレミスで稼働しているというデータが印象に残りました。

まだまだクラウド市場は発展の余地があることを再認識させられたためです。

発展途上な市場のサービス開発に自分の意見を反映できる立場というのは非常に恵まれた環境なんだなあと実感しました。

また、グローバルに仕事をする上で英語力の必要性を痛感しました。

カンファレンス内で、海外のエンジニア達と話す機会が何度もありましたが、
相手の言っていることを(なんとなく)理解することはできても、
そこから話を発展させるだけの英語力が自分に不足していると感じることが
何度もありました。

結果的に、英語の学習意欲がかなり高まったので、
自分の英語力がまだまだ不足しているということを身を以て体感できたことは、
カンファレンスに参加して得られた大きな成果でした。

商品企画担当として (山本)

アメリカではパリ協定に脱退したものの、Amazonは逆手にとって環境問題をビジネスチャンスと捉えているように見えました。 Amazonは積極的な投資を行っており、2030年までに年間炭素排出量の実質ゼロ化を実現を目標としています。 既に15の実用規模の再生可能エネルギーを供給するプロジェクトを立ち上げており、 データセンターなど、既存のサービスを起点として未来に向けたビジネスを着実に広げる姿勢が垣間見えました。

一人の商品企画担当者として Amazon のビジネス拡大の姿勢はとても参考になりました。 新規事業にタイミングや展開方法など考慮すべき要素は多く非常に複雑です。 FJCTとしても事業拡大を確実に成功させるため、これまで以上に新規事業の準備や対策は戦略的に進めていければと思います。

なお、富士通はCO2ゼロエミッションの達成と脱炭素社会の実現および気候変動への適応に貢献することを目標にした、中長期環境ビジョン「FUJITSU Climate and Energy Vision」を策定しています。

参考: 2050年に向けた中長期環境ビジョン「FUJITSU Climate and Energy Vision」を策定 : 富士通

最後に

1週間、業務として自分の興味がある世界にどっぷり浸かれるというのは非常にありがたい経験でした。

世界中のエンジニアと触れ合い会話をする中で、得た刺激やモチベーションの向上を感じ、 より一層、ユーザーの事業拡大に貢献できるようなクラウドサービスの開発に邁進したいと思います。

以上、簡単ではありますが re:Invent 2019 参加レポートをお届けしました。

あと、MIRAGEのご飯が無料なのにデザートまで揃っていて、すごいクオリティでした。 来年の re:Invent 2020に参加する方はぜひ行ってみてください。

f:id:nifcloud-developers:20200207101735p:plain
実際に提供されたビュッフェ

FJCT エンジニアタスクフォース 2019 レポート

f:id:tily:20191219162021p:plain

みなさんこんにちは! エンジニアタスクフォース (以下 ETF) 副委員長の竹内 (id:tily) です。 FJCT Advent Calendar 2019 最終日は、毎年恒例となった ETF の活動報告をお送りさせていただきます。

ETF とは?

ETF は弊社内で運営されているエンジニア労働組合的な位置づけの組織であり、エンジニアが抱える課題をエンジニアリングで解決すべく、各種の活動を行っています。 (現在メインメンバーは 10 名程度で、後述の各種活動については数 10 名単位で社内のエンジニアが支援してくれています。)

この記事を読むことで、2019 年に ETF が実施した具体的な活動内容を知り、ざっくりと弊社の自律的なエンジニア文化を感じることができると思います。

なお、これまでの経緯・活動詳細については、2017 年2018 年 の記事も合わせてご参照ください。

2019 年の活動一覧

細々とした改善活動は随時やっているのですが、今年実施した主な施策は下記になります。

以降のセクションで各施策の概要をご紹介したいと思います。

FJCT エンジニアビジョンの公開

昨年から検討中であったエンジニアビジョン について、今年に入ってからも継続して議論・検討を重ね、社長をはじめとしてさまざまな方のレビューを経たうえで、6 月に無事公開することができました。

下記がその内容になります。

FJCT Engineer VISION | 富士通クラウドテクノロジーズ株式会社 採用情報

  • 技術ビジョン
    • 世の中を一歩前へ
    • Move the world a step forward with tech.
  • 技術ミッション
    • 難しい技術を使いやすく
    • Make complex tech easier to use.
  • 行動哲学
    • TRY & SHARE
  • 行動指針
    • Fail Fast
      • 不確実性と向き合い、失敗しながら確実に前進しよう
    • Tech Power Up
      • 世の中に価値を提供できるイケてるエンジニアになろう
    • The Team
      • 一人ではできない大きなことを、このチームで成し遂げよう

ざっくりと弊社の技術的なビジョン・ミッションや、それに基づくエンジニアの行動方針が伝わるのではないでしょうか。

(サイトの記述が少しあっさりしているので、別途解説やビジョンに基づいた事例などの公開を検討しています。)

今年 6 月以降の ETF 活動は、上記のエンジニアビジョンを念頭に計画・実施されています。

新人技術研修

FJCT では、ETF 主導で社員の内製による新人技術研修を実施しています。

今年で 4 年目となる取り組みとなりますが、講義資料の作成~講義の実施までを、社内のエンジニアが分担して行っています。

今年のカリキュラムは下記のようになっていました。

  • 集中講義 (4/18~4/26)
    • 目的
      • 1 週間連続で集中的に講義することで職場体験前に最低限必要な知識を身につける
    • 内容
      • 第1回 ニフクラ接続方法、FJCTセキュリティ、Linux
      • 第2回 バージョン管理、git
      • 第3回 Python
      • 第4回 テスト
      • 第5回 開発フロー
  • 共通講義 (5 月中)
    • 目的
      • エンジニア志望ではない新人も含めて FJCT で働く上で必要な基礎知識を身につける
    • 内容
      • 第1回 データ活用
      • 第2回 ニフクラ実践入門①
      • 第3回 ニフクラ実践入門②
  • 連続講義 (5/31~8/2)
    • 目的
      • 毎週 1 回、1 のテーマに対する講義を行い、FJCT の専門的な知識を獲得する
    • 内容
      • 第1回 HTTP, WebAPI
      • 第2回 ネットワーク 1
      • 第3回 ネットワーク 2
      • 第4回 サーバーの問題調査と監視
      • 第5回 サーバーの構築方法, 構成管理, CI, CD
      • 第6回 Docker
      • 第7回 データベース
      • 第8回 ログ収集、可視化
      • 第9回 継続的ソフトウェア開発
      • 第10回 トラブルシューティング演習
  • 開発演習 (9/20~27)
    • 目的
      • ここまでに習得したスキル・知識を応用し、社内から募集した身近な技術的な課題を解決してみる
    • 内容
      • 部の備品管理システム
      • プロジェクトに対する所要時間の集計
      • NIFcLounge のワークフローを自動化を改善する
      • 社内への障害エスカレ自動化
      • 各システムに散らばる課題の収集・再表示
      • LT 大会の手動作業の自動化

特に今年は、弊社のシニアエンジニアであり MySQL 関連の OSS 活動で知られる、とみたまさひろ (id:tmtms) がデータベースの講義を受け持つ等、非常に充実した内容となっていました。
また毎年最後に行われる開発演習では、社内の身近な課題を新人さんたちがフレッシュな視点で解決してくれるので非常に助かっています。

年を重ねるごとに内容が充実してきているので、そろそろ講義資料を GitHub で公開するような取り組みなんかもやってみたいと、担当者内では話しています。

DevOps / ChatOps ツール運用

実際にニフクラサービス開発の現場で DevOps を行っているエンジニアが、情シス部門をサポートする形で Slack / OneLogin / GitLab / Redmine の管理・運用を行っています。

これにより、Slack 上のチャットボットを中心的なインタフェースとして、各システム (GitLab / Redmine / Jenkins / Zabbix 等) が連携しあう ChatOps の世界が実現されています。

f:id:tily:20191224202745p:plain

(FJCT における ChatOps の詳細については モダンな開発・運用環境を導入するために奮闘した(している)話 2018 - FJCT Tech blog をご参照ください。)

特に社内 GitLab については、隔月のペースでメンテナンス作業を行い、パッチ適用やバージョンアップによりアプリを最新化することができています。また、OneLogin - GitLab 間でユーザー情報を同期するバッチを開発するなど、情シス部門だけでは行えないようなタスクを現場のエンジニアがサポートにより実現しています。

一方で、社内 Redmine については GitLab ほど活発にメンテは行われていませんが、かなり歴史が古いものとなっており、現在では 25 万を超えるチケットがこのシステムで管理されています。

ちなみに、社内 GitLab も社内 Redmine も、もちろんニフクラ上のサーバーで動いています!

社内外イベント開催

f:id:tily:20191224204726p:plain

ETF では社内・社外ともに技術系イベントの開催を推進を行っています。

社内に関しては、主に LT 大会の推進を行っています。大会には毎回興味深いテーマが設定されており、2019 年には計 6 回の LT 大会が実施されました。今年からは、人事部門と連携して飲み物やピザの軽食が提供されたり、LT 大会で発表してくれた人に参加賞が配布されたりと、よりいい感じに運営が回るようになってきています。

  • 4 月: 嘘つき大会
  • 5 月: 某障害の振り返り
  • 6 月: ドキュメント
  • 7 月: 私の失敗
  • 9 月: ツール・サービス
  • 11 月: 業務ハック

また社外勉強会に関しても、ニフクラウンジで積極的な勉強会のサポートを行っています。2019 年だけで 19 件の勉強会がニフクラウンジを利用して開催されました。なお、今年のニフクラウンジ活動に関しては、FJCT アドベントカレンダー 19 日目の下記記事もあわせてご参照ください。

社員の海外カンファレンス派遣

f:id:tily:20191224212713j:plain:w300

こちらも毎年実施している取組みですが、今年は 3 つの海外技術イベントに計 7 名の社員を派遣しました。

参加者に期待されているのは主に、イベントで最新の動向や現場の熱量をキャッチし、その内容を社内に共有してもらう役割です。

が、今年は、イベントでの他社ビジョンの見せ方に影響を受けて、自社のビジョンの見せ方を改善する活動がはじまったりセキュリティ系のイベントで得た知識をもとに自社製品を攻撃した結果、比較的影響の大きい脆弱性を見つけたり (もちろん修正済)、というように、本来の目的にプラスする形で、得られた知見を実際の業務に反映するような動きもいくつか見られ、非常に実りの大きいものになったと思います。

まとめ

以上、少し分量が多めになってしまいましたが、2019 年の FJCT エンジニアタスクフォース活動についてご紹介しました。

富士通クラウドテクノロジーズは、エンジニアが主体的に動いて改善を推進していける、ベンチャー的な風土を持った会社であることを、少しでもお伝えすることができたでしょうか。

ご興味を持たれたエンジニア各位におかれましては、ぜひ採用情報のページもご参照ください。

それではみなさん、よいお年を~。

10分で出来る!ニフクラ上でニフクラ操作を簡単に自動化してみる (dockerによるニフクラCLI実行環境とサンプルコード)

この記事は 富士通クラウドテクノロジーズ Advent Calendar 2019 の8日目の記事です。

昨日は @tunakyonn さんの 「M3DBの知見をまとめてみた」 でした。
なぜM3DB?と思ったのですが、prometheusの監視データ保存先として考えているんですね。
自分も、若くて勢いのあるプロダクトをサービスへ取り入れる際は、改変頻度やクオリティに苦労しながらも、ワクワクしながら取り組んでいます。
是非上手くいって欲しいです。

はじめに

仕事では、ITインフラストラクチャサービスの企画・設計・開発・運用を担当している @ysaotome です。

最近、サービス利用者より「 ニフクラCLI の使い方を説明して欲しい」とご相談頂く事が何度かありましたので、改めてPhotonやdockerを使った簡単な使い方を纏められればと思います。

f:id:ysaotome:20191208003808p:plain

「自動化」という言葉が叫ばれて久しいですが、国内の実態として、様々な理由により中々進んでない様に感じています。要因の一つとして、いきなり高度な自動化にチャレンジして挫折してしまう。といった事が挙げられると思います。そんな要因の対策として、先ずはCLIを用いたコマンドベースで手軽に手作業の簡略化から体感してみるのは如何でしょうか。

今回は「ニフクラ上でニフクラCLI実行環境を作る」方法と「ニフクラCLIを使った自動化サンプル」をステップ・バイ・ステップで紹介出来ればと思います。
特に躓かなければ10分程度でニフクラCLIが実行出来る様になります。

  • 本記事は 2019/12/07記載時点の情報です。

構築環境

実行環境としてdockerホストとdockerイメージを利用します。
※環境構築してCLI実行するだけならば、特にdocker自体の知識は不要です。

ニフクラ上でニフクラCLI実行環境を作る

ニフクラコントロールパネルへログイン

VMware Photon 3.0イメージでサーバーを作成

  • 「コンピューティング」の左メニューから「サーバー」を選択し「サーバー作成」ボタンを押下

    f:id:ysaotome:20191208004611p:plain
    「サーバー作成」を押下

  • 「サーバー作成」ウィザードの「01 イメージ選択」にて、検索ボックスに photon os 3.0 と入力して表示される「VMware Photon OS 3.0」を選択

    f:id:ysaotome:20191207212355p:plain
    VMware Photon OS 3.0イメージを選択

  • 「サーバー作成」ウィザードの「02 サーバータイプ選択」にて、配備する「ゾーン」を選択、タイプは「c-small」を選択

    • ゾーンは特に拘り等無ければ、現在は east-11 か east-12 へ作成すると良い。
    • e-miniでも良いが、c-smallの方がストレス無く実行出来ます。
      f:id:ysaotome:20191207220134p:plain
      配備するゾーンとタイプを選択
  • 「サーバー作成」ウィザードの「03 サーバー設定」にて、「サーバー名」に clitest 、「メモ」に NIFCLOUD CLI TEST を入力、「料金プラン」は 従量 を選択、「SSHキー」と「ファイアウォール」は必要に応じて新規作成(作成時はそれぞれウィザード画面内で「SSHキー作成」「ファイアウォールルール作成」を忘れずに押下する事)、「ネットワーク」は特似変更せず、「確認」ボタンを押下

    • ファイアウォールは「INルール」で SSH (22/TCP)が開いていれば必要十分
    • ここで作成してダウンロードされる [SSHキー名]_private.pem というキーファイルと、設定した パスフレーズ は接続時に利用するので記憶しておきます

f:id:ysaotome:20191207221819p:plain
SSHキーとファイアウォールも必要に応じて作成

  • 「サーバー作成」ウィザードの「04 確認」にて、内容に問題無い事を確認したら、「作成する」ボタンを押下

    f:id:ysaotome:20191207222538p:plain
    作成するサーバーの最終確認

  • サーバー作成が開始されます。

    • 作成するゾーンによりますが、2~3分程度で作成されます。
      f:id:ysaotome:20191207222936p:plain
      VMware Photon 3.0がセットアップされたサーバーを作成中
  • サーバー作成後の情報を確認

    • サーバーに割り当てられたグローバルIPアドレスを確認(キャプチャ上マスクしていますが、 27.133.xxx.xxx となっている所です)
      f:id:ysaotome:20191207223640p:plain
      サーバー作成後の画面

SSHクライアント(RLogin)で作成したサーバーへ接続

  • SSHクライアント(RLogin)を起動
    • 「ファイル」メニューの「サーバーに接続」から「新規」を選択
    • 接続設定画面を次の通り設定
      • 「エントリー」に設定名として clitest 、「ホスト名(サーバーIPアドレス)」に先ほど確認した サーバーに割り当てられたグローバルIPアドレス(27.133.xxx.xxx) 、「ログインユーザー名」に root 、 「ユーザー認証の方式によりパスワード or パスフレーズ」に SSHキー作成時の パスフレーズ を入力
      • SSH認証鍵」ボタンを押下して、SSHキー作成時にダウンロードされた [SSHキー名]_private.pem ファイルを選択
      • 全て選択したら「OK」を押下して保存
        f:id:ysaotome:20191207224300p:plain
        VMware Photon 3.0へ接続する設定を入力
    • 「Server Select」画面で「clitest」を選択して「OK」を押下
    • 最初の接続時のみ「公開鍵の確認」画面が表示されるので、内容に問題なければ「接続する」を押下
      • 内容の確認方法は気になる人は別途調べると良いです
        f:id:ysaotome:20191207225528p:plain
        公開鍵の確認
  • 設定に問題無ければログインしてコマンドプロンプトが表示されます。
    f:id:ysaotome:20191207225813p:plain
    ログイン後のコマンドプロンプト

ニフクラCLI環境構築済dockerイメージを利用可能にする

  • dockerホストを利用出来る様に設定する
    • systemctl enable dockersystemctl start docker を実行してdockerを利用出来る様にします
root@photon-machine [ ~ ]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
root@photon-machine [ ~ ]# systemctl start docker
  • 実行確認の docker version コマンドでdockerのバージョン確認。下記の様に表示されれば問題なし。
root@photon-machine [ ~ ]# docker version
Client:
 Version:           18.06.1
 API version:       1.38
 Go version:        go1.10.7
 Git commit:        e68fc7a
 Built:             Mon Feb  4 16:35:01 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.7
  Git commit:       e68fc7a
  Built:            Mon Feb  4 16:36:56 2019
  OS/Arch:          linux/amd64
  Experimental:     false
  • ニフクラコントロールパネルへ戻り、API実行に必要な「アクセスキー」と「シークレットキー」を入手する

    • ニフクラコントロールパネル上部メニューの自分のIDを押下し、メニューから「アカウント管理」を押下
      f:id:ysaotome:20191207230537p:plain
      アカウント管理を表示する
    • 自分のアカウントを押下して「アクセスキー」を表示してメモ
      f:id:ysaotome:20191207230749p:plain
      アクセスキー表示
    • さらに自分のアカウント枠内の「表示」ボタンを押下して「シークレットアクセスキー」を表示してメモ
      f:id:ysaotome:20191207231128p:plain
      シークレットアクセスキー表示
  • SSHクライアント(RLogin)へ戻りメモした「アクセスキー」と「シークレットアクセスキー」を入れた設定ファイルを作成する

  • cat コマンドにてファイル名 nifcloud-cli.env で下記内容のファイルを作成する
NIFTY_CLOUD_URL=https://jp-east-1.computing.api.nifcloud.com/api/
NIFTY_ACCESS_KEY_ID=メモした「アクセスキー」
NIFTY_SECRET_KEY=メモした「シークレットアクセスキー」
  • 実行例
root@photon-machine [ ~ ]# cat <<ENV > nifcloud-cli.env
> NIFTY_CLOUD_URL=https://jp-east-1.computing.api.nifcloud.com/api/
> NIFTY_ACCESS_KEY_ID=XXXXXXXXXXXX
> NIFTY_SECRET_KEY=XXXXXXXXXXXXXXXXXXX
> ENV
  • NIFCLOUD CLIをテストで実行してみる
    • nifty-describe-regions で利用可能なリージョン一覧を取得してみる
    • 最初の実行時のみ、dockerイメージの取得後に実行される
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions 
Unable to find image 'tily/niftycloud-computing-cli:latest' locally
latest: Pulling from tily/niftycloud-computing-cli
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
5b816da257b4: Pull complete 
c19b88db8f77: Pull complete 
040817bae98e: Pull complete 
a30bb200c4e6: Pull complete 
Digest: sha256:1740dd1d9519f2e2a04dbccb3d20c249fefcfe65a365ccc59b0c27809636e88c
Status: Downloaded newer image for tily/niftycloud-computing-cli:latest
REGION  east-1     jp-east-1.computing.api.nifcloud.com    true 
REGION  east-2     jp-east-2.computing.api.nifcloud.com    false
REGION  east-3     jp-east-3.computing.api.nifcloud.com    false
REGION  jp-east-4  jp-east-4.computing.api.nifcloud.com    false
REGION  west-1     jp-west-1.computing.api.nifcloud.com    false
  • 2回目の実行はdockerイメージの取得処理が無いのでシンプル
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions 
REGION  east-1     jp-east-1.computing.api.nifcloud.com    true
REGION  east-2     jp-east-2.computing.api.nifcloud.com    false
REGION  east-3     jp-east-3.computing.api.nifcloud.com    false
REGION  jp-east-4  jp-east-4.computing.api.nifcloud.com    false
REGION  west-1     jp-west-1.computing.api.nifcloud.com    false
  • 以上でニフクラCLIが利用可能になりました

ニフクラCLIを使った簡単なサンプル

  • 利用可能なCLI API一覧
  • オススメ引数
    • --headers 出力形式が表形式または区切り文字による区切り形式の場合、カラムヘッダーを出力します。

リージョン一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions --headers
IdType  Name       Endpoint                              Messages  Default
REGION  east-1     jp-east-1.computing.api.nifcloud.com            false  
REGION  east-2     jp-east-2.computing.api.nifcloud.com            true   
REGION  east-3     jp-east-3.computing.api.nifcloud.com            false  
REGION  jp-east-4  jp-east-4.computing.api.nifcloud.com            false  
REGION  west-1     jp-west-1.computing.api.nifcloud.com            false 

ゾーン一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-availability-zones --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-availability-zones --headers
IdType            Name     State      Region  Messages  SecurityGroupSupported  Default
AVAILABILITYZONE  east-11  available  east-1            true                    false  
AVAILABILITYZONE  east-12  available  east-1            true                    true   
AVAILABILITYZONE  east-13  available  east-1            true                    false  
AVAILABILITYZONE  east-14  available  east-1            true                    false 

ファイアウォールグループの設定情報を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --headers
IdType  GroupName  GroupStatus  GroupDescription  GroupRuleLimitUpdate  GroupLogLimitUpdate  GroupLogFilterNetBios  AvailabilityZone
GROUP   SSHxDB     applied      メモ         100                   1000                 false                  east-13         
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxDB     TCP         22        22      IN     CIDR        0.0.0.0/0
IdType  GroupName  GroupStatus  GroupDescription  GroupRuleLimitUpdate  GroupLogLimitUpdate  GroupLogFilterNetBios  AvailabilityZone
GROUP   SSHxWEB    applied                        100                   1000                 false                  east-13         
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         22        22      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         80        80      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         443       443     IN     CIDR        0.0.0.0/0

ファイアウォールグループ名「SSHxWEB」配下のルールを取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --filter "group-name=SSHxWEB" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --filter "group-name=SSHxWEB" --headers
IdType  GroupName  GroupStatus  GroupDescription  GroupRuleLimitUpdate  GroupLogLimitUpdate  GroupLogFilterNetBios  AvailabilityZone
GROUP   SSHxWEB    applied                        100                   1000                 false                  east-13         
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         22        22      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         80        80      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         443       443     IN     CIDR        0.0.0.0/0

ファイアウォールグループを新規作成する

  • ゾーン「east-13」配下に、ファイアウォールグループ名「SSHxWEB」で新規作成する
  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-create-security-group "SSHxWEB" --availability-zone "east-13"
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-create-security-group "SSHxWEB" --availability-zone "east-13"
GROUP SSHxWEB east-13

ファイアウォールグループへルールを追加する

  • ルール追加前にファイアゥオールグループを作成しておく必要があります
  • ファイアウォールグループ名「SSHxWEB」へ以下のルールを追加する
インターネット(0.0.0.0/0)からの「80/TCP(http)」「443/TCP(https)」「22/TCP(ssh)」通信許可
ファイアウォールグループ「SSHxDMZ」からの全て(ANY)の通信許可
  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 80 --in-out IN --source-subnet "0.0.0.0/0"

docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 443 --in-out IN --source-subnet "0.0.0.0/0"

docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 22 --in-out IN --source-subnet "0.0.0.0/0"

docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol ANY --in-out IN --source-group "SSHxDMZ"
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 80 --in-out IN --source-subnet "0.0.0.0/0"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  TCP  80  80  IN  CIDR  0.0.0.0/0

root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 443 --in-out IN --source-subnet "0.0.0.0/0"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  TCP  443  443  IN  CIDR  0.0.0.0/0

root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 22 --in-out IN --source-subnet "0.0.0.0/0"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  TCP  22  22  IN  CIDR  0.0.0.0/0

root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol ANY --in-out IN --source-group "SSHxDMZ"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  ANY      IN  GRPNAME  SSHxDMZ

OSイメージ一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "all" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "all" --headers

IdType  ImageID  Name                     Owner       OwnerAlias                          State      Accessibility  ProductCodes  Architecture  ImageType  KernelId  RamdiskId  Platform  RootDeviceType  Description  Redistributable  AvailabilityZone
IMAGE   89       Ubuntu Server 16.04 LTS  niftycloud  FUJITSU CLOUD TECHNOLOGIES LIMITED  available  public                       x86_64        machine                         ubuntu    disk                         true                             
DetailDescription
                 
IdType  ImageID  Name                     Owner       OwnerAlias                          State      Accessibility  ProductCodes  Architecture  ImageType  KernelId  RamdiskId  Platform  RootDeviceType  Description  Redistributable  AvailabilityZone
IMAGE   157      Windows Server 2016 Std  niftycloud  FUJITSU CLOUD TECHNOLOGIES LIMITED  available  public                       x86_64        machine                         windows   disk                         true                             
DetailDescription
・
・
・
・

自分が作成したOSイメージ一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers
IMAGE   12350    CentOS5LVM  self   ニフティクラウドユーザーブログライター  available  private                      x86_64        machine                         linux     disk                         true             east-1.east-12  
IMAGE   16378    Ubuntu1310x8664  self   ニフティクラウドユーザーブログライター  available  private                      x86_64        machine                         ubuntu    disk                         true             east-1.east-13  
・
・
・
・

OSイメージを指定してサーバーを作成する

  • OSイメージを指定するため、事前に対象OSイメージの「ImageID」を取得しておく必要があります
  • SSHキーを指定するため、事前に設定するSSHキー名を取得しておく必要があります
  • プライベートなOSイメージ「Ubuntu1310x8664」からサーバーを作成する(コピーする)
    • 「Ubuntu1310x8664」の 「ImageID」を取得
    • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers  | grep Ubuntu1310x8664
  • 実行結果例
    • 以下の実行結果からイメージ「Ubuntu1310x8664」の「ImageID」は 16378 である事が判る
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers  | grep Ubuntu1310x8664
IMAGE   16378    Ubuntu1310x8664  self   ニフティクラウドユーザーブログライター  available  private                      x86_64        machine                         ubuntu    disk                         true             east-1.east-13  
  • SSHキーの一覧を取得する
    • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-keypairs --headers
  • 実行結果例
    • 以下の実行結果からSSHキー名が niftycloudTest である事が判る
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-keypairs --headers
IdType   KeyPair         Fingerprint                                                
KEYPAIR  niftycloudTest  88:7b:e4:19:94:6b:a7:89:91:52:6f:95:c2:00:09:6b:f0:ab:4c:57
  • 「ImageID」が 16378 のOSイメージ名 「Ubuntu1310x8664」からサーバーを作成する
    • 引数の意味
      • --instance-id 作成するサーバー名
      • --group 所属するファイアウォールグループ
      • --key 設定するSSHキー名
      • --instance-type 作成するサーバタイプ
      • --accounting-type 課金タイプ 1 (月額課金) | 2 (従量課金)
      • --availability-zone 作成するゾーン名
      • --disable-api-termination APIからのサーバー削除の可否 true (削除不可) | false (削除可)
  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-run-instances "16378" --instance-id "UbuntuTest" --group "SSHxWEB" --key "niftycloudTest" --instance-type "double-large32" --accounting-type "2" --availability-zone "east-13"  --disable-api-termination "true" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-run-instances "16378" --instance-id "UbuntuTest" --group "SSHxWEB" --key "niftycloudTest" --instance-type "double-large32" --accounting-type "2" --availability-zone "east-13"  --disable-api-termination "true" --headers

IdType  GroupId
GROUP   SSHxWEB
IdType    InstanceId   ImageId          DnsName  PrivateDnsName  State    KeyName  LaunchIndex  ProductCodes  InstanceType  LaunchTime                 AvailabilityZone  KernelId  RamdiskId  MonitoringState      IpAddress  PrivateIpAddress  IpAddressV6  PrivateIpAddressV6  SubnetId  VpcId  RootDeviceType  Admin  AccountingType  IpType  PrivateIpType  Architecture  Platform
INSTANCE  UbuntuTest  Ubuntu1310x8664                           pending                                      double-large32          2014-09-12T19:34:30+09:00  east-13                                monitoring-disabled                                                                                 disk                   2               static  static         x86_64        ubuntu 

まとめ

改めて「ニフクラ上でニフクラCLI実行環境を作る」方法と「ニフクラCLIを使った自動化サンプル」をステップ・バイ・ステップで紹介させて頂きました。
最初のステップとしてコマンドラインで手作業を自動化してみるのは如何でしょうか。

また、 GitHubのニフクラプロジェクト では、より複雑な処理を自動化するためのツールを多数公開しています。 例えば nifcloud-sdk-python を利用する事で、よりプログラミングに近い形で実装する事が可能です。

スキルや実現したい事に合わせて選択為ていただければと思います。

参考資料

ニフクラウンジの紹介

2020年2月17日 追記
現在、新型コロナウイルス感染症の流行に伴い NIFcLounge ご利用の新規受付を停止しております。


f:id:yaaamaaaguuu:20190517162548p:plain
nifclounge logo

ニフクラ を提供する 富士通クラウドテクノロジーズ は、ニフクラウンジという取り組みを実施しており、この記事ではニフクラウンジの紹介と、利用フォームへの案内などをいたします。

ニフクラウンジとは

ニフクラウンジとは、ITエンジニアやクリエイターが技術力向上などを目的として開催する勉強会を対象に、当社のセミナールームを無償で貸し出す取り組みです。

ご利用していただく際は、こちらのフォームより申し込みをお願いいたします。

会場と設備について

ニフクラウンジの会場は最小1部屋30人程度から、最大4部屋をつなげることにより最大200人を収容することが可能です。 以下の写真は4部屋をつなげた状態となります。

f:id:yaaamaaaguuu:20190621131455p:plain
ニフクラウンジ 会場

会場受付では、イベントの案内を掲示する事が可能なので、ご利用の際には、勉強会を案内する印刷物を用意してください。

各部屋にはワイヤレスのマイクと、スライドを投影するプロジェクタがあります。プロジェクタはHDMIでのみ利用可能ですが、HDMIを変換するアダプタを持ち込んでいただくことで他の端子も利用することが可能です。

また勉強会をオンラインで配信するための機材はございません。オンライン配信を行いたい場合は機材を持ち込んでいただく必要があります。

会場では飲食などが可能なので、ビアバッシュ形式の勉強会や、懇親会を開催していただくことが可能となります。 ケータリングなどの主催者とは別の方が飲食物を搬入する方式も受付可能なので、利用の申込み後にご相談ください。

最寄り駅からニフクラウンジまでのまとめ

最寄り駅から弊社までの各ルートは以下のブログに記載されています。

勉強会を開催する際の注意点

ビルの都合上、正面エントランスは19:30に閉まります。それ以降の時間の入退室は通用口からとなりますのでご注意ください。

詳細について

こちらに本ブログの内容を含め詳細を記載しておりますので、ご確認ください。

www.slideshare.net

最後に

ニフクラウンジは富士通クラウドテクノロジーズが提供する、技術力向上などを目的として開催する勉強会を応援するための取り組みです。 ご利用の際は こちらのフォーム より申し込みをお願いいたします。

Engineer Task Force 2018 レポート

富士通クラウドテクノロジーズ AdventCalendar 2018 25日目です。

qiita.com

皆さまこんにちは!Merry Christmas!25日間お疲れさまでした。

最終日は、Engineer Task Force 委員長の織田がお送りします。

とみたさんの後にお送りするのはプレッシャーが半端ないです。

Engineer Task Force については、昨年の Advent Calendar の記事をご覧ください。

tech.fjct.fujitsu.com

 

この記事では、 Engineer Task Force が取り組んだ施策の中から、いくつかご紹介差し上げる形で締めくくりたいと思います。

 

エンジニアのビジョン形成に向けて

FJCT はクラウドサービスデータ・AIソリューションサービスといったサービスを内製によって提供している事業会社になります。
自らサービスを構築し世の中にバリューを提供する上で、我々は何をビジョンとし、どのようなスタンスで、何を重要視しながら働いていくのか、これを明確にする必要性があります。

まずはエンジニアのロールモデルとスキルマップでベースを構築

そのために、まずエンジニアスペシャリストのキャリアを確実なものにするため、

  • エンジニアスペシャリストの定義付け
  • クラウドエンジニア、データサイエンティストのスキルマップの定義付け
  • スペシャリスト幹部社員に求められる要件の定義

など "How" の部分を進めていきました。

12月現在でもまだ微調整を行っており、人事制度への足掛かりや調整の段階ではありますが、

  • FJCT がカバーする技術領域
  • 評価の対象となる技術
  • 評価軸や要求されるスキルの見直し体制
  • 一般クラスから幹部クラスまでに必要となるスキルとカバー範囲の定義
  • 定量化するべき評価軸と定性を維持する評価軸の議論

などが、毎週議論され、経営・幹部・人事などを中心に制度化に向けて進んでいます。

FJCT のエンジニアが実現するビジョンをエンジニアたちが掲げる

そして、最も重要な "What" の部分である、FJCT の技術ビジョン、行動哲学、行動規範を築いているのが今現在となります。

これらをどのように進めているのかは以下の通りです。

  • Engineer Task Force x 人事のワーキンググループで骨子と大方針を策定
  • 社長との会議において、提言と承認
  • 技術系幹部との事前相談での調整
  • ワーキンググループでたたき台を作成( gitlab の issue )

今後の予定として、

  • Slack でエンジニア全員が参加するチャンネルに issue を共有して叩きあげる
  • ワーキンググループで完成形を作成して経営に報告

を控えています。

これにより、我々は何を目指し、どのように振る舞い、実現に向けて何を用いて、それがどのようなプロセスで評価され、そのためにどんな課題を解決するのかが明文化される計画です。

 

続きを読む

モダンな開発・運用環境を導入するために奮闘した(している)話 2018

この記事は 富士通クラウドテクノロジーズ Advent Calendar 2018 の23日目の記事です。 体調を崩してしまって記事の仕上げが大幅に遅れてしまいました。申し訳ありません。

22日目は @heriet さんの「 KnativeのコンポーネントとCRD 」という記事でした。 2019年に向けて抑えておきたい技術Knativeの概要を抑えた記事でしたね。

はじめに

仕事では、 ニフクラ における企画・設計・開発・運営を担当している @ysaotome です。 富士通クラウドテクノロジーズ Advent Calendar 2018に参加するにあたり、一昨年から継続している「モダンな開発・運用環境を導入するために奮闘した(している)話 2nd」がその後どうなったのか?という事、で、2018年現在の状況を書きたいとおもいます。

f:id:ysaotome:20190103214951p:plain

※昨年投稿した「モダンな開発・運用環境を導入するために奮闘した(している)話 2nd」を読まれてない方は、昨年記事もご参照ください。

続きを読む

KnativeのコンポーネントとCRD

この記事は富士通クラウドテクノロジーズ Advent Calendar 2018の22日目です。 昨日は @ntoofu さんの「続・IaaS基盤をテストする環境を作る話」でした。私の場合はいい感じに使いやすいクラウド上で自動テストする環境を作るケースが多く、クラウドの機能等を使って楽ができるのですが、そのクラウド基盤向けの自動テストとなると独自にいろいろ作りこんだり、試行錯誤する場面がより多そうですね…!

はじめに

ニフクラのエンジニアリングパーツの開発・運用を担当している id:heriet です。 この記事では、Knativeを構成するコンポーネント群と、それらを構成するCRDについて紹介したいと思います。

ニフクラではエンジニアリングパーツという形でニフクラ上のシステムに組み込みやすいパーツを提供しています。たとえば、ニフクラ RDBはマネージドなDBサービスで、 ニフクラ スクリプト はサーバーレスを実現するサービスです。エンジニアリングパーツのようなサービスを実現するためには数多くの技術を取り入れる必要があるのですが、Knativeはその中で注目している技術のうちの一つです。

続きを読む