ぽれいんのブログ

エンジニアになるために覚えたことを日記に付けます。

コマンドライン解析~シェルの基礎の基礎~

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<関連記事>

porain.hatenablog.com

↑↑まだ見ていない方はこちらから↑↑

 

 

 

 

 

コマンドライン

$変数名という文字列をコマンドラインで指定すると、シェルは置き換えを行う。

シェルは変数だけでなくコマンドラインを分析し、様々な文字列に置き換えてからコマンドを実行している。

リテラル文字とメタ文字

リテラル文字…文字そのものを表現する際に用いる

メタ文字…シェルにとって意味をもった文字で、実際にコマンドが実行される前に、別の文字列に置き換えられるもの。

                 ...カレントユーザのホームディレクトリに置換

$変数名        ...変数に格納されている値に置換

` コマンド `  ...コマンドを実行したときに出力される文字列に置換

                  ...0文字以上の文字列(ただし、ドットで始まるファイル名の「.」は除く)

?                    ...任意の1文字(ただし、ドットで始まるファイル名の「.」は除く)

 (スペース)    ...要素の区切り

                   ...コマンドの区切り

\                    ...メタ文字の打ち消し

 

バッククォート(`)

コマンドを実行したときに出力される文字列に置換の例

echo 今日の日付は`date +%Y%m%d`です
→今日の日付は20211015です

 

メタ文字のクォート

シェル上でコマンドを実行する場合、文字列の中に置き換えるべき文字があるかどうかを探し、あれば、それを展開してから実行する。そのため、メタ文字として認識される文字をリテラル文字(文字通りの文字)として認識させるためにはそのための処理(以下のいずれかの処理)をしてあげる必要がある。

エスケープ文字(¥)を前置する     *1

シングルクォートで囲む       *2

・ダブルクォートで囲む(但し、$ ` ¥ はメタ文字としての意味を失わない) *3

例えば、echoコマンドで(メタ文字としての意味を持つ)スペースを含む文字列を出力

*1   echo I¥ love¥ you
*2 echo 'I love you'
*3 echo "I love you"
→I love you

状況に応じて使い分ける必要がある。

 

以上!!!!!!!

Ansibleサーバを構築して別サーバにApacheをインストールする

はじめに

インフラエンジニア初学者のぽれいんと申します。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<参考>

【Ansible入門】EC2環境でAnsibleを実行してみよう - サーバーワークスエンジニアブログ

Ansible入門者向け学習ガイド(CentOS編) | 株式会社アイティードゥ

 

Ansibleとは

インフラ環境をコード化し、インフラ構成を管理するツール。

Ansible用にコード化されたファイル群をPlaybookと呼び、Playbookを1度でも何度でも実行しようが、同じ結果が得られる冪等性という特徴がある。

扱うサーバの数が100、1000と多い際に使用することで時間の効率化、ミスの低減を図ることができる。

 

使用する環境

構成図

f:id:porain:20211006202933p:plain

簡単な構成図

実践

 <Ansibleサーバ>コントロールノード

Ansibleインストール

 amazon-linux用の拡張パッケージをインストール

amazon-linux-extras install epel -y

 python-pipをインストール

yum install -y python-pip

Ansibleをインストール

yum install -y ansible

pyshon-pip用Ansibleをバージョンを指定してインストール

pip install ansible==2.4.0 

Ansible・pythonのバージョンを確認

ansible --version


SSHの設定

ssh鍵を作成

ssh-keygen

※The key's randomart image is: が出るまでEnterを連打。

/root/.sshに移動し中身を確認

cd /root/.ssh && ls -la

authorized_keysの内容を確認

cat authorized_keys

id_rsa.pubの内容を確認し、コピーしておく

 cat id_rsa.pub

<Client01サーバの作業> ターゲットノード
 ~/.sshに移動し中身を確認

cd ~/.ssh && ls -la

~/.ssh/authorized_keysを編集

vi ~/.ssh/authorized_keys
--------以下を追記----------------
 ※コントロールノードで内容を確認し、
 コピーした内容を貼り付ける
----------------------------------

 ディレクトリ、ファイルの権限を変更する

chmod 0700 ~/.ssh && chmod 0600 ~/.ssh/authorized_keys

 <Ansibleサーバ>コントロールノード
 AnsibleサーバからClient01サーバにSSH接続
 鍵認証が問題なければパスワードなしで接続ができます。)

接続が確認後、exitで切断。

ssh root@プライベートIP
>yes
exit

※yesを入力することで侵入可能


 Ansible疎通確認

/etc/ansible/に移動し内容を確認

cd /etc/ansible/ && ls

hostsファイルを編集

vi hosts
----------以下を最終行に追記-------------
 [target]
targetnode ansible_host=プライベートIP
---------------------------------------

ansible.cfgファイルを編集

vi ansible.cfg
----------以下を最終行に追記----------
 [defaults]
interpreter_python=/usr/bin/python3
------------------------------------

ansibleコマンドを実行し疎通確認を行う

ansible all -i hosts -m ping

pingモジュールを使用し疎通しています。『all』はインベントリに記載しているすべてのターゲットノードが対象になる

※Ansibleコマンドが上手くいかないという報告がありました。

その場合、ansible.cfgファイルを元の状態に戻したらできるかもしれないです。。。

Playbookの作成

httpdディレクトリの作成

 cd /etc/ansible/roles
mkdir httpd && cd httpd
mkdir tasks && cd tasks
pwd
→ /etc/ansible/roles/httpd/tasks

install.ymlを作成

vi /etc/ansible/roles/httpd/tasks/install.yml
--------------以下を記入--------------
---
- name: httpdのインストールを行います
  yum:
    name: httpd
    state: present

--------------------------------------

configuration.ymlを作成

vi /etc/ansible/roles/httpd/tasks/configuration.yml
--------------------以下を記入-------------------------------
---
- name: バックアップの確認をします。/etc/httpd/conf/httpd.conf
  stat:
    path: /etc/httpd.conf.org
  register: httpd_conf_org

- name: バックアップを取得します。
  copy:
    src: /etc/httpd/conf/httpd.conf
    dest: /etc/httpd/conf/httpd.conf.org
    remote_src: yes
when: not httpd_conf_org.stat.exists


- meta: flush_handlers
------------------------------------------------------------

main.ymlを作成

vi /etc/ansible/roles/httpd/tasks/main.yml
-------------以下を記入------------
- import_tasks: install.yml
- import_tasks: configuration.yml

-----------------------------------

varsディレクトリを作成

cd /etc/ansible/roles/httpd/
mkdir vars && cd vars

main.ymlを作成

vi main.yml
------------以下を記入---------------
Listen_port:
  - port: 8080

------------------------------------- 

handlersディレクトリを作成

cd /etc/ansible/roles/httpd/
mkdir handlers && cd handlers

main.ymlを作成

vi main.yml
------------以下を記入---------------
- name: start

  service:
    name: httpd
    state: started
    enabled: yes
------------------------------------- 

site.ymlの作成

cd /etc/ansible
vi site.yml
------------以下を記入---------------
---
- hosts: all
  gather_facts: false
  remote_user: root
  roles:
    - httpd

-------------------------------------

treeコマンドを使用し、ディレクトリの階層がしっかり作成できているか確認

yum install -y tree
tree --charset=C
-------以下コマンド結果---------------
|-- ansible.cfg
|-- hosts
|-- roles
|   `-- httpd
|       |-- handlers
|       |   `-- main.yml
|       |-- tasks
|       |   |-- configuration.yml
|       |   |-- install.yml
|       |   `-- main.yml
|       `-- vars
|           `-- main.yml
`-- site.yml
-------------------------------------------


5.playbookの実行

cd /etc/ansible
ansible-playbook site.yml -i hosts -k

※パスワードはsite.ymlで指定した『remote_user』のパスワードを入力

 

 

 

以上!!!!!!!!!!!!!

【備忘録】AWSSA頻出用語一覧

はじめに

インフラエンジニア初学者のぽれいんと申します。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<参考>

[用語]スループットとレイテンシー - Qiita

ディストリビューションの概要 - Amazon CloudFront

【初心者向け】CloudFront とは | SunnyCloud

https://wa3.i-3-i.info/diff150communication.html

なぜネットワークACLでなくセキュリティグループで細かいトラフィック制御を行なうのか | DevelopersIO

クエリとは - 意味の解説|ITトレンドのIT用語集

可用性 - Wikipedia

拡張性 - Wikipedia

セキュリティポリシーとは何? Weblio辞書

マルチスレッド | IT用語辞典 | 大塚商会

メタデータ(metadata)とは - IT用語辞典 e-Words

 

 

 

 

 

 

本日のやりたいこと

絶賛AWSソリューションアーキテクトアソシエイトの取得に向けて、勉強中のぽれいんです。最近はテキストを1周読み終えてひたすら問題を解いております。。。

そんな、問題文に分からない言葉が何回か出てくるため、文章の意味を理解するのにとても時間がかかるし何を言っているか分からないことも多々あります。。。(恥)

そこで自分の備忘録として、そんな用語をこちらにまとめ上げることに致しました。

完全に初学者の自分用ですが、同じ気持ちになっている人がいたら少し安心致します。

(安心していいのかは分かりませんw)

 

ぽれいんの分からない用語集

スループットレイテンシー

スループット…時間当たりの処理能力のこと。

1回の処理でどれくらいのデータをおくることができるかという指標。

レイテンシー…通信の遅延時間

ex.スマホゲームの読込中等

AWSSAでは、スループットレイテンシーを求められる。

 

ディストリビューション

ディストリビューションLinuxの配布形式のこと。

AWSSAでは、CloudFrontにおいて、ダウンロードディストリビューションストリーミングディストリビューションの2種類が登場。

ダウンロードディストリビューション…HTML、CSS、画像などのデータ配信。

ストリーミングディストリビューション…動画ストリーミング配信。

 

<インバウンドとアウトバウンド>

インバウンド…外から中。

コンピュータやシステムが、何かしらからデータ等を受け取ること。

アウトバウンド…中から外。

コンピュータやシステムが、何かしらにデータを送り付けること。

AWSでは、セキュリティグループの設定の際に

インバウントルール、アウトバウンドルールを作成します。

 

<ステートレスとステートフル>

ステートレス…行きの通信と帰りの通信が別。

ステートフル…行きの通信が許可されていると帰りの通信も自動的に許可される。

帰りの通信…インバウンド通信やアウトバウンド通信への応答。

 

<クエリ>

クエリ…データベース管理システムに対する問合わせ(処理要求)

データの抽出や更新などの処理要求を文字列で表す。処理対象のテーブルやデータの抽出条件、並べ方などを指定する。

RDB(リレーショナルデータベース)ではSQL

 

<可用性と拡張性>

可用性(アベイラビリティ)…システムが継続して稼働できる度合いや能力のこと

拡張性(スケーラビリティ)…システムやネットワークなどが、規模や利用不可などの増大に対応できる度合いのこと。

AZ(アベイラビリティゾーン)は直訳するとシステムが継続して稼働できる範囲か。。

 

セキュリティポリシー

セキュリティポリシー…個人情報の保護や機密漏洩防止のため、コンピュータセキュリティに対する基本方針をまとめたもの。

 

<マルチスレッド>

マルチスレッドアプリケーションのプロセス(タスク)を複数のスレッドに分けて並行処理する方式。マルチスレッドを用いると、アプリケーション内で必要に応じて複数の処理を並行して進められるため、処理の速度と精度が飛躍的に向上する。

 

メタデータ

メタデータ…データについてのデータ。データそのものではなく、そのデータを表す属性や関連する情報を記述したデータのこと。

ex.音声データの曲名や作詞者、文書データのタイトルや作成日

 

人狼ゲーム等のメタ考察とは全然意味が違うことに驚いた。。

人狼ゲームやりたくなった。。。。。

 

 

 

以上!!!!

L4とかL7って何⁇

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

 

 

 

<前回記事>

porain.hatenablog.com

<参考記事>

L2、L3、L4、L7の違いのまとめ | スイッチの種類

【情報処理試験備忘録】 ネットワークスペシャリスト メモ: 徒 然 日 記

OSI参照モデル - Qiita

本日の疑問点

こんにちは。最近はAWSソリューションアーキテクトアソシエイトの勉強に励んでいます。AWSSAのテキストや問題集を読んでいるとL4レイヤーという言葉や、L7レイヤーっていう言葉がいっぱい出てきました。

なんとなくそれかなあってのはあるけど、しっかり分かった気がしていない…

ということで、一回まとめとこうっていう感じです。

そんなのも分からないのかよって感じですよね…(笑)orz

 

layer

L4やL7の”L”ってなんだろう?正解は”layer(層)”でした。

層ってことは”アトイネや”アプセトネデブが絡んでくるのかなあ。

 

※以下はこちらの記事で触れたかも、、、復習です!

porain.hatenablog.com

 

OSI参照モデル(アプセトネデブ)

複数のプロトコルを階層化したプロトコルスタック代表格がOSI参照モデル

データの通り道となる階層ごとにルールがはっきりしていることでアプリケーション開発者はプロトコルの取り決めに沿って開発を進めればよい。

 

上層(地上近く)…使用するユーザの近く

          アプリケーション層  「L7」

          プレゼンテーション層

          セッション層

          トランスポート層   「L4」

          ネットワーク層    「L3」

          データリンク層    「L2」

          物理層

下層(地下深く)…開発者やケーブルや回線の近く

 

TCP/IP(アトイネ)

→「TCP/IPプロトコルを実装するためにはどのようにプログラムを組めばいいか?」という視点で階層構造化したモデル。

上層

          アプリケーション層

          トランスポート層

          インターネット層

          ネットワークインターフェイス

下層

 

OSI参照モデルTCP/IPの関係性

OSI参照モデル通信機能を階層構造にしたモデル

TCP/IPTCP/IP実装のため階層構造にしたモデル

であるため、特に関係性はない。ただ、お互いに共通点がいくつかあるため対比的に書かれることが多い。

 

各レイヤ詳細

L2

2層はアプセトネデブの””のため、データリンク層になります。

特徴:フレームの転送

プロトコル:Ethenet(ARP)等

L3

3層はアプセトネデブの””のため、ネットワーク層になります。

特徴:ルーティング処理

プロトコル:IP

L4

4層はアプセトネデブの””のため、トランスポート層になります。

特徴:ファイヤーウォールの設定

プロトコルTCP/UDP

L7

7層はアプセトネデブの””のため、アプリケーション層になります。

特徴:ロードバランサ

プロトコル:HTTP,SMTP,POP3,FTP

 

以上!!!!!!

SQL

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

↑↑まだ見ていない方はこちらから↑↑

<参考>

【これだけ覚えてたらOK!】SQL構文まとめ - Qiita

 

 

 

 

RDBMS

RDMMS(リレーショナルデータベース)は、大量のデータを一定の規則に従って蓄積し、データベースを一元的に管理できるようにした管理システム。

ex.Oracle Database,SQLserver,PostgreSQL,MySQL

データベース

データベースは列(カラム)、行(レコード)とフィールドを持つテーブルのセットで構成される。Excelみたいな感じ!!

基本構文

Mysqlに接続

mysql -u root
>パスワードを入力

データ操作のSQL

データ操作のSQLキーワード CRUD 用途
SELECT Read 取得
INSERT Create 作成・保存
UPDATE Update 更新
DELETE Delete 削除

追加

INSERT INTO personal(id,name) values(1,suzuki);

取得(データの検索)

SELECT id,name FROM personal;

更新

UPDATE values;

削除

DELETE FROM values;

 

以上!!

 

ネットワーク基礎②

はじめに

インフラエンジニア初学者のぽれいんと申します。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

 

 

 

 

LAN基礎

EthernetによるLANを構築するためのハードウェアの基礎知識と物理的ネットワークの構築

社内LAN

社内LANでは文書ファイルを置いておくファイルサーバや、情報を共有するためのデータベースサーバなども接続し、社員がアクセスできるようにする。

LAN機器とイーサネット規格

イーサネットとはLANを構築するための規格。1番の特徴はコストが低く簡単にLANが構築できること。LANを構築する際、最低限以下の機器が必要。

・LANケーブル

・LANカードもしくは無線LAN

スイッチングハブ(HUB)

LAN

コンピュータとHUB、あるいはコンピュータと接続するために使用するネットワークケーブルは主にツイストペアケーブルを使用する。ツイストペアケーブルにはカテゴリという品質レベルがある。品質が良いほど高速に信号を送信することが可能。現在最も使用されているカテゴリは5eと呼ばれる品質のものになる。

LANカード(NIC

LANケーブルを挿す穴がついたパソコンに合体させる部品。

最近のパソコンは標準でLANポートを一つ備えていることが多くなっているため必要ない場合もある。

ハブ

ケーブルを集約する部品。複数のパソコンをLANケーブルを使ってHUBに接続することによってパソコン同士が通信できるようになる。ケーブルを挿し込むHUBの口のことを「ポート」という。HUBにはリピータHUBとスイッチングHUBの二種類ある。

リピータHUB

ポートから受け取ったパケットを他のすべてのポートにリピートする。(2021年現在、リピータHUBはほとんど利用されていない)リピータHUBはすべてのポートに電気信号を流すため、頻繁に信号同士がぶつかる「コリジョン」が発生する。コリジョンが発生するとパケットの再送が行われるため、LAN内でのデータの伝送効率が低下する。

スイッチングHUB

スイッチングHUBは各ポートの接続先のLANカードに割り当てられているMACアドレスを記憶することができる。受信したパケットの宛先と記憶しているMACアドレスを照らし合わせて宛先となっているコンピュータが接続されているポートにのみパケットを流す。そのため、コリジョンが発生しにくい。

MACアドレス

LANカードごとに割り当てられている番号。IPアドレスはOS上の設定で変更できるのに対して、MACアドレスは変更が不可能でユニークな(重複のない)アドレス。

Windowsの場合、設定→ネットワークとインターネット→ネットワークの詳細設定の下にあるハードウェアと接続のプロパティを表示

より、確認できる。

 

以上!!!!!!!!!!!!!

ネットワーク基礎

はじめに

インフラエンジニア初学者のぽれいんと申します。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<参考>

通信プロトコルとは何ですか? | ジャパンセンサー株式会社

 

 

 

 

ネットワークとは

ネットワークを利用すると異なるマシン同士データをやり取りする事ができます。最近のシステムでは1台のマシンだけで完結することはほとんどないので、必ずと言っていいほどネットワーク経由してデータが流れます。

ネットワーク上でやり取りする仕組みは非常にたくさんあります。しかし、インターネットの通信の仕組みをはじめ、ほとんどのシステムにはTCP/IPと呼ばれる仕組みが使われています。

LANとインターネット

ネットワークには様々な規模のものがありますが、1つのビルやフロアの中のように限られた環境で利用するネットワークのことをLANといいます。LANとはLocal Area Networkの略語で「限定した地域の通信網」という意味です。

 

また、世界各地に存在するネットワークをインターネットといいます。インターネットは世界中の様々な企業や組織のLAN同士を集合体と見ることができます。さらに、企業に本社‐支社間など地理的に離れたLAN同士を電話回線や専用線を使って接続したネットワークのことをWAN(Wide Area Network:広域通信網)といいます。

 

クライアント・サーバネットワーク

「インターネットをする」といえば、一般に「ホームページを見る」という意味で使われています。ホームページはパソコンとインターネット接続環境さえあれば日本だけに限らず、世界中の言語で書かれたホームページを瞬時に表示して閲覧することができます。Webサーバというホームページを見せるためのコンピュータが、要求されたページを返すことにより実現しています。

ここで、ホームページを見るためにWebサーバにアクセスしてくるコンピュータをクライアントといい、Webサーバのように何かのサービスを提供するコンピュータをサーバといいます。一般的にサーバはクライアントからの何らかの要求する(リクエス)を待ち続けており、クライアントから自分に対する要求があれば、その要求に対して応答(レスポンス)を返します。

通信プロトコル

プロトコルとは、異なるデバイスやコンピュータシステム、ソフトウェアなどが互いに通信するために制定された規約のことです。現在もっとも普及している標準的なプロトコルTCP/IPプロトコルで、インターネットの仕組みを利用するソフトウェアを開発する際に必ず利用されます。

通信プロトコル

通信プロトコル

TCP/IPプロトコル

この章では現在もっとも普及しているTCP/IPプロトコル階層化モデルとこのあとの各種サーバ構築で必要になる代表的なプロトコルの特徴を学習します。

TCP/IP階層化モデル

サーバ・クライアントシステムにおいて利用されるプロトコルを階層に分けて整理したものをTCP/IPモデルといいます。このようにデータの通り道となる階層ごとにルールがはっきりしているため、開発者は各プロトコルの取り決めに従って開発を進めればよいことになります。以下は各階層で使われる代表的なプロトコルを一覧にしています

 

アプリケーション層

アプリケーション層では、電子メールのフォーマットなどアプリケーション間でデータのやり取りする際に使用する共通のデータ構造や、サーバ・クライアント間の通信の開始~終了までのセッション情報におけるデータ形式などを想定している。

 

トランスポート層

アプリケーション層で作成されたデータは次にトランスポート層に渡されます。トランスポート層では、確実なデータ伝送を実現するために転送方法に関する取り決めを行います。特にサーバクライアント間で仮想的なデータ通信路を確立するためにポート番号を利用します。インターネット上でよく利用されるサービスは固有のポート番号が決まっています。

 

TCP(Transmission Control Protocol)...信頼性が高い

UDP(User Datagram Protocol)...スピードが速い

 

インターネット層

ネットワーク上の住所と宛名にあたる、IPアドレスが、インターネット層で負荷されます。この層で使われるIPというプロトコルは、「データ(パケット)を目的のコンピュータまで届ける」という、非常に重要な役割を持っています。宛先のIPアドレス

 

ネットワークインターフェイス

ネットワークインターフェイス層では上位層から受け取ったデータをLANケーブルに流すための処理を行います。LANでもっともよく使われるEthernet(イーサネット)の場合、次に送る機器を特定するために宛先コンピュータのMACアドレスをデータに付加し、これを電気信号に変えてからケーブルに渡します。この処理はOS上ではなくLANカードのチップ上で行われます。

 

以上!