LoginSignup
0
0

More than 5 years have passed since last update.

psshでリモートホストを操作するときに覚えておきたい3つのTips

Last updated at Posted at 2017-03-13

tl;dr

プロビジョニング未満の粒度の作業に対して。

  1. ポイント①: ローカルからリモートホスト上でsudoを扱う場合は、pssh実行時に、 -x '-tt' を付与してコマンド実行する
  2. ポイント②: 1行のみ追記したい場合は sh -c オプションでコマンドを渡せばOK
  3. ポイント③: 複数行ヒアドキュメントでroot権限下のファイルを追記する場合は、'EOT'のようにシングルクオテーションまたはダブルコーテーションで囲む

内容

環境

CentOS Linux release 7.3.1611 (Core)

状況(例)

filebeatサービスをCentOS7にインストールする

ローカルの実行コマンド

ポイント①

$ pssh -P -x '-tt' -h web-hosts -I < web.sh

リモートホスト一覧

$vi web-hosts


172.21.102.xx
172.21.102.xx
172.21.102.xx
...

リモートホスト上の実行コマンド

$vi web.sh


#!/bin/bash

cd /tmp
curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.2.3-x86_64.rpm
sudo rpm -ivh filebeat-1.2.3-x86_64.rpm

echo "filebeat was installed"

sudo mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat_yml_org

# ポイント② 
sudo sh -c 'echo 172.21.103.237 logstash-01 >> /etc/hosts'

# ポイント③   
sudo cat << 'EOT' | sudo tee /etc/filebeat/filebeat.yml
filebeat:
  prospectors:
    -
      paths:
        - /apphome/MetaData/log/*
        - /var/log/httpd/access_log
        - /var/log/httpd/error_log
      input_type: log
      multiline:
        pattern: "^[[:digit:]]{4}"
        negate: true
        match: after
  registry_file: /var/lib/filebeat/registry
output:
  logstash:
    hosts: ["logstash-01:5044"]
shipper:
logging:
EOT

sudo systemctl restart filebeat

echo "all process were done."
exit 0

参照

sh -c へ引数を渡す
http://uyota.asablo.jp/blog/2012/08/28/6557461

スーパーユーザー権限が必要なファイルにcatコマンドでテキストを書き込む。
http://blog.katty.in/3922

bashのヒアドキュメントを使ったスクリプトの作成
http://te2u.hatenablog.jp/entry/2015/05/12/001915

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0