2021年7月4日日曜日

docker の rainで cloudformation してみる

 

rain の dockerイメージを作ります。

Dokerfileは以下のとおり。

User, Group は、rain を使用するユーザに合わせています。

FROM amazon/aws-cli:latest

ARG RAIN_VER=1.2.0
ARG UID=1000
ARG GID=1000
ARG GNM=ubuntu
ARG UNM=ubuntu

ADD https://github.com/aws-cloudformation/rain/releases/download/v${RAIN_VER}/rain-v${RAIN_VER}_linux-amd64.zip /tmp/rain.zip

# Install Rain
RUN yum install unzip -y \
 && unzip -j /tmp/rain.zip */rain -d /usr/local/bin/ \
 && chmod 755 /usr/local/bin/rain \
 && rm /tmp/rain.zip

# user
RUN echo "${GNM}:x:${GID}:${UID}" >> /etc/group
RUN echo "${UNM}:x:${UID}:${GID}::/home/ubuntu:/sbin/nologin" >> /etc/passwd

ENTRYPOINT ["/usr/local/bin/rain"]


ビルドします。

$ docker build . -t aws-rain


ビルドしたDockerイメージを確認します。

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)
$ docker run --rm --entrypoint bash aws-rain -c "id ubuntu"
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu)
$ docker run --rm aws-rain --version
Rain v1.2.0 linux/amd64


Dockerイメージを実行するスクリプトを用意します。

今回は、/usr/local/bin/rain にします。

内容は以下のとおり。

$ cat /usr/local/bin/rain
#!/bin/bash
docker run -it --rm -v $HOME:$HOME -u ubuntu -w $PWD aws-rain $*

実行権限をつけます。

$ chmod +x /usr/local/bin/rain


rainの動作確認をします。

$ rain ls --profile sandbox
CloudFormation stacks in us-east-1:
  Blue21VpcPoC: CREATE_COMPLETE


docker イメージにはホームディレクトリをマウントしているので、CFNテンプレートをホームディレクトリに置いて、rainを使うようにします。

また、上記の例だと、PC側のubuntuユーザにaws-cli の設定(~/.aws)が必要です。


2021年7月3日土曜日

EC2インスタンスのタグ(Name)とSSMでSSHしてみる

 

EC2インスタンスのタグ(Name)でSSHしてみたいと思います。


まず、SSMで ssh できることを確認します。

セットアップの手順は下記ページを参考にしてください。


~/.ssh/config は下記のとおり。

Host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --profile sandbox --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"


下図のようにssh接続します。

aws-cliを実行するので、接続するまで、少し遅いです。


こんどは、~/.ssh/config は下記のようにします。

"--target" に指定するインスタンスIDを aws-cli で検索します。

なお、%h は大文字を小文字に置き換えるので、EC2インスタンスのタグ(Name)は、アルファベット小文字にしないと失敗します。

Host sbx-*
    ProxyCommand bash -c "aws ssm start-session --profile sandbox --target $(aws ec2 describe-instances --profile sandbox --filters "Name=tag:Name,Values=%h" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text) --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"


下図のようにEC2インスタンスのタグ(Name)でssh接続します。

aws-cli を2回実行するので、接続するまで、さらに遅いです。




2021年7月1日木曜日

Linux Mint 20.1 でwi-fi 接続が切れまくる


下記の古いマシンに「Linux Mint 20.1」をインストールしました。



 WiFiが切れまくる


LANケーブルでのネット接続は問題なかったのですが、wi-fi が切れまくります。

1~3分ぐらいで切れます。

lspci は下記のとおり

$ lspci
00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation HM76 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
01:00.0 Network controller: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe
01:00.1 Bluetooth: Ralink corp. RT3290 Bluetooth
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 05)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)

ネットで調べると、

「ipv6 が悪さすることがあるらしい。」

ということで、

ipv6 を無効にして、OS再起動してみましたが、効果ありませんでした。

/etc/sysctl.conf  の修正内容は下記のとおり。

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1


/var/log/syslog を見ると下記のようなメッセージがでています。

Jun 27 21:36:10 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: wlo1: CTRL-EVENT-BEACON-LOSS 
Jun 27 21:36:12 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: message repeated 2 times: [ wlo1: CTRL-EVENT-BEACON-LOSS ]
Jun 27 21:36:13 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: wlo1: CTRL-EVENT-BEACON-LOSS 
Jun 27 21:36:14 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: wlo1: CTRL-EVENT-BEACON-LOSS 
Jun 27 21:36:15 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: wlo1: CTRL-EVENT-BEACON-LOSS 
Jun 27 21:36:18 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: wlo1: CTRL-EVENT-BEACON-LOSS 
Jun 27 21:36:27 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: message repeated 9 times: [ wlo1: CTRL-EVENT-BEACON-LOSS ]
Jun 27 21:36:28 HP-Pavilion-g6-Notebook-PC wpa_supplicant[612]: wlo1: CTRL-EVENT-BEACON-LOSS 


さらに、調べていると、

「wi-fiの省電力モードが悪さすることがあるらしい。」

といことで、

wi-fiの省電力モードを無効にしました。

/etc/NetworkManager/conf.d/default-wifi-powersave-on.confの修正内容は下記のとおり。

[connection]
#wifi.powersave = 3
wifi.powersave = 2


OS再起動すると、wi-fi が切れなくなりました。

省電力モードが悪さしてたようです。

問題解消です。

ちなみに、syslog には、前述のメッセージが出なくなりました。



chrome


最初は、chromium を入れてみたのですが、Googleアカウントへのログイン状態が維持されなかったので削除しました。

GoogleのChromeを入れたら、ちゃんと動いてます。



VirtualBox


「このPCがSecureBoot環境」なので、VirtualBox のインストールではパスワード入力を求められます。

パスワード(12345678)を入力して、再起動すると、見慣れないBOOTメニューが表示されますが、ここから MOK の登録作業が必要です。

ContinueせずEnroll MOKを選択し、先ほど設定したパスワードを入力して、キーを Enroll(登録)したら rebootします。

これでVirtualBoxが使えるようになります。

$ /etc/init.d/virtualbox status
● virtualbox.service - LSB: VirtualBox Linux kernel module
     Loaded: loaded (/etc/init.d/virtualbox; generated)
     Active: active (exited) since Wed 2021-06-30 07:20:08 JST; 8min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 950 ExecStart=/etc/init.d/virtualbox start (code=exited, status=0/SUCCESS)

 6月 30 07:20:07 HP-Pavilion-g6-Notebook-PC systemd[1]: Starting LSB: ….
 6月 30 07:20:07 HP-Pavilion-g6-Notebook-PC virtualbox[950]:  * Loadin….
 6月 30 07:20:08 HP-Pavilion-g6-Notebook-PC virtualbox[950]:    ...done.
 6月 30 07:20:08 HP-Pavilion-g6-Notebook-PC systemd[1]: Started LSB: V….
Hint: Some lines were ellipsized, use -l to show in full.


開発用にいれたものたち


  • emacs 26.3
  • docker 20.10.7
  • docker-compose 1.25.0
  • virtualbox 6.1.16
  • vagrant 2.2.6
  • aws-cli 2.2.14
    • session-manager-plugin 1.2.205.0-1
    • awscli-plugin-endpoint 0.4
    • aws-mfa 0.0.12
  • sam-cli 1.24.1
  • homebrew 3.2.0
    • rain 1.2.0