かべぎわブログ

ブログです

ansible_ssh_common_argsをつかって踏み台経由でAnsibleを実行する

概要

ansible_ssh_common_argsを利用して踏み台を経由して、外部においてあるAnsibleからだと直接接続できないサーバの構成管理をしてみたいと思います。

構成

構成としてはこんなかんじ。
仕事でつかうようなかんじだとよくあると思う。

f:id:kabegiwakun:20190123220008p:plain

外部のAnsibleから直接Private Subnetのターゲットにはいけない。
ので踏み台を経由してAnsibleを実行させたい。みたいなかんじ。

踏み台経由でAnsibleを実行するやりかた

varsでansible_ssh_common_argsにsshのProxyCommandオプション指定してあげます。
たとえばこんなかんじ。

ansible_ssh_common_args: '-o ProxyCommand="ssh -i ~/.ssh/wawawa-key.pem -W %h:%p -q ec2-user@fumidai"'

fumidai = 踏み台

これを指定してあげるとAnsibleでssh接続する際にこのオプションがわたされてsshが実行されます。
こんなかんじのsshコマンドが実行されるようなイメージ

$ ssh -i ~/.ssh/wawwa-key.pem -o ProxyCommand="ssh -i ~/.ssh/wawawa-key.pem -W %h:%p -q ec2-user@fumidai" ec2-user@target

実際に動かしてみる

こんなかんじのplaybookを用意して
(target = ターゲット = 172.140.1.1)

---
- hosts: target
  tasks:
    - shell: hostname

実行してみる。

$ ansible-playbook -i ./inventory ./wawawa.yml -v
Using /etc/ansible/ansible.cfg as config file

PLAY [target] *******************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************
ok: [172.140.1.1]

TASK [shell] ********************************************************************************************************
changed: [172.140.1.1] => {"changed": true, "cmd": "hostname", "delta": "0:00:00.004882", "end": "2019-01-17 02:55:57.259068", "rc": 0, "start": "2019-01-17 02:55:57.254186", "stderr": "", "stderr_lines": [], "stdout": "target", "stdout_lines": ["target"]}

PLAY RECAP **********************************************************************************************************
172.140.1.1               : ok=2    changed=1    unreachable=0    failed=0   

無事にPrivate Subnetにあるtargetに外部のAnsibleからhostnameコマンドがとおりました!

おわりに

べんりべんり

Ansible実践ガイド 第2版 (impress top gear)

Ansible実践ガイド 第2版 (impress top gear)

鍵認証で踏み台経由で多段scp接続する

概要

踏み台経由かつ鍵認証で多段scpをしてみたいと思います。

コマンド

コマンドとしてはこんなかんじ。

$ scp -i 踏み台の鍵 -o ProxyCommand='ssh -i 目的地の鍵 -W %h:%p ユーザ名@踏み台のアドレス' ユーザ名@目的地のアドレス

わかりにくいから実際に書いてみるとこんなかんじ。

$ scp -i ~/.ssh/bastion-key.pem -o ProxyCommand='ssh -i ~/.ssh/wawawa-key.pem -W %h:%p centos@example.wawawa.com' centos@172.140.1.1

きほんてきにsshとおんなじ。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

  • 作者: ブルース・ブリン,Bruce Blinn,山下哲典
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2003/02
  • メディア: 単行本
  • 購入: 18人 クリック: 331回
  • この商品を含むブログ (64件) を見る

鍵認証で踏み台経由で多段ssh接続する

概要

踏み台経由かつ鍵認証で多段sshをしてみたいと思います。

コマンド

コマンドとしてはこんなかんじ。

$ ssh -i 踏み台の鍵 -o ProxyCommand='ssh -i 目的地の鍵 -W %h:%p ユーザ名@踏み台のアドレス' ユーザ名@目的地のアドレス

わかりにくいから実際に書いてみるとこんなかんじ。

$ ssh -i ~/.ssh/bastion-key.pem -o ProxyCommand='ssh -i ~/.ssh/wawawa-key.pem -W %h:%p centos@example.wawawa.com' centos@172.140.1.1

意外と便利よ。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

  • 作者: ブルース・ブリン,Bruce Blinn,山下哲典
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2003/02
  • メディア: 単行本
  • 購入: 18人 クリック: 331回
  • この商品を含むブログ (64件) を見る

Serverspecをつかってみる

概要

Serverspecをさわってみます。

Serverspecのインストール

Rubyがはいっていればこれだけでインストールができます。

$ gem install serverspec

Serverspecの設定

以下コマンドを入力してServerspecの設定を行います。
OSはUNIXで対象はExec(local)にしています。

$ serverspec-init

serverspec-init
Select OS type:

  1) UN*X
  2) Windows

Select number: 1

Select a backend type:

  1) SSH
  2) Exec (local)

Select number: 2

するとこんなかんじのファイル群ができます。

$ tree ./spec
./spec
├── localhost
│   └── sample_spec.rb
└── spec_helper.rb

テストしてみる

./spec/localhost/sample_spec.rbがlocalhost環境で実行されるテストファイルになるのでこれをかんたんに以下のように書き換えてみる。
cronが起動しているかどうかテストするようにしている。

require 'spec_helper'

describe service('cron') do
    it { should be_running }
end

rake specコマンドを実行するとこのテストが実行される。
0 failuresとなっていることがわかる。

rake spec
/usr/bin/ruby2.5 -I/var/lib/gems/2.5.0/gems/rspec-support-3.8.0/lib:/var/lib/gems/2.5.0/gems/rspec-core-3.8.0/lib /var/lib/gems/2.5.0/gems/rspec-core-3.8.0/exe/rspec --pattern spec/localhost/\*_spec.rb
/var/lib/gems/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/rake_task.rb:79: warning: Insecure world writable dir /root/.rbenv/shims in PATH, mode 040777

Service "cron"
/var/lib/gems/2.5.0/gems/specinfra-2.76.7/lib/specinfra/backend/exec.rb:123: warning: Insecure world writable dir /root/.rbenv/shims in PATH, mode 040777
  should be running

Finished in 0.72735 seconds (files took 1.24 seconds to load)
1 example, 0 failures

当然cronはうごいている。

$ service cron status
 * cron is running

cronを止めてからテストしてみると

$ service cron stop
$ service cron status
 * cron is not running

1 failureとなっていることがわかる。

rake spec
/usr/bin/ruby2.5 -I/var/lib/gems/2.5.0/gems/rspec-support-3.8.0/lib:/var/lib/gems/2.5.0/gems/rspec-core-3.8.0/lib /var/lib/gems/2.5.0/gems/rspec-core-3.8.0/exe/rspec --pattern spec/localhost/\*_spec.rb
/var/lib/gems/2.5.0/gems/rspec-core-3.8.0/lib/rspec/core/rake_task.rb:79: warning: Insecure world writable dir /root/.rbenv/shims in PATH, mode 040777

Service "cron"
/var/lib/gems/2.5.0/gems/specinfra-2.76.7/lib/specinfra/backend/exec.rb:123: warning: Insecure world writable dir /root/.rbenv/shims in PATH, mode 040777
  should be running (FAILED - 1)

Failures:

  1) Service "cron" should be running
     On host `localhost'
     Failure/Error: it { should be_running }
       expected Service "cron" to be running
       /bin/sh -c ps\ aux\ \|\ grep\ -w\ --\ cron\ \|\ grep\ -qv\ grep

     # ./spec/localhost/sample_spec.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.83032 seconds (files took 1.26 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/localhost/sample_spec.rb:5 # Service "cron" should be running

/usr/bin/ruby2.5 -I/var/lib/gems/2.5.0/gems/rspec-support-3.8.0/lib:/var/lib/gems/2.5.0/gems/rspec-core-3.8.0/lib /var/lib/gems/2.5.0/gems/rspec-core-3.8.0/exe/rspec --pattern spec/localhost/\*_spec.rb failed

おわりに

やってみた。

Serverspec

Serverspec

WSLのUbuntuにServerspecをインストールする

Windows Subsystem for Linux上のUbuntuにServerspecをインストールしてみたいと思います。     

手順

こんなかんじでインストールすることができます。

gitのインストール

まずgitをインストールします。

$ sudo apt-get install git

Ruby関係のインストール

ServerSpecはRubyのRSpecを利用したものなのでRubyをインストールしてあげる必要があります。

rbenvのインストールと設定

git cloneでrbenvをもってきて

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

PATHをとおしてあげて

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

.bash_profileを再読込してあげる

$ source ~/.bash_profile

ruby-buildのインストール

$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
$ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev

Rubyのインストール

Rubyのこの時点での最新版の2.6.0をインストールします。

$ rbenv install 2.6.0

利用するRubyのバージョンを指定

$ rbenv global 2.6.0

インストールできました!

$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

Serverspecのインストール

Rubyがはいっていればこれだけでインストールができます。

$ gem install serverspec

Serverspec

Serverspec

鍵認証のサーバにscpでファイルを転送する

鍵認証のサーバにscpでファイルを転送してみます。

コマンドはこんなかんじ。

$ scp -i 鍵のPATH コピー元ファイル ユーザ@コピー先アドレス:コピー先PATH

わかりにくいから実際に書いてみるとこんなかんじ。

$ scp -i ~/.ssh/wawawa-key.pem ./wawawa.txt centos@wawawa.com:/home/centos/.

標準テキスト CentOS 7 構築・運用・管理パーフェクトガイド

標準テキスト CentOS 7 構築・運用・管理パーフェクトガイド

  • 作者: 有限会社ナレッジデザイン大竹龍史,市来秀男,山本道子,山崎佳子
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2017/03/22
  • メディア: 単行本
  • この商品を含むブログを見る

WSLのUbuntuにRubyをインストールする

GWindows Subsystem for Linux上のUbuntuにRubyをインストールしてみたいと思います。     

手順

こんなかんじでインストールすることができます。

apt install してあげます。

$ sudo apt install ruby

インストールできました!

$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

Serverspec

Serverspec

WSLのUbuntuにGoogle Cloud SDKをインストールする

Windows Subsystem for Linux上のUbuntuにGoogle Cloud SDKをインストールしてみたいと思います。

手順

こんなかんじでインストールすることができます。

Cloud SDKのリポジトリの環境変数を作成

$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

パッケージ元としてCloud SDKを追加

途中でパスワードをきかれるので入力してあげる。

$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

GCPの公開鍵をインポート

$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

Cloud SDKを更新してインストール

$ sudo apt-get update && sudo apt-get install google-cloud-sdk

これでインストールは完了です!!!!!

インストール完了

インストールできました!!!!

$ gcloud --version
Google Cloud SDK 229.0.0
alpha 2019.01.04
beta 2019.01.04
bq 2.0.39
core 2019.01.04
gsutil 4.35
kubectl 2019.01.04



おわり

Google Cloud Platformではじめる機械学習と深層学習

Google Cloud Platformではじめる機械学習と深層学習

GCPのCloud Storageをgsutilでバケットをつくっていろいろする

GCPのCloud Storageをgsutilでバケットをつくってみたいと思います。

そもそもgsutilってなんやねん?

Google Cloud Storageを操作するためのCLIツールのこと。
Cloud SDKをインストールすることでつかえるようになるよ。
おわり。

バケットを作成する

この場合だとリージョンがasia-northeast-1でバケット名がkabegiwa-bucketになる。
ちなみにmbというのはmake bucketのかしらもじのmb

$ gsutil mb -l asia-northeast1 gs://kabegiwa-bucket/
Creating gs://kabegiwa-bucket/...

#バケットの一覧を確認する バケットができたのかどうかlistで確認してみます。

$ gsutil ls
gs://kabegiwa-bucket/

オブジェクトをアップロードする

適当なファイルをバケットにアップロードしてみます。

$ gsutil cp ./wawawa.txt gs://kabegiwa-bucket/wawawa.txt
Copying file://./wawawa.txt [Content-Type=text/plain]...
/ [1 files][    7.0 B/    7.0 B]
Operation completed over 1 objects/7.0 B.

アップロードできたかどうか確認する

$ gsutil ls gs://kabegiwa-bucket/
gs://kabegiwa-bucket/wawawa.txt

オブジェクトを削除する

$ gsutil rm gs://kabegiwa-bucket/wawawa.txt
Removing gs://kabegiwa-bucket/wawawa.txt...
/ [1 objects]
Operation completed over 1 objects.

バケットを削除する

rbはremove bucketのrb

$ gsutil rb gs://kabegiwa-bucket
Removing gs://kabegiwa-bucket/...



おわり

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

AWSCLIでキーペアを作成する

概要

AWSCLIを利用してキーペアを作成してみます。

環境

  • Amazon Linux2
  • キーペアをつくれる権限のIAMロールがアタッチされている

手順

キーペアをつくれる権限のIAMロールがアタッチされているAmazonLinux2で以下のコマンドを実行します。
wawawa_keyの部分は適当に変えてあげてください。

$ aws ec2 create-key-pair --key-name wawawa_key --query 'KeyMaterial' --output text > ~/.ssh/wawawa_key.pem

キーができました。

$ cat ~/.ssh/wawawa_key.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAjRFTwhosQclZNVif2u0rFvk2IIidsDcLHRTDyQZaZcAhwMTFNxqDBo50vWWz
bnklpIC4M6jESwvIFhmd8CuVKYG/qyQJ2AfETXLHkm+AQjZN/iFxiuQSWGczRxe8HBt2ZB906McQ
cuEewjAtXVHNCJ6YuCFiVzhOQsnVpwRTy3y/5dFfyPZJMlumK+z/rjqFqLojU3OoSPdvxNnhqzMt
VvQ39Dnjiu7zNeVkeapsSBnsoJkWdrPUckjCStkjtlmGuPkCPwSuY53hderZlbnmmJ07duCshAcz
~~~省略~~~
-----END RSA PRIVATE KEY-----

マネジメントコンソールにも登録されています。
f:id:kabegiwakun:20190112101244p:plain

このLinux上からキーとして利用するために権限を変えてあげます。

$ sudo chmod 600 ~/.ssh/wawawa_key.pem

これでキーペアの作成は完了です。
こんなかんじでssh接続する際に利用することができます。

$ ssh -i ~/.ssh/wawawa_key.pem ec2-user@192.168.1.xxx



徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

  • 作者: ??部昭寛,宮?光平,菖蒲淳司,株式会社ソキウス・ジャパン
  • 出版社/メーカー: インプレス
  • 発売日: 2019/01/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

WSLのUbuntuにAWSCLIをインストールする

概要

Windows Subsystem for Linux上のUbuntuにAWSCLIをインストールしてみたいと思います。

手順

こんなかんじでやるとインストールできます。

pipをインストールする

curlでpipをもってきて

$ curl -O https://bootstrap.pypa.io/get-pip.py

実行する

$ python get-pip.py --user

.bash_profileにpipインストール場所のPATHを追加して

$ echo 'export PATH=~/.local/bin:$PATH' >> ~/.bash_profile

再読込させる

$ source ~/.bash_profile


AWSCLIをインストールする

pip install でAWCLIをインストールします。

$ pip install awscli --upgrade --user

無事にインストールできました!!!!!

$ aws --version
aws-cli/1.16.85 Python/2.7.15rc1 Linux/4.4.0-17134-Microsoft botocore/1.12.75



徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

  • 作者: ??部昭寛,宮?光平,菖蒲淳司,株式会社ソキウス・ジャパン
  • 出版社/メーカー: インプレス
  • 発売日: 2019/01/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

GCPのCloud Storageにファイルを格納してみる

概要

GCPのCloud Storageにファイルを格納してみたいと思います。

そもそもCloud Storageとは?

AWSでいうところのS3みたいなやつ。
安価でデータをいろいろ格納できて、可用性も高いよ。

バケットを作成する

まず、Cloud Storageのバケットを作成します。
コンソールでCloud Strageを開いて、「バケットを作成」を選択します。
f:id:kabegiwakun:20190108230829p:plain

作成するバケットの設定ができるのでバケットの名前、ストレージクラス、場所を適当に選んであげて作成してあげます。
f:id:kabegiwakun:20190108231034p:plain

バケットが作成できました。
まだなにも入っていない空の状態です。
f:id:kabegiwakun:20190108231329p:plain

バケットにファイル(オブジェクト)を格納する

バケットに格納するように適当なファイルをつくっておきます。

echo 'wahaha' > ./wawawa.txt

「ファイルをアップロード」を選択して先ほどつくったファイルをアップロードします。
f:id:kabegiwakun:20190108233803p:plain

無事格納することができました!
f:id:kabegiwakun:20190108234333p:plain

格納したファイルを選択することでファイルの中身をブラウザ上で見ることもできます。
f:id:kabegiwakun:20190108234527p:plain



おわり。

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

VirtualBoxとVagrantでWindowsにCentOS環境を構築してみる

https://upload.wikimedia.org/wikipedia/commons/8/87/Vagrant.png

Windowsのローカル環境にVirtualBoxとVagrantを利用してCentOS環境を構築してみたいと思います。

VirtualBoxのインストール

以下のURLにアクセスして
Downloads – Oracle VM VirtualBox

赤枠をクリックしてインストーラをダウンロードする。
f:id:kabegiwakun:20190107220635p:plain

インストーラを実行してネクストネクストで順にすすめていけばVirtualBoxのインストールは完了。
f:id:kabegiwakun:20190107220826p:plain

インストールできました!!!!
f:id:kabegiwakun:20190107221050p:plain

Vagrantのインストール

以下URLにアクセスして

Vagrant by HashiCorp

赤枠をクリックして
f:id:kabegiwakun:20190107221249p:plain

もっかい赤枠をクリックしてダウンロードする(いまどきはだいたい64bitだろう)
f:id:kabegiwakun:20190107221453p:plain

インストーラを実行してネクストネクストで順に進めていって
f:id:kabegiwakun:20190107221711p:plain

再起動すればVagrantのインストールが完了する。
f:id:kabegiwakun:20190107221908p:plain

CentOSのboxファイルをダウンロードする

CentOSのboxファイルをダウンロードします。
boxファイルとはOSのイメージファイル群のことです。

コマンドプロンプトでboxファイルをダウンロードしてきたいディレクトリに移動して以下コマンドを実行します。

C:\kabegiwa> vagrant box add centos/7

するとなにでつかうんだみたいなことをきかれるので3のvirtualboxを選択します。

==> box: Loading metadata for box 'centos/7'
    box: URL: https://vagrantcloud.com/centos/7
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop

Enter your choice: 3

初期設定をする

以下コマンドを入力します。

$ vagrant init

するとカレントディレクトリにVagrantfileというファイルができあがります。
そのなかのconfig.vm.boxという箇所以下のように書き換えてあげます。

config.vm.box = "centos/7"

CentOSを起動する

以下のコマンドを実行してCentOSを起動します。

C:\kabegiwa> vagrant up

VirtualBoxからCentOSにsshログインする

VirtualBoxを起動するとさきほど起動したCentOSが起動されていることがわかる。
f:id:kabegiwakun:20190107225842p:plain

ID: vagrant
Pass: vagrant

でsshログインすることができる。

おまけ コマンドプロンプトからログインする

VirtualBoxからではなく、コマンドプロンプトからもsshログインすることができます。
以下コマンドをいれてあげるだけです。

C:\kabegiwa> vagrant ssh

実践 Vagrant

実践 Vagrant