AnsibleでCisco Nexusのコンフィグバックアップを取得する。

事前準備

以下の機器やAnsibleがインストールされているサーバを用意する。

  • Ansibleホストサーバの立ち上げ(CentOS7)
  • Nexus機の用意
  • Ansibleのインストール
AnsibleホストサーバのOS情報
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
Nexus機の情報
Software
  BIOS: version 07.65
 NXOS: version 9.2(3)
  BIOS compile time:  09/04/2018
  NXOS image file is: bootflash:///nxos.9.2.3.bin
  NXOS compile time:  2/17/2019 5:00:00 [02/18/2019 00:07:27]
Ansibleバージョン
# ansible --version
ansible 2.4.2.0

作業ディレクトリ構造

etc/
 ┗ansible/
   ┃ 
   ┠hosts
   ┃ 
   ┠backups
   ┃
   ┗show_run_cisco.yaml

hosts/show_run_cisco.yamlの内容

  • hosts
[cisco]
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
- hosts: cisco
  gather_facts: no
  connection: local

  tasks:
   - name: show run
     ios_command:
       commands:
         - show run
       host: "{{ inventory_hostname }}"
       username: admin
       password: admin
     register: config

   - name: save output to /etc/ansible/backups
     copy:
       content: "{{ config.stdout[0] }}"
       dest: "/etc/ansible/backups/show_run_{{ inventory_hostname }}.txt"

実行結果

# ansible-playbook show_run_cisco.yaml

PLAY [cisco] **********************************************************************************************

TASK [show run] *******************************************************************************************
 [WARNING]: argument username has been deprecated and will be removed in a future version

 [WARNING]: argument host has been deprecated and will be removed in a future version

 [WARNING]: argument password has been deprecated and will be removed in a future version

ok: [192.168.1.1]
ok: [192.168.1.2]
ok: [192.168.1.3]
ok: [192.168.1.4]
ok: [192.168.1.5]
ok: [192.168.1.6]

TASK [save output to /etc/ansible/backups] ****************************************************************
changed: [192.168.1.1]
changed: [192.168.1.2]
changed: [192.168.1.3]
changed: [192.168.1.4]
changed: [192.168.1.5]
changed: [192.168.1.6]

PLAY RECAP ************************************************************************************************
192.168.1.1               : ok=2    changed=1    unreachable=0    failed=0
192.168.1.2               : ok=2    changed=1    unreachable=0    failed=0
192.168.1.3               : ok=2    changed=1    unreachable=0    failed=0
192.168.1.4               : ok=2    changed=1    unreachable=0    failed=0
192.168.1.5               : ok=2    changed=1    unreachable=0    failed=0
192.168.1.6               : ok=2    changed=1    unreachable=0    failed=0
#

バックアップコンフィグも保存されている

# ls /etc/ansible/backups/ | grep show_run_1
show_run_192.168.2.47.txt
show_run_192.168.2.56.txt
show_run_192.168.2.57.txt
show_run_192.168.2.58.txt
show_run_192.168.2.59.txt
show_run_192.168.2.60.txt
#

実行時にWariningが出ていますが、動作に影響がないので今は無視します。
エラー内容としては今後username , host , password が使えなくなるよと言っていますね。

Ruby 〜True,Falseオブジェクト覚書〜

True,Falseオブジェクトについて

RubyではTrue、Falseのことをブール値とも呼び、オブジェクト扱いである。
このオブジェクトの使い道としては、主に条件分岐で使用される。
True=実行する、False=実行しない

[16] pry(main)> true.class
=> TrueClass
[17] pry(main)> false.class
=> FalseClass
[18] pry(main)> 
True Falseを使った判定

比較演算子を使ってTrueFalse判定
==で同値かどうか判定する。同値であればTrueを同値で無ければFalseを返す。

[18] pry(main)> 1 == 1
=> true
[19] pry(main)> 1 == 2
=> false
[20] pry(main)> 

逆に同値でない時にTrueを返す方法として!=を使用する。

[20] pry(main)> 1 != 1
=> false
[21] pry(main)> 1 != 2
=> true
[22] pry(main)> 

Ruby 〜Time,Dateオブジェクト覚書〜

Time,Dateオブジェクトについて

Rubyにおいて日付や時間を扱うにはTime、Dateオブジェクトで表現できる。

Timeメソッドについて

Timeメソッドで時間を扱う

次のコマンドで時間とタイムゾーンを表示できる。

[1] pry(main)> Time.now
=> 2019-06-02 13:01:17 +0900
[2] pry(main)> Time.now.zone
=> "JST"
[3] pry(main)> 
任意のタイムオブジェクトを作成可能
[3] pry(main)> datetime = Time.new(2018,2,1,12,30)
=> 2018-02-01 12:30:00 +0900
[4] pry(main)>

好きな日付フォーマットでも作成することも可能

[6] pry(main)> datetime.strftime('%Y年 %m月 %d日 %H時%M分')
=> "2018年 02月 01日 12時30分"
[7] pry(main)> 

Dateメソッドについて

RubyではいきなりDateメソッドが使えない。

[7] pry(main)> Date
NameError: uninitialized constant Date
Did you mean?  Data
from (pry):7:in `__pry__'
[8] pry(main)> 

なのでrequire Dateでライブラリを読み込むことでDateオブジェクトが使用できるようになる。
また、todayメソッドで現在の時刻を表示できる。

[8] pry(main)> require "date"
=> true
[9] pry(main)> Date
=> Date
[10] pry(main)> 
[11] pry(main)> Date.today
=> #<Date: 2019-06-02 ((2458637j,0s,0n),+0s,2299161j)>
[12] pry(main)> 
Dateオベジェクトでも任意の日付フォーマットで表示可能
[12] pry(main)> Date.new(2019,6,2)
=> #<Date: 2019-06-02 ((2458637j,0s,0n),+0s,2299161j)>
[13] pry(main)> Date.new(2019,6,2).strftime('%Y年 %m月 %d日 %H時%M分')
=> "2019年 06月 02日 00時00分"
[14] pry(main)> 

AWS 認定ソリューションアーキテクト – アソシエイトに一発合格する勉強方法

今回はAWSソリューションアーキテクトアソシエイトを受験して、なんとか合格したのでその勉強方法について書きたいと思います。
これからAWSを勉強してSAAを取得したいと思っている方に少しでも役に立てれば幸いです。

スコアレポート

f:id:kyamisama:20190601101030p:plain
AWS SSA
前回のAWSクラウドラクティショナー を取得して1ヶ月ちょっとでAWSソリューションアーキテクトアソシエイトに合格しました。
勉強期間としては少し長めでした。
しかも受験直前まで受かるなんて微塵も思ってなくて、記念受験のつもりで望んだのですが結果受かりました。

私のスペック

まず私のスペックからお話ししますと、IT業界歴で言えば5年目に突入しております。
その5年のうち2年半サーバエンジニアとしての経験をし、もう半分はネットワークエンジニアをしていました。
なのでサーバの知識もネットワークの知識も広く浅く持っている人間だと思ってください。
そんな人間が実践した勉強方法を次からご紹介します。

試験内容の確認

一番最初にやったことは試験内容の確認ですね。
これはクラウドラクティショナー の時もやりました。

受験者概要の確認

この試験の受験対象者には以下が求められますって書いていますけど、私には半分以上当てはまらないですね・・・

  • AWS 上で可用性、優れたコスト効率、耐障害性を備え、スケーラブルな分散システムを設計した 1 年間の実務経験
  • AWS のコンピューティング、ネットワーキング、ストレージ、データベースサービスの実践的な使用経験
  • AWS のデプロイおよび管理サービスに関する実践経験
  • AWS ベースのアプリケーションに関する技術的要件を特定、定義する能力
  • 提示された技術的要件を満たす AWS のサービスを特定する能力
  • AWS プラットフォームで安全性と信頼性の高いアプリケーションを構築するために推奨されるベストプラクティスに関する知識
  • AWS クラウドでのソリューション構築における基本的なアーキテクチャの原則に関する理解
  • AWS のグローバルインフラストラクチャに関する理解
  • AWS に関連するネットワーク技術の理解
  • AWS で利用できるセキュリティ関連の機能およびツールと従来型サービスとの連携に関する理解
試験概要の確認

こちらも必須確認ですね。いかにリンクを貼っておきましたのでご覧ください。
ここでの確認観点としては、以下の項目について押さえておいたほうがいいです。

  • 推奨されるAWS の知識
  • 試験内容の概要

https://d1.awsstatic.com/training-and-certification/docs-sa-assoc/AWS%20Certified%20Solutions%20Architect%20-%20Associate%20Exam%20Guide%20001%20v1.5%20JPN.pdf

実際に行った勉強内容

参考書をさらっと一周

クラウドラクティショナー の時にも読んだ参考書をもう一度読み返しました。
ここはAWSのサービスの特性を再認識するためという目的です。
とは言え、私はクラウドラクティショナー の知識があったのでさらっと1周でしたが、未経験やAWSの知識が無い方はしっかり参考書を読んだほうがいいと思います。

AWS WEB問題集で学習しよう

aws.koiwaclub.com
こちらのWEB問題集がかなりの問題数があるので、これを3周することをお勧めします。
私は1.5周ぐらいしかできませんでした。。。。

UdemyのAWSハンズオンでの学習

www.udemy.com
こちらの動画教材を使ってハンズオン形式でAWSサービスを学習しました。
そしてこの動画教材の一番の魅力がAWS SSAの模擬試験が3回分(1回65問)付いてくる点です!
この模擬試験の内容が結構な確率で本番の試験でも出てきたのでかなり助けられました。
本当にお勧めです!!!
有料ですがそれでも買う価値は十分にあると思います!!

最後に模擬試験を受講

最後にAWSの有料の模擬試験を受けました。

テスト受講後の所感

冒頭に書いたと思いますが、最初は記念受験という側面がかなり強かったです。
だらだら勉強するのが嫌だったので、ひとまずテスト受けてみよう!!と思い、その結果自分に足りない学習範囲を再度認識しようと思っていました。
なので、WEB問題集も1.5周しかできていないですし、正答率もそんなに良くなかったです(笑)
しかもテスト本番前日もノー勉強でした。
本番当日の朝7時からUdemyの動画教材の模擬試験を2回分急いでやりました。
最後の1回分は時間がなくて実は出来いないです
その模擬試験の正答率は53%と低く、内心ほぼあきらめ状態でした。
そんな状態で本番に臨みましたが、結果は合格でした。問題文に助けられた部分もあると思いますし、
動画教材の模擬試験が非常に優秀でした。
これからAWS SAA受験される方は是非とも動画教材の模擬試験を受けることを強くお勧めします!!

最後に

次の目標はAWS 認定 SysOps アドミニストレーター – アソシエイトです。

今更だけど mac book proにgitをインストールする

何言ってんだってはなしですよね〜(笑)
けど実際入ってなかったのでインストールします。

Gitのインストール homebrew編

$ brew install git

Gitインストールで問題発生!!

インストール実行後以下のwarningが表示されてしまった。。。

Warning: git 2.21.0 is already installed and up-to-date
To reinstall 2.21.0, run `brew reinstall git`

ん〜っと、already installedって事はすでにインストールされてる??

確認してみると。。。

$ git --version
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

developer pathがアクティブになっていない感じか???

このエラーをググると以下のコマンドで解消されるみたい。

$ xcode-select --install

実行すると納得しました。
Xcodeインストールしてなかったです(笑)

Xcodeインストール後、無事Gitも使えるようになっていました。

$ git --version
git version 2.20.1 (Apple Git-117)

Python3 Tkinter 使ってみた。

PythonGUIアプリを作成したくてアレコレ調べていたら「Tkinter」と呼ばれるものがあるらしいです。
なので今回は「Tkinter」でちょっとしたGUIアプリを作ってみました。

Tkinterがインストールされているか確認

次のコマンドを実行し、小さなウィンドウが表示される事を確認する。

$ python -m tkinter

参考にさせて頂いた記事

qiita.com

実際にオリジナルのGUIアプリを作成

ついこの間プログラマーがお使いを頼まれた際の認識の齟齬について書かれた記事があったので
その内容を使って、プログラマー的思考の判断GUIアプリを簡単に実装しみます。
その記事についてはこちらから。
speakerdeck.com

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import tkinter
from tkinter import messagebox

root = tkinter.Tk()
root.title(u"プログラム脳適正検査")
root.geometry("600x300")

def DeleteEntryValue(event):
#ここで,valueにEntryの中身が入る
 milk = EditBox1.get()
 egg = EditBox2.get()

 if milk == str(6) and egg == str(0):
  messagebox.showinfo('結果', 'あなたはプログラム的思考をお持ちです。')
 else:
  messagebox.showinfo('結果', 'あなたは一般的な思考をお持ちです。')
  

#ラベル
Static1 = tkinter.Label(text=u'■問題')
Static1.place(x=10,y=10)

Static2 = tkinter.Label(text=u'ある日、あなたは妻から次のようなお願い事をされます。')
Static2.place(x=20,y=30)
Static3 = tkinter.Label(text=u'妻:「スーパーに行って牛乳を1つ買ってきてちょうだい。そして、もし卵があったら6つお願い」')
Static3.place(x=20,y=50)

Static4 = tkinter.Label(text=u'■質問')
Static4.place(x=10,y=90)

Static5 = tkinter.Label(text=u'そのお願いを受けてあなたは牛乳と卵をいくつ買って帰りますか?')
Static5.place(x=20,y=110)

Static6 = tkinter.Label(text=u'牛乳の数を入れてください。')
Static6.place(x=50,y=180)

Static7 = tkinter.Label(text=u'卵の数を入れてください。')
Static7.place(x=250,y=180)

#エントリー
EditBox1 = tkinter.Entry(width=20)
EditBox1.insert(tkinter.END,"")
EditBox1.place(x=50,y=200)

EditBox2 = tkinter.Entry(width=20)
EditBox2.insert(tkinter.END,"")
EditBox2.place(x=250,y=200)

#ボタン
Button = tkinter.Button(text=u'確定', width=10)
Button.bind("<Button-1>",DeleteEntryValue) 
Button.place(x=450,y=200)

root.mainloop()

WealthNavi 運用開始約8ヶ月 〜進捗報告〜

WealthNavi凄いぞ!

みなさまWealthNaviと言うサービスをご存知でしょうか?
www.wealthnavi.com
なんでも素人でも簡単に資産運用ができるすごいサービスらしいです。
↑めっちゃざっくり言ってます(笑)

資産運用つまり投資ですね。
投資って聞くとそれなりの知識が必要でなかなか手が出せないってイメージないですか?
それに元本割れして損するんじゃ・・・って思いますよね。
わかります。私自身WealthNaviする前までそう思ってました。
それでも今のご時世貯金するだけでは老後の蓄えが心配になります。
銀行の預金利率もアテにならないし。。。

でも大丈夫!冒頭にも書きましたがWealthNaviなら投資知識がなくても全部自動でAIロボがやってくれるのでユーザは投資資金を用意するだけでOK。
どこに投資するかは全部ロボアドバイザーが勝手にやってくれます。凄い!便利!

と言うわけで前置きが長くなってしまいましたが、私が2018年8月初旬に始めたWealthNaviの運用実績を紹介したいと思います。
まだ資産運用を始められていない方、これから始めようと思っている方、実際問題どうなの?プラスになんの?結局マイナスなんじゃないの?
そんな不安を持っている方達に実際に運用している私の運用履歴をお見せしちゃいます!

現在の運用実績

f:id:kyamisama:20190406152157p:plain
イメージ
どうでしょうか。やばくないですか?
私のスマフォの電池残量(笑)
今記事書いててプレビュー見てビックリしましたよ。。。
すみません。そこじゃないですね。
今現在2019年4月6日時点でプラス6.45%凄いです!ちゃんと結果出してますね!
金額にするとなんと。。。。+36,100円!
何もしていないのに3万6千円も儲かってます!いや〜凄いです。
先に断りを入れておきますが、もちろんマイナスになった時期もあります。
上のスクショのグラフの青く塗り潰されていない箇所は基本的にマイナスです。
見てもらうと分かるんですが、金額がプラス→マイナス→プラスみたいにプラスとマイナスが交互にきていますね。
なので運用していてマイナスになっても焦らずまずは深呼吸しましょう。そして部屋の掃除をしましょう。
落ち着いたら運用を続けましょう。資金の出金なんて愚の骨頂なので絶対にやらないように!!
WealthNaviのページやたまにくるメールに書いてありますが、資産運用は長期目線です。
1年や2年で結果が出るものじゃないです。
私自身のポートフォリオも元金30万円で30年間の運用で毎月1万円の積立と言う内容でやってます。
ちなみに30年後うまく言ってれば800万円まで資産が増える計算です。ただ800万円になる確率は今の所62%です。
これからの世の中の情勢によって変動しますので確実とは言えません。
それでも只々銀行の口座に寝かしておくよりは全然いいと思います。
特に若者には超超おすすめです。なぜなら運用期間が長い方が資産運用しやすいからです。
しかも今の若者が定年退職する頃には年金が支給されるか不安定ですし、支給されても今貰っている額より圧倒的に少ないと思います。
なので今の若いうちから資産形成していきましょう!

またちょくちょく運用実績紹介していきますね。