20210415のLinuxに関する記事は8件です。

Monologでログファイルのパーミッションを指定する

Monologでファイルにログを出力する場合、StreamHandlerまたはStreamHandlerを継承したクラスを使用しますが、ファイルのパーミッションを指定する方法を記述します。 ファイルのパーミッションを指定する場合、コンストラクタの第4引数の$filePermissionに8進数で指定します。 new StreamHandler('/app.log', Logger::INFO, true, 0755); StreamHandler.phpの105行目でchmod関数で設定しています。(chmodなのでWindowsでは効果はありません。) StreamHandler.php if ($this->filePermission !== null) { @chmod($this->url, $this->filePermission); }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ディレクトリのlnリンクコマンドがうまくいかない?

はじめに リンクを上書きしようとしたらリンクがうまく貼れないのでしらべた。 結論 ディレクトリのリンクは循環参照になってしまうので-nオプションをつかう ln -nfs linkA linkB
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerのhttp_proxyで詰まった話

概要 proxy環境下でdockerを使うために設定をしていたとき、http_proxy,https_proxyがどうしても上手く読み込めてなかったので何をして何が原因で何をしたのかをここに残す。 設定時 DockerはLinuxシステムの環境変数にあるhttp_proxyやhttps_proxyとは別に、専用のproxy設定を施す必要がある。 なのでこのサイトを参考に設定をした。 そのときのconfファイルの設定内容はこんな感じ。(実際の接続先URLは載せるわけにはいかないので、例として架空のurlを用いる) /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=http://aaaa:admin!@example.ad.jp:8080" のように書き込んだ。 これでdocker pull イメージ名を実行したところ以下のようなエラーが出力された。 Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: dial tcp: lookup https on xxx.xxx.xxx.xxx:xx: no such host 解決策 http://aaaa:admin!@example.ad.jp:8080の!をURLエンコードしてやればよい。 どうやらLinuxにおいて!(エクスクラメーションマーク)は特別な意味を持つ記号で、通常の'(シングルクォーテーション)を用いたエスケープが効かないそうだ。 ※¥(円マーク)でエスケープはできたがURLにそのまま残ってしまう↓ http://aaaa:admin¥!@example.ad.jp:8080 ↑この場合PWの一部として円マークが認識されてしまう ※参考ページ: bashに !' で event no found と怒られた理由を考えてみる - https://qiita.com/Qutjl/items/6e0056853c94011d245b URLなので%21のようにエンコードすればどうにかなるんじゃねと思い、やってみたところできてたっぽい (この時上記に関係ないエラーが発生して、それを勘違いして最初はこの方法でもできてないと思った) ↓URLエンコードバージョン /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=http://aaaa:admin%21@example.ad.jp:8080" ちなみにdocker infoを実行することでDockerに関する情報が出力される。先ほどのProxy設定情報も出力される。 [root@hogehoge ~]# docker info ~中略~ HTTP Proxy: http://xxxxx:xxxxx@example.ad.jp:8080 HTTPS Proxy: https://xxxxx:xxxxx@example.ad.jp:8080 ~中略~ エスケープしても上のようにusername@passwordが伏字になってしまうことがある。 しかしsystemctl show docker --property EnvironmentでProxy設定情報を確認すると Environment=HTTP_PROXY=http://aaaa:admin%21@example.ad.jp:8080 HTTPS_PROXY=https://aaaa:admin%21@example.ad.jp:8080 このようにエクスクラメーションマークがエスケープされて登録されていることがわかる。 なぜ伏字になるのかは不明。 余談 上にも書いたが、URLエンコードで対応してもエラーが発生した。このエラーは以下のようなものだった Get https://registry-1.docker.io/v2/: proxyconnect tcp: tls: first record does not look like a TLS handshake 上手くTLSのコネクションがはれていないのかなと思いググってみた。 すると以下のページに答えが載っていた。 VagrantをProxy経由で利用する - https://qiita.com/daichannel/items/08e074a01e8ab41d52f7#docker 単純にHTTPS_PROXYに設定するURLのスキームをhttpにすれば良いだけだった。 (なぜhttpsではダメなのかは不明。これでいいのか感が否めない・・・) /etc/systemd/system/docker.service.d/https-proxy.conf [Service] Environment="HTTPS_PROXY=http://aaaa:admin%21@example.ad.jp:8080" 余談2 今回は通常のURLエンコードでどうにかなったが、場合によっては%を2回続けないと反映されないらしい。 上記のhttps-proxy.confを例にすると /etc/systemd/system/docker.service.d/https-proxy.conf [Service] Environment="HTTPS_PROXY=http://aaaa:admin%%21@example.ad.jp:8080" このようにエクスクラメーションマークを変換する際は%%21と%を2回続けると上手くいくこともあるらしい。 どうやらsystemctlでは%ダブルで$や%などの特殊文字をエスケープしているらしい(?) 参考ページ:https://forums.docker.com/t/proxy-settings-do-not-work-for-either-etc-default-docker-or-systemd-drop-ins/68891/17 結論 systemctlのconfファイルに用いる!はLinuxにおける通常のエスケープ方法が効かないことがわかった。 Linuxシステムにおいて!は扱いが特殊なので、そもそもURLなどに混ぜるべきではないと思った。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【ssh鍵ベース認証】色付きコマンド

イントロダクション sshの鍵認証の記事がいっぱいあるけど、色付きでどこでコマンド記載 ディレクトリを考慮しなくてコマンドが通る記載にしております 構成 青のサーバーで実行する項目は青で記載 緑のサーバーで実行する項目は青で記載 手順 青 $ uname -n  ☆青のサーバー名であることを確認 $ whoami  ☆青のサーバでsshを実行したいユーザーであるか確認 $ ssh-keygen  ☆対話形式になるので、脳死で enter 連打 実行例 [zumi@DESKTOP-9JGK6V3:zumi]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/mnt/c/Users/4433a/zumi//.ssh/id_rsa): Created directory '/mnt/c/Users/4433a/zumi//.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /mnt/c/Users/4433a/zumi//.ssh/id_rsa. Your public key has been saved in /mnt/c/Users/4433a/zumi//.ssh/id_rsa.pub. The key fingerprint is: SHA256:g/I/Aan7N7bCGw8/e8Uf3gtFXjU2e9L+aMLuZA8jx/8 zumi@DESKTOP-9JGK6V3 The key's randomart image is: +---[RSA 2048]----+ | +.| | ..=| | . .o+| | o. ooo| | ....S . o.| | .o .. oo o..| | o+ ...X+oo.| | . o** .* B+ .| | .o=*B .o ooE| +----[SHA256]-----+ [zumi@DESKTOP-9JGK6V3:zumi]$ $ ls -l ~/.ssh/  ☆id_rsa と id_rsa.pub が作成されていることを確認 実行例 [zumi@DESKTOP-9JGK6V3:zumi]$ ls -l ~/.ssh/ total 0 -rwxrwxrwx 1 zumi zumi 1679 Apr 9 20:11 id_rsa -rwxrwxrwx 1 zumi zumi 402 Apr 9 20:11 id_rsa.pub [zumi@DESKTOP-9JGK6V3:zumi]$ $ cat ~/.ssh/id_rsa.pub  ☆標準出力になんか出てくるのでメモ帳にでもコピペしとく。 [zumi@DESKTOP-9JGK6V3:zumi]$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAJ31e5uYyonmsgApdZ2jdXxlxgqI9sb+2Vyq0BfCXRGZykeiC29URTPAF+Zw9jKY9rtSiWGr1c1fF0yjf1JKDV6X9uj/aKPIzT8VhV8dRPRD14XGKL5DvQqV/f3IS3SoVWXTiJFODTQ04ER3cFIQ2Jb6BEbb045mNasFE8O1Ou6aKrbJrE5r6TWPahcMHTQYPHYQg+Xg36xMiT7n+2ggXJM2/bs22g6oBjSms/nUAmmBJ6myrRQAbHaQVH7YBJ2OvK9gtpseMXRbWJN5HTntClg1G1k5nuOoWjfD4dGaq5TNPwTIsGi/MjmdMhUy349/pSmVbgLRHYaYZJSenniel zumi@DESKTOP-9JGK6V3 [zumi@DESKTOP-9JGK6V3:zumi]$ 手順 緑 $ uname -n  ☆緑のサーバー名であることを確認 $ whoami  ☆緑のサーバでsshでログインするユーザーであるか確認する $ ls -ld ~/.ssh/ || { mkdir ~/.ssh/ && ls -ld ~/.ssh/ ; } ☆.ssh ディレクトリを作成 実行例(ディレクトリある場合) cozftro@virtual-server101:~$ ls -ld ~/.ssh/ || { mkdir ~/.ssh/ && ls -ld ~/.ssh/ ; } drwxrwxr-x. 2 cozftro cozftro 6 4月 12 20:26 /home/cozftro/.ssh/ cozftro@virtual-server101:~$ 実行例(ディレクトリ無い場合は、無いこと確認してから作成) cozftro@virtual-server101:~$ ls -ld ~/.ssh/ || { mkdir ~/.ssh/ && ls -ld ~/.ssh/ ; } ls: /home/cozftro/.ssh/ にアクセスできません: そのようなファイルやディレクトリはありません drwxrwxr-x. 2 cozftro cozftro 6 4月 12 20:26 /home/cozftro/.ssh/ cozftro@virtual-server101:~$ $ chmod 700 ~/.ssh/ ☆前項で作成したディレクトリのパーミッションを変更 $ vi ~/.ssh/authorized_keys ☆ 青 の画面で出力した ~/.ssh/id_rsa.pub の中身を追記する $ chmod 600 ~/.ssh/authorized_keys ☆前項で作成したファイルにパーミッションを変更 手順 青 $ ssh -l <緑のサーバーで作業したユーザー名> <緑のサーバー名 or IP>  ☆ ssh の際にパスを聞かれずにログインできることを確認 ※ パスワードを聞かれる場合 $ ls -ld ~/.ssh/ ☆ パーミッションが700を確認。なってないなら修正。  chmod 700 ~/.ssh/ $ ls -l ~/.ssh/id_rsa ☆ パーミッションが600を確認。なってないなら修正。  chmod 600 ~/.ssh/id_rsa 参考文献 RedHat https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s2-ssh-configuration-keypairs
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

kali linux 2021.1をとりあえず日本語化ためにやること。

インストールできたらまずは日本語化 kali linuxをインストールできたらまずは日本語化しましょう。 使用環境 ホストOS:Mac 仮想化:VirtualBox 仮想OS:kali linux 2021.1 流れとやること ログイン ↓ ターミナルを開く ↓ 1.日本語化関連のパッケージをインストール 2.日本語表示にする 3.キーボードを日本語のやつを選ぶ 4.タイムゾーンを日本に設定 ↓ リブート(再起動) リブートはこまめにやったほうがいいかも・・・。 やってみる 1.日本語化関連のパッケージをインストール sudo update-locale LANG=ja_JP.UTF-8 まあまあ時間かかる・・・。 2.日本語表示にする sudo dpkg-reconfigure locales 「ja_JP.UTF-8 UTF-8」を選ぶ ※Spaceでチェックを入れて、Enterで決定 ※その後の画面でもja_JP.UTF-8 UTF-8を選ぶ 3.キーボードを日本語化 設定(Setting)からキーボード(Keybord)を選ぶ レイアウト(Layout)のタブを選ぶと、英語が設定してるのがわかる 日本語を追加して、英語は削除しておく。 4.ついでに時間(タイムゾーン)も設定 右上の時間表示を右クリック(トラックパッドだと2本指タップ) んでプロパティを開く。 タイムゾーンに「japan」を入れて選ぶだけ 閉じるのじゃ。 おしまい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

kali linux 2021.1を日本語化する。

インストールできたらまずは日本語化 kali linuxをインストールできたらまずは日本語化しましょう。 使用環境 ホストOS:Mac 仮想化:VirtualBox 仮想OS:kali linux 2021.1 流れとやること ログイン ↓ ターミナルを開く ↓ 1.日本語化関連のパッケージをインストール 2.日本語表示にする 3.キーボードを日本語のやつを選ぶ 4.タイムゾーンを日本に設定 ↓ リブート(再起動) リブートはこまめにやったほうがいいかも・・・。 やってみる 1.日本語化関連のパッケージをインストール sudo update-locale LANG=ja_JP.UTF-8 まあまあ時間かかる・・・。 2.日本語表示にする sudo dpkg-reconfigure locales 「ja_JP.UTF-8 UTF-8」を選ぶ ※Spaceでチェックを入れて、Enterで決定 ※その後の画面でもja_JP.UTF-8 UTF-8を選ぶ 3.キーボードを日本語化 設定(Setting)からキーボード(Keybord)を選ぶ レイアウト(Layout)のタブを選ぶと、英語が設定してるのがわかる 日本語を追加して、英語は削除しておく。 4.ついでに時間(タイムゾーン)も設定 右上の時間表示を右クリック(トラックパッドだと2本指タップ) んでプロパティを開く。 タイムゾーンに「japan」を入れて選ぶだけ 閉じるのじゃ。 おしまい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Catalyst 9300 Docker の上で ThousandEyes Agent の起動と設定

これはなに? こちらの絵が、やりたいことです! Catalyst9300 に ThousandEyes のDockerエージェントをインストールして設定して動作確認します。Catalyst9300上の Docker アプリのホストの仕方の参考にもなります。 ThousandEyes いろんなところに配置したソフトウェアエージェントを使って、任意のポイント間を任意のテストトラフィックを発生させて、そのネットワークのサービスレベルを可視化、それがクラウドポータルからめちゃくちゃ簡単にできるという、サウザンドアイズという会社およびサービスがありました。いろんなところにお目々? があるという感じですね。実際にはお目々は見ているというより、何かを発生させる(TracerouteしたりWebにHTTPしたり拠点間でRTP出したり)のでちょっとミスリーディングかも。実際に流れているものを監視する手法をパッシブモニタリング(受動型監視)、能動的にテストを行ってその結果から品質を可視化する手法をアクティブモニタリング(能動型監視)とよびますが、サウザンドアイズの中心となる特徴はアクティブモニタリングの方になります。 で、2020年に某シスコシステムズに買収・統合されてその統合具合が注目されていました。 サウザンドアイズのエージェントには、全世界に配置してくれているクラウドエージェント、自分で好きなところ(ラズパイとか仮想マシンとか)に配置するエンタープライズエージェント、パソコンにインストールするクライアントエージェントといったタイプがありますが、どこにお目々を置きますか?という選択が必要で、基本的にはお目々の数やテストの数に応じてお金がかかるという感じです。 ThousandEyes on Cisco Ciscoルーターやスイッチでは、以前からアプリケーションホスティングという仕組みを使って、装置の上に任意のアプリケーションを立ち上げることができており、サウザンドアイズのエージェントをホストするソリューションがありました。データセンターにサウザンドアイズ用の仮想マシンを専用に作ったり、もちろんラズパイを配置したりといった、物理的な部分が節約できることと、ネットワーク装置そのものからテストトラフィックが発生しているように作れるため、特に拠点間比較などネットワークの切り分けと組み合わせてトラブルシュートがわかりやすくなるといった利点がありました。 クラウドエージェント エンタープライズエージェント ... OVA/OVF, Hyper-V, Nuc/ラズパイ, Cat9K/ISR/ASR, JUNOS, Linux Package, Docker, AWS Marketplaceなどなど <== ここの話 エンドポイントエージェント Docker タイプの ThousandEyes エージェントを Catalyst9300 上に立ち上げる 私も過去に、ThousandEyesのエージェントをCatalystに以前ホストして遊んでいたことがあるんですが、前はKVMベースのものしかなくて、しかも限られたCatalystのApp-hosting用のリソースを使ってしまって、動くには動いてたんですが取り回しに苦労したんですよね。 それが今ではCatalyst9300のApp-hositngのDockerの上で動くThousandEyesのDockerタイプのエージェントがリリースされていて、さらに公式のリリースノートにもサポートが明記されていたので、重い腰を上げてほとんど自分用のメモとして残しておくことにしました。 Catalyst 9300 のDockerコンテナでThousandEyesエージェントが動く IOS XE App-hostingの機能を使って設定 オプションのSSDが不要でBootflashだけでよくなった(以前のKVMエージェントだとSSDが必要だった) ※ちなみにオプションのSSDってこれ... 普通買いませんよね... 私持ってますが 敷居が低い! Catalyst9300 持ってたら試せる!(あとライセンス?) ThousandEyesエージェントはここからダウンロード Release Notes for Cisco Catalyst 9300 Series Switches, Cisco IOS XE Amsterdam 17.3.x ThousandEyes Enterprise Agentの新バージョンを紹介します。これは、アプリケーション ホスティング機能を使用してシスコ デバイス上で動作する Docker ベースの組み込みアプリケーションです。Enterprise Agent は、SSD とブートフラッシュの両方で使用できます。 Programmability Configuration Guide → Application Hosting を参照してください。 (ネットワークアドバンテージ) Programmability Configuration Guide, Cisco IOS XE Amsterdam 17.3.x 以前の Cisco IOS XE リリースでは、ThousandEyes はサードパーティの KVM (Kernel-based Virtual Machine) アプライアンスとして SSD 上でサポートされていました。 Cisco IOS XE Amsterdam 17.3.3では、新バージョンのThousandEyes Enterprise Agentが導入されています。これは、アプリケーション ホスティング機能を使用してシスコ デバイス上で動作する、Docker ベースの組み込みアプリケーションです。Enterprise Agentは、SSDとブートフラッシュの両方で利用可能です。Enterprise Agentは、ブラウザテスト(ページロードとトランザクション)を除くすべてのテストをサポートしています。 ※関係ないけど DeepL めちゃくちゃ便利ですね! やってみましょう 1. 準備〜インストール 1.1 IOSバージョンを新しくしておく Cat9300TMT02#sh ver | i IOSXE Cisco IOS Software [Bengaluru], Catalyst L3 Switch Software (CAT9K_IOSXE), Version 17.5.1, RELEASE SOFTWARE (fc3) * 1 41 C9300-24P 17.05.01 CAT9K_IOSXE INSTALL * 1.2 ブートフラッシュをきれいにしておく Cat9300TMT02#show install summary [ Switch 1 ] Installed Package(s) Information: State (St): I - Inactive, U - Activated & Uncommitted, C - Activated & Committed, D - Deactivated & Uncommitted -------------------------------------------------------------------------------- Type St Filename/Version -------------------------------------------------------------------------------- IMG C 17.05.01.0.144 -------------------------------------------------------------------------------- Auto abort timer: inactive -------------------------------------------------------------------------------- Cat9300TMT02#install remove inactive 1.3 ファイルをCatalystのbootflashにコピー Cat9300TMT02#sh flash: | i thousand 179 178872320 Apr 06 2021 19:03:14.0000000000 +00:00 thousandeyes-enterprise-agent-3.0.cat9k.tar 1.4 TARファイルをインストール Cat9300TMT02#app-hosting install appid <name> package bootflash:thousandeyes-enterprise-agent-3.0.cat9k.tar うまくいけば DEPLOYED となる。 この例では を thousandeyes_enterprise_agent としてます。 Cat9300TMT01#show app-hosting list App id State --------------------------------------------------------- thousandeyes_enterprise_agent DEPLOYED デプロイされた状態 Actiavateはまだ Startはまだ 2. 内部〜外部ネットワークの設定 ネットワークの設定をしていきます。 フロントパネルポートのVLAN(スイッチポート)を引っ張ってきてトランクで内部アプリにつなぎ込む <==今回はこちら フロントパネルポートのルーテッドインターフェースをNATして内部に内部アプリにつなぎ込む ※参考 Application Hosting on Front-Panel Trunk and VLAN Ports 2.1 Vlan と AppGigabitEthernet インターフェースの接続 Cat9300TMT02#sh run int gi 1/0/24 ! interface GigabitEthernet1/0/24 switchport access vlan 10 ! interface Vlan10 ip address 10.71.154.50 255.255.255.248 ! interface AppGigabitEthernet1/0/1 switchport trunk allowed vlan 10 switchport mode trunk 2.2 AppGigabitEthernet と 内部アプリの接続, Dockerの設定 設定は見た目通り、比較的ストレートでわかりやすいです。 app-hosting appid TEApp app-vnic AppGigabitEthernet trunk vlan 10 guest-interface 0 guest-ipaddress 10.71.154.51 netmask 255.255.255.248 app-default-gateway 10.71.154.50 guest-interface 0 app-resource docker prepend-pkg-opts run-opts 1 "-e TEAGENT_ACCOUNT_TOKEN=<ThousandEyesPortalのToken>" <=== ThousandEyesのクラウドポータルから取得 run-opts 2 "--hostname Cisco-TEDocker" name-server0 208.67.222.222 ※ThousandEyesのトークンはこちらから取得しておきます 3. Dockerの起動と確認 3.1 Dockerのアクティベートと起動 Lifecycle for an Applicationを意識しながら、Applicationを立ち上げていきます。 こちらは、覚えておくと何かと便利なコマンドです(マニュアルからの抜粋)。 Device# app-hosting install appid iox_app package usbflash1:my_iox_app.tar.tar Device# app-hosting activate appid iox_app Device# app-hosting start appid iox_app Device# app-hosting stop appid iox_app Device# app-hosting deactivate appid iox_app Device# app-hosting uninstall appid iox_app Deployed => Activated => Running やっていきます。 Cat9300TMT02#app-hosting activate appid thousandeyes_enterprise_agent thousandeyes_enterprise_agent activated successfully Current state is: ACTIVATED Cat9300TMT02#sho app-hosting list App id State --------------------------------------------------------- thousandeyes_enterprise_agent ACTIVATED Cat9300TMT01# Cat9300TMT01#app-hosting start appid thousandeyes_enterprise_agent thousandeyes_enterprise_agent started successfully Current state is: RUNNING いい感じに立ち上がっていることを確認。 Cat9300TMT02#show app-hosting detail appid TEApp App id                 : TEApp Owner                  : iox State                  : RUNNING Application   Type                 : docker   Name                 : thousandeyes/enterprise-agent   Version              : 3.0   Description          :    Path                 : flash:thousandeyes-enterprise-agent-3.0.cat9k.tar   URL Path             :  Activated profile name : custom Resource reservation   Memory               : 500 MB   Disk                 : 1 MB   CPU                  : 1850 units   CPU-percent          : 25 %   VCPU                 : 1 Attached devices   Type              Name               Alias   ---------------------------------------------   serial/shell     iox_console_shell   serial0   serial/aux       iox_console_aux     serial1   serial/syslog    iox_syslog          serial2   serial/trace     iox_trace           serial3 Network interfaces    --------------------------------------- eth0:    MAC address         : 52:54:dd:2d:a8:e2    IPv4 address        : 10.71.154.51    IPv6 address        : ::    Network name        : mgmt-bridge-v10 Docker ------ Run-time information   Command              :    Entry-point          : /sbin/my_init    Run options in use   : -e TEAGENT_ACCOUNT_TOKEN=TOKEN_NOT_SET --hostname=$(SYSTEM_NAME) --cap-add=NET_ADMIN --mount type=tmpfs,destination=/var/log/agent,tmpfs-size=140m --mount type=tmpfs,destination=/var/lib/te-agent/data,tmpfs-size=200m -v $(APP_DATA)/data:/var/lib/te-agent -e TEAGENT_PROXY_TYPE=DIRECT -e TEAGENT_PROXY_LOCATION= -e TEAGENT_PROXY_USER= -e TEAGENT_PROXY_AUTH_TYPE= -e TEAGENT_PROXY_PASS= -e TEAGENT_PROXY_BYPASS_LIST= -e TEAGENT_KDC_USER= -e TEAGENT_KDC_PASS= -e TEAGENT_KDC_REALM= -e TEAGENT_KDC_HOST= -e TEAGENT_KDC_PORT=88 -e TEAGENT_KERBEROS_WHITELIST= -e TEAGENT_KERBEROS_RDNS=1 -e PROXY_APT= -e APT_PROXY_USER= -e APT_PROXY_PASS= -e APT_PROXY_LOCATION= -e TEAGENT_AUTO_UPDATES=1 -e TEAGENT_ACCOUNT_TOKEN=<YOUR_TOKEN> --hostname Cisco-TEDocker   Package run options  : -e TEAGENT_ACCOUNT_TOKEN=TOKEN_NOT_SET --hostname=$(SYSTEM_NAME) --cap-add=NET_ADMIN --mount type=tmpfs,destination=/var/log/agent,tmpfs-size=140m --mount type=tmpfs,destination=/var/lib/te-agent/data,tmpfs-size=200m -v $(APP_DATA)/data:/var/lib/te-agent -e TEAGENT_PROXY_TYPE=DIRECT -e TEAGENT_PROXY_LOCATION= -e TEAGENT_PROXY_USER= -e TEAGENT_PROXY_AUTH_TYPE= -e TEAGENT_PROXY_PASS= -e TEAGENT_PROXY_BYPASS_LIST= -e TEAGENT_KDC_USER= -e TEAGENT_KDC_PASS= -e TEAGENT_KDC_REALM= -e TEAGENT_KDC_HOST= -e TEAGENT_KDC_PORT=88 -e TEAGENT_KERBEROS_WHITELIST= -e TEAGENT_KERBEROS_RDNS=1 -e PROXY_APT= -e APT_PROXY_USER= -e APT_PROXY_PASS= -e APT_PROXY_LOCATION= -e TEAGENT_AUTO_UPDATES=1 Application health information   Status               : 0   Last probe error     :    Last probe output    :  3.2 ThousandEyesポータルから確認 ThousandEyesのポータルサイトから、Catalyst9300上のエージェントが確認できます。これで基本的には各種テストや確認はすべてブラウザから行えるようになりました。 そのほか 今回は、ラボにあったCatalyst9300に設定してみましたが、どうやらマニュアルによるとこちらのエージェントが標準組み込みになりそうな気配です。LANスイッチがクラウドからの設定で自在にアクティブモニターをでき、各種ネットワークサービスの品質を可視化できる世界はもうすぐそこにあることを感じました。楽しみですね! Programmability Configuration Guide, Cisco IOS XE Amsterdam 17.3.x ThousandEyes Enterprise Agent には、BrownField と GreenField の 2 種類があります。既存のデバイスについては、BrownfieldバージョンをThousandEyesウェブサイトからダウンロードできます。ただし、新しいデバイスは、ブートフラッシュにGreenFieldアプリケーションがロードされた状態で出荷されます。 気が向いたら、ルーテッドポートとNATの組み合わせでもやってみたいと思います。今時のCatalystはNATが出来るんですねぇ〜? Supported Network Types Cisco IOSネットワークアドレス変換(NAT)について Cisco IOS XE Gibraltar 16.12.1搭載のCatalyst 9300シリーズ スイッチおよびC9300L Catalyst 9400シリーズ スイッチ(Cisco IOS XE Amsterdam 17.1.1搭載 これらのプラットフォームでは、フロントパネルのデータポートとAppGigabitEthernetポートに適用されるハードウェアデータポート機能によってNATがサポートされています。 最後まで読んで頂き、ありがとうございました!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Catalyst 9300 Docker 上で ThousandEyes Agent の起動と設定

これはなに? こちらの絵が、やりたいことです! Catalyst9300 に ThousandEyes のDockerエージェントをインストールして設定して動作確認します。Catalyst9300上の Docker アプリのホストの仕方の参考にもなります。 ThousandEyes いろんなところに配置したソフトウェアエージェントを使って、任意のポイント間を任意のテストトラフィックを発生させて、そのネットワークのサービスレベルを可視化、それがクラウドポータルからめちゃくちゃ簡単にできるという、サウザンドアイズという会社およびサービスがありました。いろんなところにお目々? があるという感じですね。実際にはお目々は見ているというより、何かを発生させる(TracerouteしたりWebにHTTPしたり拠点間でRTP出したり)のでちょっとミスリーディングかも。実際に流れているものを監視する手法をパッシブモニタリング(受動型監視)、能動的にテストを行ってその結果から品質を可視化する手法をアクティブモニタリング(能動型監視)とよびますが、サウザンドアイズの中心となる特徴はアクティブモニタリングの方になります。 ※参考 Cisco IOS を活用した “見える化”の階段 2013年 アクティブモニタリングとパッシブモニタリングの組み合わせについてごちゃごちゃ書いてます :-) で、2020年に某シスコシステムズに買収・統合されてその統合具合が注目されていました。 サウザンドアイズのエージェントには、全世界に配置してくれているクラウドエージェント、自分で好きなところ(ラズパイとか仮想マシンとか)に配置するエンタープライズエージェント、パソコンにインストールするクライアントエージェントといったタイプがありますが、どこにお目々を置きますか?という選択が必要で、基本的にはお目々の数やテストの数に応じてお金がかかるという感じです。 ThousandEyes on Cisco Ciscoルーターやスイッチでは、以前からアプリケーションホスティングという仕組みを使って、装置の上に任意のアプリケーションを立ち上げることができており、サウザンドアイズのエージェントをホストするソリューションがありました。データセンターにサウザンドアイズ用の仮想マシンを専用に作ったり、もちろんラズパイを配置したりといった、物理的な部分が節約できることと、ネットワーク装置そのものからテストトラフィックが発生しているように作れるため、特に拠点間比較などネットワークの切り分けと組み合わせてトラブルシュートがわかりやすくなるといった利点がありました。 クラウドエージェント エンタープライズエージェント ... OVA/OVF, Hyper-V, Nuc/ラズパイ, Cat9K/ISR/ASR, JUNOS, Linux Package, Docker, AWS Marketplaceなどなど <== ここの話 エンドポイントエージェント Docker タイプの ThousandEyes エージェントを Catalyst9300 上に立ち上げる 私も過去に、ThousandEyesのエージェントをCatalystに以前ホストして遊んでいたことがあるんですが、前はKVMベースのものしかなくて、しかも限られたCatalystのApp-hosting用のリソースを使ってしまって、動くには動いてたんですが取り回しに苦労したんですよね。 それが今ではCatalyst9300のApp-hositngのDockerの上で動くThousandEyesのDockerタイプのエージェントがリリースされていて、さらに公式のリリースノートにもサポートが明記されていたので、重い腰を上げてほとんど自分用のメモとして残しておくことにしました。 Catalyst 9300 のDockerコンテナでThousandEyesエージェントが動く IOS XE App-hostingの機能を使って設定 オプションのSSDが不要でBootflashだけでよくなった(以前のKVMエージェントだとSSDが必要だった) ※ちなみにオプションのSSDってこれ... 普通買いませんよね... 私持ってますが 敷居が低い! Catalyst9300 持ってたら試せる!(あとライセンス?) ThousandEyesエージェントはここからダウンロード Release Notes for Cisco Catalyst 9300 Series Switches, Cisco IOS XE Amsterdam 17.3.x ThousandEyes Enterprise Agentの新バージョンを紹介します。これは、アプリケーション ホスティング機能を使用してシスコ デバイス上で動作する Docker ベースの組み込みアプリケーションです。Enterprise Agent は、SSD とブートフラッシュの両方で使用できます。 Programmability Configuration Guide → Application Hosting を参照してください。 (ネットワークアドバンテージ) Programmability Configuration Guide, Cisco IOS XE Amsterdam 17.3.x 以前の Cisco IOS XE リリースでは、ThousandEyes はサードパーティの KVM (Kernel-based Virtual Machine) アプライアンスとして SSD 上でサポートされていました。 Cisco IOS XE Amsterdam 17.3.3では、新バージョンのThousandEyes Enterprise Agentが導入されています。これは、アプリケーション ホスティング機能を使用してシスコ デバイス上で動作する、Docker ベースの組み込みアプリケーションです。Enterprise Agentは、SSDとブートフラッシュの両方で利用可能です。Enterprise Agentは、ブラウザテスト(ページロードとトランザクション)を除くすべてのテストをサポートしています。 ※関係ないけど DeepL めちゃくちゃ便利ですね! やってみましょう 1. 準備〜インストール 1.1 IOSバージョンを新しくしておく Cat9300TMT02#sh ver | i IOSXE Cisco IOS Software [Bengaluru], Catalyst L3 Switch Software (CAT9K_IOSXE), Version 17.5.1, RELEASE SOFTWARE (fc3) * 1 41 C9300-24P 17.05.01 CAT9K_IOSXE INSTALL * 1.2 ブートフラッシュをきれいにしておく Cat9300TMT02#show install summary [ Switch 1 ] Installed Package(s) Information: State (St): I - Inactive, U - Activated & Uncommitted, C - Activated & Committed, D - Deactivated & Uncommitted -------------------------------------------------------------------------------- Type St Filename/Version -------------------------------------------------------------------------------- IMG C 17.05.01.0.144 -------------------------------------------------------------------------------- Auto abort timer: inactive -------------------------------------------------------------------------------- Cat9300TMT02#install remove inactive 1.3 ファイルをCatalystのbootflashにコピー Cat9300TMT02#sh flash: | i thousand 179 178872320 Apr 06 2021 19:03:14.0000000000 +00:00 thousandeyes-enterprise-agent-3.0.cat9k.tar 1.4 TARファイルをインストール Cat9300TMT02#app-hosting install appid <name> package bootflash:thousandeyes-enterprise-agent-3.0.cat9k.tar うまくいけば DEPLOYED となる。 この例では を thousandeyes_enterprise_agent としてます。 Cat9300TMT01#show app-hosting list App id State --------------------------------------------------------- thousandeyes_enterprise_agent DEPLOYED デプロイされた状態 Actiavateはまだ Startはまだ 2. 内部〜外部ネットワークの設定 ネットワークの設定をしていきます。 フロントパネルポートのVLAN(スイッチポート)を引っ張ってきてトランクで内部アプリにつなぎ込む <==今回はこちら フロントパネルポートのルーテッドインターフェースをNATして内部に内部アプリにつなぎ込む ※参考 Application Hosting on Front-Panel Trunk and VLAN Ports 2.1 Vlan と AppGigabitEthernet インターフェースの接続 Cat9300TMT02#sh run int gi 1/0/24 ! interface GigabitEthernet1/0/24 switchport access vlan 10 ! interface Vlan10 ip address 10.71.154.50 255.255.255.248 ! interface AppGigabitEthernet1/0/1 switchport trunk allowed vlan 10 switchport mode trunk 2.2 AppGigabitEthernet と 内部アプリの接続, Dockerの設定 設定は見た目通り、比較的ストレートでわかりやすいです。 app-hosting appid TEApp app-vnic AppGigabitEthernet trunk vlan 10 guest-interface 0 guest-ipaddress 10.71.154.51 netmask 255.255.255.248 app-default-gateway 10.71.154.50 guest-interface 0 app-resource docker prepend-pkg-opts run-opts 1 "-e TEAGENT_ACCOUNT_TOKEN=<ThousandEyesPortalのToken>" <=== ThousandEyesのクラウドポータルから取得 run-opts 2 "--hostname Cisco-TEDocker" name-server0 208.67.222.222 ※ThousandEyesのトークンはこちらから取得しておきます 3. Dockerの起動と確認 3.1 Dockerのアクティベートと起動 Lifecycle for an Applicationを意識しながら、Applicationを立ち上げていきます。 こちらは、覚えておくと何かと便利なコマンドです(マニュアルからの抜粋)。 Device# app-hosting install appid iox_app package usbflash1:my_iox_app.tar.tar Device# app-hosting activate appid iox_app Device# app-hosting start appid iox_app Device# app-hosting stop appid iox_app Device# app-hosting deactivate appid iox_app Device# app-hosting uninstall appid iox_app Deployed => Activated => Running やっていきます。 Cat9300TMT02#app-hosting activate appid thousandeyes_enterprise_agent thousandeyes_enterprise_agent activated successfully Current state is: ACTIVATED Cat9300TMT02#sho app-hosting list App id State --------------------------------------------------------- thousandeyes_enterprise_agent ACTIVATED Cat9300TMT01# Cat9300TMT01#app-hosting start appid thousandeyes_enterprise_agent thousandeyes_enterprise_agent started successfully Current state is: RUNNING いい感じに立ち上がっていることを確認。 Cat9300TMT02#show app-hosting detail appid TEApp App id                 : TEApp Owner                  : iox State                  : RUNNING Application   Type                 : docker   Name                 : thousandeyes/enterprise-agent   Version              : 3.0   Description          :    Path                 : flash:thousandeyes-enterprise-agent-3.0.cat9k.tar   URL Path             :  Activated profile name : custom Resource reservation   Memory               : 500 MB   Disk                 : 1 MB   CPU                  : 1850 units   CPU-percent          : 25 %   VCPU                 : 1 Attached devices   Type              Name               Alias   ---------------------------------------------   serial/shell     iox_console_shell   serial0   serial/aux       iox_console_aux     serial1   serial/syslog    iox_syslog          serial2   serial/trace     iox_trace           serial3 Network interfaces    --------------------------------------- eth0:    MAC address         : 52:54:dd:2d:a8:e2    IPv4 address        : 10.71.154.51    IPv6 address        : ::    Network name        : mgmt-bridge-v10 Docker ------ Run-time information   Command              :    Entry-point          : /sbin/my_init    Run options in use   : -e TEAGENT_ACCOUNT_TOKEN=TOKEN_NOT_SET --hostname=$(SYSTEM_NAME) --cap-add=NET_ADMIN --mount type=tmpfs,destination=/var/log/agent,tmpfs-size=140m --mount type=tmpfs,destination=/var/lib/te-agent/data,tmpfs-size=200m -v $(APP_DATA)/data:/var/lib/te-agent -e TEAGENT_PROXY_TYPE=DIRECT -e TEAGENT_PROXY_LOCATION= -e TEAGENT_PROXY_USER= -e TEAGENT_PROXY_AUTH_TYPE= -e TEAGENT_PROXY_PASS= -e TEAGENT_PROXY_BYPASS_LIST= -e TEAGENT_KDC_USER= -e TEAGENT_KDC_PASS= -e TEAGENT_KDC_REALM= -e TEAGENT_KDC_HOST= -e TEAGENT_KDC_PORT=88 -e TEAGENT_KERBEROS_WHITELIST= -e TEAGENT_KERBEROS_RDNS=1 -e PROXY_APT= -e APT_PROXY_USER= -e APT_PROXY_PASS= -e APT_PROXY_LOCATION= -e TEAGENT_AUTO_UPDATES=1 -e TEAGENT_ACCOUNT_TOKEN=<YOUR_TOKEN> --hostname Cisco-TEDocker   Package run options  : -e TEAGENT_ACCOUNT_TOKEN=TOKEN_NOT_SET --hostname=$(SYSTEM_NAME) --cap-add=NET_ADMIN --mount type=tmpfs,destination=/var/log/agent,tmpfs-size=140m --mount type=tmpfs,destination=/var/lib/te-agent/data,tmpfs-size=200m -v $(APP_DATA)/data:/var/lib/te-agent -e TEAGENT_PROXY_TYPE=DIRECT -e TEAGENT_PROXY_LOCATION= -e TEAGENT_PROXY_USER= -e TEAGENT_PROXY_AUTH_TYPE= -e TEAGENT_PROXY_PASS= -e TEAGENT_PROXY_BYPASS_LIST= -e TEAGENT_KDC_USER= -e TEAGENT_KDC_PASS= -e TEAGENT_KDC_REALM= -e TEAGENT_KDC_HOST= -e TEAGENT_KDC_PORT=88 -e TEAGENT_KERBEROS_WHITELIST= -e TEAGENT_KERBEROS_RDNS=1 -e PROXY_APT= -e APT_PROXY_USER= -e APT_PROXY_PASS= -e APT_PROXY_LOCATION= -e TEAGENT_AUTO_UPDATES=1 Application health information   Status               : 0   Last probe error     :    Last probe output    :  3.2 ThousandEyesポータルから確認 ThousandEyesのポータルサイトから、Catalyst9300上のエージェントが確認できます。これで基本的には各種テストや確認はすべてブラウザから行えるようになりました。 そのほか 今回は、ラボにあったCatalyst9300に設定してみましたが、どうやらマニュアルによるとこちらのエージェントが標準組み込みになりそうな気配です。LANスイッチがクラウドからの設定で自在にアクティブモニターをでき、各種ネットワークサービスの品質を可視化できる世界はもうすぐそこにあることを感じました。楽しみですね! Programmability Configuration Guide, Cisco IOS XE Amsterdam 17.3.x ThousandEyes Enterprise Agent には、BrownField と GreenField の 2 種類があります。既存のデバイスについては、BrownfieldバージョンをThousandEyesウェブサイトからダウンロードできます。ただし、新しいデバイスは、ブートフラッシュにGreenFieldアプリケーションがロードされた状態で出荷されます。 気が向いたら、ルーテッドポートとNATの組み合わせでもやってみたいと思います。今時のCatalystはNATが出来るんですねぇ〜? Supported Network Types Cisco IOSネットワークアドレス変換(NAT)について Cisco IOS XE Gibraltar 16.12.1搭載のCatalyst 9300シリーズ スイッチおよびC9300L Catalyst 9400シリーズ スイッチ(Cisco IOS XE Amsterdam 17.1.1搭載 これらのプラットフォームでは、フロントパネルのデータポートとAppGigabitEthernetポートに適用されるハードウェアデータポート機能によってNATがサポートされています。 最後まで読んで頂き、ありがとうございました! PS: ライセンスゥゥゥ!? はこの記事では特に深追いしませんが、なんかあるらしいので気になった方は、そちらの方面に聞いてみてください。 Ordering Guide for Customers with Existing Catalyst 9000 Deployments to Request ThousandEyes Credits https://www.cisco.com/c/en/us/products/collateral/switches/catalyst-9000/nb-06-cat-9k-og-cte-en.html
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む