chefのsearch
コマンドでsearch
# dbを名前に含むnodeを検索する bundle exec knife search node "name:*db*"
recipe内でsearch
# nameがserver01のnode情報を取得 info = search(:node, 'name:server01')
node以外にもclient、DATA_BAG_NAME、environment、roleから検索可能。 DATA_BAGにusersがある場合、以下のようにしてdatabagの情報を取得できる。
search(:users, 'id:app_user')
参考
Linuxグループ
/etc/group
cat /etc/group root:x:0:root ... my_group:x:501:user01,user02
- my_group: グループ名
- x: シャドウパスワードを使用
- 501: グループID(GID)
- user01,user02: セカンダリグループとして所属しているユーザーアカウントのリスト。カンマ区切り。
プライマリグループ/サブグループ
- ユーザーは、複数のグループに所属する事が可。
- ユーザーの基本のグループの事をプライマリグループという。(
/etc/passwd
に指定してあるGIDがそれ) - それ以外で所属しているグループの事をセカンダリグループという。
- ユーザがファイル等を作成した場合、ファイルのグループは、プライマリグループに設定される。
グループの操作
# my_groupグループの作成 groupadd my_group # GID指定で作成 groupadd -g 520 my_group # my_groupのGIDを530に変更 groupmod -g 530 my_group # my_groupの名前をself_groupに変更 groupmod -n self_group my_group # self_groupの削除 groupdel self_group
セカンダリグループへのユーザ追加/削除
# 追加 gpasswd -a user01 my_group # 削除 gpasswd -d user01 my_group
参考
sudoers
sudoersはユーザにどんなsudo権限があるかを決定する。
設定ファイル
# /etc/sudoers # /etc/sudoers.d/* # 誰が どのホストで=(誰として) 何をできる # rootユーザは、誰にでもなれて、なんでもできる root ALL=(ALL:ALL) ALL # wheelグループは、誰にでもなれて、パスワードなしでなんでもできる %wheel ALL=(ALL:ALL) NOPASSWD: ALL # app_userは、rootになれて、sbin/ifconfig を実行できる app_user ALL=(root) NOPASSWD:/sbin/ifconfig
参考
仮想IPの設定メモ
# eth0に仮想IPアドレス(192.168.1.200)を割り当てる # ifconfigによる変更はサーバ再起動で無効化。 sudo ifconfig eth0:0 192.168.1.200 netmask 255.255.255.0 up # 仮想IPアドレスの割当を無効化 sudo ifconfig eth0:0 down # arpリクエストを投げて、同セグメント内のサーバのarpキャッシュを強制更新する # -c 3 は3回リクエスト sudo arping -U 192.168.1.200 -I eth0 -c 3 # arpキャッシュの確認 arp # IPアドレスを指定してarpキャッシュを削除 arp -d 192.168.1.200
トラブルシュート時に使うコマンドメモ
カーネルのパラメータ確認
すべてのパラメータ(-a)から、パターンマッチしたものを表示 sysctl -a --pattern ***
インターフェース設定ファイル(CentOSのみ)
cat etc/sysconfig/network-scripts/ifcfg-eth0 # 修正後にrestartで反映 systemctl restart network
DNSサーバの設定
cat /etc/resolv.conf nameserver 192.168.1.1
ネットワークの通信経路を調べる
traceroute example.com traceroute 192.168.0.1
ホストのネットワーク統計や状態を確認する
# -n 出力をIPアドレスなど数値のみに抑制する(DNS逆引きを行わないなど)。ほかのオプション内容へ影響する # ルーティングテーブルの表示 netstat -rn # 現在のすべての接続を表示する netstat -an
デフォルトゲートウェイの設定
# 宛先(0.0.0.0/0=全部)アクセス時のGWを追加 route add -net 0.0.0.0/0 gw 192.168.1.1 eth0 # GWを削除 route del -net 0.0.0.0/0 gw 192.168.1.10 eth0
consulことはじめ
全然わかってなかったのでメモ。
概要
- 何やってくれるの
- サービスディスカバリやってくれる
- ヘルスチェック等
- リーダーについて
- consul-template
- consul-templateは、Consulと連携できるツールの一つで、クラスタのサービスの状態変更を検知して、動的に設定を書き換えたり、コマンドを発行するためのデーモン。
- たとえば、appサーバの状態を検知して、nginxのupstreamの向き先の更新&reloadを行ったりできる。
コマンド
# consul入っているサーバで実行 # ノードリストの取得 curl -s localhost:8500/v1/catalog/nodes # nodeを確認できる consul members (nodeを確認できる) # メンテモードの切り替え consul maint # 確認 consul maint -disable # 無効化 consul maint -enable # 有効化 # リーダーの確認 consul info | grep leader
リンク
ncコマンド
# TCP 11111ポートでLISTENする nc -kl 11111 # TCP 11111ポートにつなぐ # 起動後に文字をうつと、LISTENしている側に表示される nc localhost 11111